120 lines
3.4 KiB
JavaScript
120 lines
3.4 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import { readFileSync } from 'node:fs';
|
|
import { join } from 'node:path';
|
|
|
|
const root = new URL('..', import.meta.url).pathname.replace(/^\/([A-Za-z]:)/, '$1');
|
|
const read = (path) => readFileSync(join(root, path), 'utf8');
|
|
|
|
const appJson = JSON.parse(read('miniapp/app.json'));
|
|
for (const page of [
|
|
'pages/index/index',
|
|
'pages/store/detail',
|
|
'pages/room/detail',
|
|
'pages/orders/list',
|
|
'pages/orders/detail',
|
|
'pages/profile/index',
|
|
'pages/benefits/index',
|
|
'pages/recharge/index'
|
|
]) {
|
|
assert.ok(appJson.pages.includes(page), `${page} must be registered`);
|
|
}
|
|
|
|
const env = read('miniapp/config/env.js');
|
|
assert.match(env, /https:\/\/api\.txyundm\.cn/);
|
|
assert.doesNotMatch(env, /localhost|127\.0\.0\.1|http:\/\//);
|
|
|
|
const api = read('miniapp/utils/api.js');
|
|
assert.match(api, /\/auth\/wechat-login/);
|
|
assert.match(api, /authorization: `Bearer \$\{token\}`/);
|
|
assert.match(api, /wx\.requestPayment/);
|
|
|
|
const index = read('miniapp/pages/index/index.js');
|
|
assert.match(index, /\/stores\?\$\{query\}/);
|
|
assert.match(index, /openStore/);
|
|
|
|
const store = read('miniapp/pages/store/detail.js');
|
|
assert.match(store, /\/stores\/\$\{encodeURIComponent\(storeId\)\}/);
|
|
assert.match(store, /\/stores\/\$\{encodeURIComponent\(storeId\)\}\/rooms/);
|
|
assert.match(store, /\/stores\/\$\{encodeURIComponent\(this\.data\.storeId\)\}\/wifi/);
|
|
|
|
const room = read('miniapp/pages/room/detail.js');
|
|
for (const route of [
|
|
'/pricing/quote',
|
|
'/orders/reserve',
|
|
'/payments',
|
|
'/pay/wechat/prepay',
|
|
'/test-complete'
|
|
]) {
|
|
assert.match(room, new RegExp(route.replace('/', '\\/')));
|
|
}
|
|
assert.match(room, /requestWechatPayment/);
|
|
for (const pattern of [
|
|
'couponGrantId',
|
|
'packageHoldingId',
|
|
'packageCreditCents',
|
|
'/profile/benefits',
|
|
'selectCoupon',
|
|
'selectPackage',
|
|
'availableCoupons',
|
|
'availablePackages',
|
|
"provider: 'BALANCE'"
|
|
]) {
|
|
assert.match(room, new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')));
|
|
}
|
|
|
|
const orders = read('miniapp/pages/orders/list.js')
|
|
+ read('miniapp/pages/orders/detail.js');
|
|
for (const route of [
|
|
'/orders?page=',
|
|
'/orders/${encodeURIComponent',
|
|
'/history',
|
|
'/cancellation-quote',
|
|
'/cancel',
|
|
'/open-door',
|
|
'/renew',
|
|
'/change-room',
|
|
'/shares'
|
|
]) {
|
|
assert.match(orders, new RegExp(route.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')));
|
|
}
|
|
|
|
const profile = read('miniapp/pages/profile/index.js')
|
|
+ read('miniapp/pages/profile/index.wxml');
|
|
for (const pattern of [
|
|
'/profile',
|
|
'wallet.totalText',
|
|
'benefits.availableCoupons',
|
|
'benefits.activePackages',
|
|
'recentLedger'
|
|
]) {
|
|
assert.match(profile, new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')));
|
|
}
|
|
|
|
const benefits = read('miniapp/pages/benefits/index.js')
|
|
+ read('miniapp/pages/benefits/index.wxml');
|
|
for (const pattern of [
|
|
'/profile/benefits',
|
|
'coupons',
|
|
'packages',
|
|
'couponGrantId',
|
|
'packageHoldingId'
|
|
]) {
|
|
assert.match(benefits, new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')));
|
|
}
|
|
|
|
const recharge = read('miniapp/pages/recharge/index.js')
|
|
+ read('miniapp/pages/recharge/index.wxml');
|
|
for (const pattern of [
|
|
'/recharge/plans',
|
|
'/recharge/orders',
|
|
'/wechat-prepay',
|
|
'requestWechatPayment',
|
|
'clientRequestId',
|
|
'selectedPlanId',
|
|
'rechargeOrder'
|
|
]) {
|
|
assert.match(recharge, new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')));
|
|
}
|
|
|
|
console.log('PASS: M08-A miniapp customer pages use fixed domain and real app-api calls.');
|