ConvertSplitTestAssignedAtToDates.mjs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import { expect } from 'chai'
  2. import { db } from '../../../app/src/infrastructure/mongodb.mjs'
  3. import { exec } from 'node:child_process'
  4. describe('ConvertSplitTestAssignedAtToDates', function () {
  5. beforeEach('insert data', async function () {
  6. await db.users.insertMany([
  7. {
  8. email: 'foo0@bar.com',
  9. splitTests: {
  10. 'split-test-1': [
  11. {
  12. variantName: 'enabled',
  13. versionNumber: 4,
  14. phase: 'release',
  15. assignedAt: '2025-03-18T13:19:46.627Z',
  16. },
  17. {
  18. variantName: 'default',
  19. versionNumber: 5,
  20. phase: 'release',
  21. assignedAt: new Date('2025-04-30T08:52:13.783Z'),
  22. },
  23. ],
  24. 'split-test-2': [
  25. {
  26. variantName: 'active',
  27. versionNumber: 5,
  28. phase: 'release',
  29. assignedAt: new Date('2025-02-14T09:08:30.190Z'),
  30. },
  31. {
  32. variantName: 'active',
  33. versionNumber: 7,
  34. phase: 'release',
  35. assignedAt: new Date('2025-03-11T11:05:13.640Z'),
  36. },
  37. ],
  38. },
  39. },
  40. {
  41. email: 'foo1@bar.com',
  42. splitTests: {
  43. 'split-test-3': [
  44. {
  45. variantName: 'default',
  46. versionNumber: 1,
  47. phase: 'release',
  48. assignedAt: '2025-02-11T14:55:38.470Z',
  49. },
  50. {
  51. variantName: 'enabled',
  52. versionNumber: 21,
  53. phase: 'release',
  54. assignedAt: '2025-03-18T13:19:46.826Z',
  55. },
  56. ],
  57. },
  58. },
  59. {
  60. email: 'foo2@bar.com',
  61. },
  62. ])
  63. })
  64. beforeEach('run migration', function (done) {
  65. exec(
  66. 'cd ../../tools/migrations && yarn run migrations migrate -t saas --force 20210726083523_convert_split_tests_assigned_at_strings_to_dates',
  67. done
  68. )
  69. })
  70. it('should update the dates', async function () {
  71. expect(
  72. await db.users.find({}, { projection: { _id: 0 } }).toArray()
  73. ).to.deep.equal([
  74. {
  75. email: 'foo0@bar.com',
  76. splitTests: {
  77. 'split-test-1': [
  78. {
  79. variantName: 'enabled',
  80. versionNumber: 4,
  81. phase: 'release',
  82. assignedAt: new Date('2025-03-18T13:19:46.627Z'),
  83. },
  84. {
  85. variantName: 'default',
  86. versionNumber: 5,
  87. phase: 'release',
  88. assignedAt: new Date('2025-04-30T08:52:13.783Z'),
  89. },
  90. ],
  91. 'split-test-2': [
  92. {
  93. variantName: 'active',
  94. versionNumber: 5,
  95. phase: 'release',
  96. assignedAt: new Date('2025-02-14T09:08:30.190Z'),
  97. },
  98. {
  99. variantName: 'active',
  100. versionNumber: 7,
  101. phase: 'release',
  102. assignedAt: new Date('2025-03-11T11:05:13.640Z'),
  103. },
  104. ],
  105. },
  106. },
  107. {
  108. email: 'foo1@bar.com',
  109. splitTests: {
  110. 'split-test-3': [
  111. {
  112. variantName: 'default',
  113. versionNumber: 1,
  114. phase: 'release',
  115. assignedAt: new Date('2025-02-11T14:55:38.470Z'),
  116. },
  117. {
  118. variantName: 'enabled',
  119. versionNumber: 21,
  120. phase: 'release',
  121. assignedAt: new Date('2025-03-18T13:19:46.826Z'),
  122. },
  123. ],
  124. },
  125. },
  126. {
  127. email: 'foo2@bar.com',
  128. },
  129. ])
  130. })
  131. })