background-step5-submit-short-circuit.test.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const test = require('node:test');
  2. const assert = require('node:assert/strict');
  3. const fs = require('node:fs');
  4. const source = fs.readFileSync('background/steps/fill-profile.js', 'utf8');
  5. const globalScope = {};
  6. const api = new Function('self', `${source}; return self.MultiPageBackgroundStep5;`)(globalScope);
  7. test('step 5 forwards generated profile data and relies on completion signal flow', async () => {
  8. const events = {
  9. logs: [],
  10. messages: [],
  11. };
  12. const executor = api.createStep5Executor({
  13. addLog: async (message, level) => {
  14. events.logs.push({ message, level: level || 'info' });
  15. },
  16. generateRandomBirthday: () => ({ year: 2003, month: 6, day: 19 }),
  17. generateRandomName: () => ({ firstName: 'Test', lastName: 'User' }),
  18. sendToContentScript: async (source, message) => {
  19. events.messages.push({ source, message });
  20. return { accepted: true };
  21. },
  22. });
  23. await executor.executeStep5();
  24. assert.deepStrictEqual(events.messages, [
  25. {
  26. source: 'signup-page',
  27. message: {
  28. type: 'EXECUTE_STEP',
  29. step: 5,
  30. source: 'background',
  31. payload: {
  32. firstName: 'Test',
  33. lastName: 'User',
  34. year: 2003,
  35. month: 6,
  36. day: 19,
  37. },
  38. },
  39. },
  40. ]);
  41. assert.ok(events.logs.some(({ message }) => /已生成姓名 Test User/.test(message)));
  42. });