feat: refine login flows and integrate tiangong worship audio
This commit is contained in:
1 parent
bc7bbc52c8
commit
38fc4187ea
49 files changed
+1786
-224
No files matched your search
+13
-13
@@ -7,6 +7,10 @@ const ts = require('typescript')
|
||||
const root = path.resolve(__dirname, '..')
|
||||
const filename = path.join(root, 'src/utils/tiangongMock.ts')
|
||||
const loaded = new Module(filename, module)
|
||||
const ritualFilename = path.join(root, 'src/utils/incenseRitual.ts')
|
||||
const ritual = new Module(ritualFilename, module)
|
||||
ritual._compile(ts.transpileModule(fs.readFileSync(ritualFilename, 'utf8'), { compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2019 } }).outputText, ritualFilename)
|
||||
loaded.require = id => id === './incenseRitual' ? ritual.exports : Module.prototype.require.call(loaded, id)
|
||||
loaded._compile(ts.transpileModule(fs.readFileSync(filename, 'utf8'), { compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2019 } }).outputText, filename)
|
||||
const { createTiangongMock, DEITY_IDS, isDeityId, hasBoundDeity } = loaded.exports
|
||||
|
||||
@@ -15,7 +19,7 @@ test('天宫仅财神初始已恭请,五位神仙独立且状态快照隔离',
|
||||
const first = mock.snapshot()
|
||||
assert.equal(DEITY_IDS.length, 5)
|
||||
assert.deepEqual(DEITY_IDS.filter(id => first.deities[id].unlocked), ['wealth'])
|
||||
assert.equal(first.balance, 100)
|
||||
assert.equal('balance' in first, false)
|
||||
first.deities.wealth.incenseCount = 999
|
||||
assert.equal(mock.snapshot().deities.wealth.incenseCount, 59)
|
||||
assert.equal(isDeityId('not-a-god'), false)
|
||||
@@ -25,8 +29,7 @@ test('上香点亮供桌次数+1,不猜测爱心扣减与功德奖励', () =>
|
||||
const state = mock.incense('wealth')
|
||||
assert.equal(state.deities.wealth.incenseCount, 60)
|
||||
assert.equal(state.deities.wealth.lit, true)
|
||||
assert.equal(state.deities.wealth.merit, 99)
|
||||
assert.equal(state.balance, 100)
|
||||
assert.equal('merit' in state.deities.wealth, false)
|
||||
assert.throws(() => mock.incense('fortune'), /未恭请/)
|
||||
})
|
||||
test('模拟恭请和送神只改变指定神仙,返回列表状态可同步', () => {
|
||||
@@ -38,16 +41,14 @@ test('模拟恭请和送神只改变指定神仙,返回列表状态可同步',
|
||||
assert.equal(mock.snapshot().deities.fortune.unlocked, false)
|
||||
assert.equal(mock.snapshot().deities.fortune.lit, false)
|
||||
assert.equal(mock.snapshot().deities.wealth.unlocked, true)
|
||||
assert.equal(mock.snapshot().balance, 100)
|
||||
})
|
||||
test('档位、非法金额与余额不足可以验证,但不执行任何真实扣款', () => {
|
||||
test('本期无功德、余额、捐款接口或入口', () => {
|
||||
const mock = createTiangongMock()
|
||||
assert.equal(mock.offering('wealth', 99).insufficient, false)
|
||||
assert.equal(mock.offering('wealth', 168).insufficient, true)
|
||||
assert.equal(mock.snapshot().balance, 100)
|
||||
for (const value of [0, -1, 1.5, NaN, Infinity]) assert.throws(() => mock.offering('wealth', value), /正整数/)
|
||||
mock.setDemoBalance(0)
|
||||
assert.equal(mock.offering('wealth', 9).insufficient, true)
|
||||
assert.equal(mock.offering, undefined)
|
||||
assert.equal(mock.setDemoBalance, undefined)
|
||||
for (const page of ['fortune', 'tiangong-detail']) {
|
||||
assert.doesNotMatch(fs.readFileSync(path.join(root, `src/pages/${page}/index.tsx`), 'utf8'), /功德|爱心|充值|balance|merit/)
|
||||
}
|
||||
})
|
||||
test('祈愿/回向校验空值,不持久化姓名或祝愿;重置还原样例', () => {
|
||||
const mock = createTiangongMock()
|
||||
@@ -59,9 +60,8 @@ test('祈愿/回向校验空值,不持久化姓名或祝愿;重置还原样
|
||||
mock.invite('fortune')
|
||||
mock.reset()
|
||||
assert.equal(mock.snapshot().deities.fortune.unlocked, false)
|
||||
assert.equal(mock.snapshot().balance, 100)
|
||||
})
|
||||
test('未知神仙不回退为财神,页面只导入Mock;预留契约不被调用', () => {
|
||||
test('未知神仙不回退为财神,页面通过服务层调用,未接入契约不被调用', () => {
|
||||
const service = fs.readFileSync(path.join(root, 'src/services/tiangong.ts'), 'utf8')
|
||||
assert.ok(!service.includes("id || 'wealth'"))
|
||||
for (const page of ['fortune', 'tiangong-detail']) {
|
||||
|
||||
Reference in new issue
Block a user