fixtures.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /**
  2. * ================================================================
  3. * E2E Test Data Factory - Fixtures Helper
  4. * ================================================================
  5. * Creates test data via API calls for Playwright E2E tests
  6. *
  7. * Usage:
  8. * var { createTask, createWish, createAssessmentOrder, getTestData } = require('./helpers/fixtures');
  9. * var task = await createTask(auth, { title: 'Custom Task' });
  10. * var wish = await createWish(auth, { points: 500 });
  11. * var order = await createAssessmentOrder(auth, { packageId: 2 });
  12. * var testData = getTestData();
  13. * ================================================================
  14. */
  15. var { BASE_URL } = require('./auth');
  16. var { authHeaders } = require('./utils');
  17. /**
  18. * Create a task via API
  19. * @param {Object} auth - Auth object with token
  20. * @param {Object} overrides - Optional overrides for default body
  21. * @returns {Promise<Object>} - Response JSON or error response
  22. */
  23. async function createTask(auth, overrides) {
  24. var PlaywrightTest = require('@playwright/test');
  25. var page = await PlaywrightTest.request.newContext();
  26. try {
  27. var defaultBody = {
  28. title: '测试任务',
  29. childId: 1003,
  30. type: 'daily',
  31. deadline: '2099-12-31'
  32. };
  33. var body = Object.assign({}, defaultBody, overrides || {});
  34. var response = await page.request.post(BASE_URL + '/api/tasks/create', {
  35. headers: authHeaders(auth),
  36. data: body
  37. });
  38. return await response.json();
  39. } catch (error) {
  40. return {
  41. code: -1,
  42. message: error.message,
  43. data: null
  44. };
  45. } finally {
  46. await page.dispose();
  47. }
  48. }
  49. /**
  50. * Create a wish via API
  51. * @param {Object} auth - Auth object with token
  52. * @param {Object} overrides - Optional overrides for default body
  53. * @returns {Promise<Object>} - Response JSON or error response
  54. */
  55. async function createWish(auth, overrides) {
  56. var PlaywrightTest = require('@playwright/test');
  57. var page = await PlaywrightTest.request.newContext();
  58. try {
  59. var defaultBody = {
  60. title: '测试心愿',
  61. points: 100,
  62. childId: 1003
  63. };
  64. var body = Object.assign({}, defaultBody, overrides || {});
  65. var response = await page.request.post(BASE_URL + '/api/wishes/create', {
  66. headers: authHeaders(auth),
  67. data: body
  68. });
  69. return await response.json();
  70. } catch (error) {
  71. return {
  72. code: -1,
  73. message: error.message,
  74. data: null
  75. };
  76. } finally {
  77. await page.dispose();
  78. }
  79. }
  80. /**
  81. * Create an assessment order via API
  82. * @param {Object} auth - Auth object with token
  83. * @param {Object} overrides - Optional overrides for default body
  84. * @returns {Promise<Object>} - Response JSON or error response
  85. */
  86. async function createAssessmentOrder(auth, overrides) {
  87. var PlaywrightTest = require('@playwright/test');
  88. var page = await PlaywrightTest.request.newContext();
  89. try {
  90. var defaultBody = {
  91. childId: 1003,
  92. packageId: 1
  93. };
  94. var body = Object.assign({}, defaultBody, overrides || {});
  95. var response = await page.request.post(BASE_URL + '/api/dan-assessment/order/create', {
  96. headers: authHeaders(auth),
  97. data: body
  98. });
  99. return await response.json();
  100. } catch (error) {
  101. return {
  102. code: -1,
  103. message: error.message,
  104. data: null
  105. };
  106. } finally {
  107. await page.dispose();
  108. }
  109. }
  110. /**
  111. * Get static test data mapping
  112. * @returns {Object} - Object containing all test user IDs and family IDs
  113. */
  114. function getTestData() {
  115. return {
  116. parentUserId: 1002,
  117. childUserId: 1003,
  118. child2UserId: 1004,
  119. teacherUserId: 1005,
  120. nutritionistUserId: 1006,
  121. butlerUserId: 1007,
  122. assessorUserId: 1008,
  123. vendorUserId: 1009,
  124. adminUserId: 1001,
  125. familyId: 2001
  126. };
  127. }
  128. // ================================================================
  129. // Module exports (CommonJS)
  130. // ================================================================
  131. module.exports = {
  132. createTask: createTask,
  133. createWish: createWish,
  134. createAssessmentOrder: createAssessmentOrder,
  135. getTestData: getTestData
  136. };