feat: add ticket client demo data
This commit is contained in:
1 parent
516a9431f0
commit
c4e03548d5
2 files changed
+198
No files matched your search
@@ -14,6 +14,38 @@ import {
|
||||
validateBooking,
|
||||
} from './model.mjs'
|
||||
|
||||
test('provides coherent default visitor ticket data', async () => {
|
||||
const {
|
||||
AVAILABLE_DATES,
|
||||
GROUPS,
|
||||
INITIAL_ORDERS,
|
||||
INITIAL_TRAVELERS,
|
||||
INSURANCE,
|
||||
PLACEHOLDER_IMAGE,
|
||||
PRODUCTS,
|
||||
REFUND_REASONS,
|
||||
} = await import('./data.js')
|
||||
|
||||
assert.equal(PLACEHOLDER_IMAGE, 'https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/oneFeel/2082673896938569729.jpg')
|
||||
assert.deepEqual(GROUPS.map(({ id }) => id), ['ticket', 'vip', 'bus', 'package', 'tour', 'play'])
|
||||
assert.deepEqual(GROUPS.map(({ sortOrder, enabled }) => [sortOrder, enabled]), [[1, true], [2, true], [3, true], [4, true], [5, true], [6, true]])
|
||||
assert.deepEqual(PRODUCTS.map(({ id }) => id), ['adult', 'elderly', 'minor', 'free', 'vip-fast', 'direct-bus', 'classic', 'day-tour', 'boat', 'guide'])
|
||||
const productsById = new Map(PRODUCTS.map((product) => [product.id, product]))
|
||||
assert.ok(GROUPS.every((group) => group.productIds.every((productId) => productsById.has(productId))))
|
||||
assert.deepEqual(GROUPS.flatMap((group) => group.productIds).sort(), PRODUCTS.map(({ id }) => id).sort())
|
||||
assert.ok(PRODUCTS.every((product) => product.images[0] === PLACEHOLDER_IMAGE && product.reservation && product.entitlements.length && Number.isFinite(product.salePrice) && Number.isFinite(product.stock) && Number.isFinite(product.sold)))
|
||||
assert.deepEqual(PRODUCTS.slice(0, 3).map(({ id, salePrice, sold }) => [id, salePrice, sold]), [['adult', 160, 2386], ['elderly', 100, 816], ['minor', 100, 629]])
|
||||
assert.ok(INITIAL_TRAVELERS.length > 0)
|
||||
assert.ok(INITIAL_TRAVELERS.every((traveler) => traveler.id && traveler.name && traveler.idType && traveler.idNumber && traveler.phone))
|
||||
assert.equal(INITIAL_ORDERS.length, 2)
|
||||
assert.ok(INITIAL_ORDERS.some((order) => order.entitlements.some((entitlement) => entitlement.fulfillment === 'third_party') && order.gateCredential))
|
||||
assert.ok(INITIAL_ORDERS.some((order) => order.entitlements.some((entitlement) => entitlement.fulfillment === 'third_party') && order.entitlements.some((entitlement) => entitlement.fulfillment === 'self') && order.gateCredential && order.selfCredential))
|
||||
assert.equal(AVAILABLE_DATES.length, 5)
|
||||
assert.ok(AVAILABLE_DATES.some((date) => date.stock === 0))
|
||||
assert.equal(REFUND_REASONS.length, 4)
|
||||
assert.equal(INSURANCE.price, 5)
|
||||
})
|
||||
|
||||
const adultProduct = {
|
||||
id: 'adult',
|
||||
name: '成人票',
|
||||
|
||||
Reference in new issue
Block a user