198 lines
4.8 KiB
JavaScript
198 lines
4.8 KiB
JavaScript
import test from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
|
|
import {
|
|
applyOptionalStringField,
|
|
findMatchingObservedBinding,
|
|
mapAdminAgisoMessagingDefaults,
|
|
mapAdminAgisoShopConfigItem,
|
|
mapAdminFulfillmentBindingConfigItem,
|
|
mapAdminObservedProductItem,
|
|
matchesObservedProduct,
|
|
resolveFulfillmentBindingMatchShopId,
|
|
} from './admin-platform-config-domain.js'
|
|
|
|
test('mapAdminAgisoMessagingDefaults normalizes escaped newlines', () => {
|
|
assert.deepEqual(
|
|
mapAdminAgisoMessagingDefaults({
|
|
messageTemplate: ' hello\\nworld ',
|
|
autoDeliveryMessageTemplate: ' done\\nnow ',
|
|
}),
|
|
{
|
|
messageTemplate: 'hello\nworld',
|
|
autoDeliveryMessageTemplate: 'done\nnow',
|
|
},
|
|
)
|
|
})
|
|
|
|
test('mapAdminAgisoShopConfigItem masks secrets and reports configured flags', () => {
|
|
assert.deepEqual(
|
|
mapAdminAgisoShopConfigItem('1001', {
|
|
shopName: ' 店铺A ',
|
|
accessToken: 'abcdef1234567890',
|
|
enabled: true,
|
|
messageTemplate: ' hi\\nall ',
|
|
autoDeliveryMessageTemplate: ' ok ',
|
|
appSecret: 'secret-1',
|
|
apiVersion: ' v2 ',
|
|
sendMessageEndpoint: ' /send ',
|
|
}),
|
|
{
|
|
shopId: '1001',
|
|
shopName: '店铺A',
|
|
accessToken: 'abcdef1234567890',
|
|
accessTokenMasked: 'abcdef****567890',
|
|
enabled: true,
|
|
messageTemplate: 'hi\nall',
|
|
autoDeliveryMessageTemplate: 'ok',
|
|
appSecretConfigured: true,
|
|
apiVersion: 'v2',
|
|
sendMessageEndpoint: '/send',
|
|
},
|
|
)
|
|
})
|
|
|
|
test('applyOptionalStringField updates and clears normalized template fields', () => {
|
|
const target = { messageTemplate: 'old' }
|
|
applyOptionalStringField(target, 'messageTemplate', { messageTemplate: ' next\\nline ' })
|
|
assert.deepEqual(target, { messageTemplate: 'next\nline' })
|
|
|
|
applyOptionalStringField(target, 'messageTemplate', { messageTemplate: ' ' })
|
|
assert.deepEqual(target, {})
|
|
})
|
|
|
|
test('mapAdminFulfillmentBindingConfigItem normalizes binding shape', () => {
|
|
assert.deepEqual(
|
|
mapAdminFulfillmentBindingConfigItem({
|
|
provider: ' agiso ',
|
|
platform: ' xianyu ',
|
|
shopId: ' shop-1 ',
|
|
skuCode: ' sku-1 ',
|
|
priority: '80',
|
|
match: {
|
|
externalSkuCode: ' ext-1 ',
|
|
},
|
|
}),
|
|
{
|
|
provider: 'agiso',
|
|
platform: 'xianyu',
|
|
shopId: 'shop-1',
|
|
shopName: '',
|
|
khhaoShopId: '',
|
|
skuCode: 'sku-1',
|
|
skuName: '',
|
|
profileKey: '',
|
|
enabled: true,
|
|
priority: 80,
|
|
config: {},
|
|
match: {
|
|
externalSkuCode: 'ext-1',
|
|
externalItemId: '',
|
|
externalSkuName: '',
|
|
config: {},
|
|
},
|
|
},
|
|
)
|
|
})
|
|
|
|
test('resolveFulfillmentBindingMatchShopId prefers khhaoShopId for khhao kuaishou bindings', () => {
|
|
assert.equal(
|
|
resolveFulfillmentBindingMatchShopId({
|
|
provider: 'khhao',
|
|
platform: 'kuaishou',
|
|
shopId: 'shop-a',
|
|
khhaoShopId: 'khhao-1',
|
|
}),
|
|
'khhao-1',
|
|
)
|
|
|
|
assert.equal(
|
|
resolveFulfillmentBindingMatchShopId({
|
|
provider: 'agiso',
|
|
platform: 'xianyu',
|
|
shopId: 'shop-a',
|
|
khhaoShopId: 'khhao-1',
|
|
}),
|
|
'shop-a',
|
|
)
|
|
})
|
|
|
|
test('matchesObservedProduct honors provider platform shop and external fields', () => {
|
|
const binding = {
|
|
provider: 'agiso',
|
|
platform: 'xianyu',
|
|
shopId: 'shop-1',
|
|
match: {
|
|
externalSkuCode: 'sku-ext-1',
|
|
externalItemId: '',
|
|
externalSkuName: '',
|
|
},
|
|
}
|
|
|
|
assert.equal(
|
|
matchesObservedProduct(binding, {
|
|
provider: 'agiso',
|
|
platform: 'xianyu',
|
|
shopId: 'shop-1',
|
|
externalSkuCode: 'sku-ext-1',
|
|
}),
|
|
true,
|
|
)
|
|
|
|
assert.equal(
|
|
matchesObservedProduct(binding, {
|
|
provider: 'agiso',
|
|
platform: 'xianyu',
|
|
shopId: 'shop-2',
|
|
externalSkuCode: 'sku-ext-1',
|
|
}),
|
|
false,
|
|
)
|
|
})
|
|
|
|
test('mapAdminObservedProductItem attaches matched binding summary', () => {
|
|
const bindings = [
|
|
{
|
|
provider: 'agiso',
|
|
platform: 'xianyu',
|
|
shopId: 'shop-1',
|
|
skuCode: 'sku-1',
|
|
skuName: 'SKU 1',
|
|
profileKey: 'profile-1',
|
|
match: {
|
|
externalSkuCode: 'ext-1',
|
|
},
|
|
},
|
|
]
|
|
const observed = {
|
|
provider: 'agiso',
|
|
platform: 'xianyu',
|
|
shopId: 'shop-1',
|
|
shopName: '店铺1',
|
|
externalItemId: '',
|
|
externalSkuCode: 'ext-1',
|
|
externalSkuName: '礼包1',
|
|
latestSeenAt: '2026-05-04T10:00:00.000Z',
|
|
orderItemCount: 2,
|
|
}
|
|
|
|
assert.deepEqual(findMatchingObservedBinding(bindings, observed), bindings[0])
|
|
assert.deepEqual(mapAdminObservedProductItem(observed, bindings), {
|
|
provider: 'agiso',
|
|
platform: 'xianyu',
|
|
shopId: 'shop-1',
|
|
shopName: '店铺1',
|
|
externalItemId: '',
|
|
externalSkuCode: 'ext-1',
|
|
externalSkuName: '礼包1',
|
|
latestSeenAt: '2026-05-04T10:00:00.000Z',
|
|
orderItemCount: 2,
|
|
configured: true,
|
|
matchedBinding: {
|
|
skuCode: 'sku-1',
|
|
skuName: 'SKU 1',
|
|
profileKey: 'profile-1',
|
|
},
|
|
})
|
|
})
|