49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
|
|
const source = fs.readFileSync('background/steps/fill-profile.js', 'utf8');
|
|
const globalScope = {};
|
|
const api = new Function('self', `${source}; return self.MultiPageBackgroundStep5;`)(globalScope);
|
|
|
|
test('step 5 forwards generated profile data and relies on completion signal flow', async () => {
|
|
const events = {
|
|
logs: [],
|
|
messages: [],
|
|
};
|
|
|
|
const executor = api.createStep5Executor({
|
|
addLog: async (message, level) => {
|
|
events.logs.push({ message, level: level || 'info' });
|
|
},
|
|
generateRandomBirthday: () => ({ year: 2003, month: 6, day: 19 }),
|
|
generateRandomName: () => ({ firstName: 'Test', lastName: 'User' }),
|
|
sendToContentScript: async (source, message) => {
|
|
events.messages.push({ source, message });
|
|
return { accepted: true };
|
|
},
|
|
});
|
|
|
|
await executor.executeStep5();
|
|
|
|
assert.deepStrictEqual(events.messages, [
|
|
{
|
|
source: 'signup-page',
|
|
message: {
|
|
type: 'EXECUTE_NODE',
|
|
nodeId: 'fill-profile',
|
|
step: 5,
|
|
source: 'background',
|
|
payload: {
|
|
firstName: 'Test',
|
|
lastName: 'User',
|
|
year: 2003,
|
|
month: 6,
|
|
day: 19,
|
|
},
|
|
},
|
|
},
|
|
]);
|
|
assert.ok(events.logs.some(({ message }) => /已生成姓名 Test User/.test(message)));
|
|
});
|