@stamhoofd/structures 2.5.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/dist/index.d.ts +1 -7
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -7
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/BalanceItemDetailed.d.ts +11 -3
  6. package/dist/src/BalanceItemDetailed.d.ts.map +1 -1
  7. package/dist/src/BalanceItemDetailed.js +15 -7
  8. package/dist/src/BalanceItemDetailed.js.map +1 -1
  9. package/dist/src/Event.d.ts +2 -1
  10. package/dist/src/Event.d.ts.map +1 -1
  11. package/dist/src/Event.js +7 -3
  12. package/dist/src/Event.js.map +1 -1
  13. package/dist/src/Group.d.ts +5 -0
  14. package/dist/src/Group.d.ts.map +1 -1
  15. package/dist/src/Group.js +8 -1
  16. package/dist/src/Group.js.map +1 -1
  17. package/dist/src/GroupSettings.d.ts +58 -19
  18. package/dist/src/GroupSettings.d.ts.map +1 -1
  19. package/dist/src/GroupSettings.js +188 -34
  20. package/dist/src/GroupSettings.js.map +1 -1
  21. package/dist/src/RegistrationPeriod.d.ts +1 -0
  22. package/dist/src/RegistrationPeriod.d.ts.map +1 -1
  23. package/dist/src/RegistrationPeriod.js +3 -0
  24. package/dist/src/RegistrationPeriod.js.map +1 -1
  25. package/dist/src/StockReservation.d.ts +20 -0
  26. package/dist/src/StockReservation.d.ts.map +1 -0
  27. package/dist/src/StockReservation.js +91 -0
  28. package/dist/src/StockReservation.js.map +1 -0
  29. package/dist/src/Version.d.ts +1 -1
  30. package/dist/src/Version.js +1 -1
  31. package/dist/src/addresses/Address.d.ts +4 -0
  32. package/dist/src/addresses/Address.d.ts.map +1 -1
  33. package/dist/src/addresses/Address.js +6 -0
  34. package/dist/src/addresses/Address.js.map +1 -1
  35. package/dist/src/email/EditorSmartVariable.d.ts.map +1 -1
  36. package/dist/src/email/EditorSmartVariable.js +7 -11
  37. package/dist/src/email/EditorSmartVariable.js.map +1 -1
  38. package/dist/src/email/Email.d.ts +4 -3
  39. package/dist/src/email/Email.d.ts.map +1 -1
  40. package/dist/src/email/Email.js +5 -4
  41. package/dist/src/email/Email.js.map +1 -1
  42. package/dist/src/members/Member.d.ts +7 -0
  43. package/dist/src/members/Member.d.ts.map +1 -1
  44. package/dist/src/members/Member.js +34 -1
  45. package/dist/src/members/Member.js.map +1 -1
  46. package/dist/src/members/MemberDetails.d.ts +8 -11
  47. package/dist/src/members/MemberDetails.d.ts.map +1 -1
  48. package/dist/src/members/MemberDetails.js +92 -51
  49. package/dist/src/members/MemberDetails.js.map +1 -1
  50. package/dist/src/members/MemberPlatformMembership.d.ts +1 -0
  51. package/dist/src/members/MemberPlatformMembership.d.ts.map +1 -1
  52. package/dist/src/members/MemberPlatformMembership.js +3 -0
  53. package/dist/src/members/MemberPlatformMembership.js.map +1 -1
  54. package/dist/src/members/MemberWithRegistrationsBlob.d.ts +1 -1
  55. package/dist/src/members/MemberWithRegistrationsBlob.d.ts.map +1 -1
  56. package/dist/src/members/MemberWithRegistrationsBlob.js +35 -12
  57. package/dist/src/members/MemberWithRegistrationsBlob.js.map +1 -1
  58. package/dist/src/members/PaymentDetailed.d.ts +3 -0
  59. package/dist/src/members/PaymentDetailed.d.ts.map +1 -1
  60. package/dist/src/members/PaymentDetailed.js +7 -8
  61. package/dist/src/members/PaymentDetailed.js.map +1 -1
  62. package/dist/src/members/PaymentGeneral.d.ts +5 -2
  63. package/dist/src/members/PaymentGeneral.d.ts.map +1 -1
  64. package/dist/src/members/PaymentGeneral.js +3 -5
  65. package/dist/src/members/PaymentGeneral.js.map +1 -1
  66. package/dist/src/members/PlatformMember.d.ts +6 -2
  67. package/dist/src/members/PlatformMember.d.ts.map +1 -1
  68. package/dist/src/members/PlatformMember.js +68 -18
  69. package/dist/src/members/PlatformMember.js.map +1 -1
  70. package/dist/src/members/Registration.d.ts +12 -0
  71. package/dist/src/members/Registration.d.ts.map +1 -1
  72. package/dist/src/members/Registration.js +18 -3
  73. package/dist/src/members/Registration.js.map +1 -1
  74. package/dist/src/members/RegistrationWithMember.d.ts +3 -2
  75. package/dist/src/members/RegistrationWithMember.d.ts.map +1 -1
  76. package/dist/src/members/RegistrationWithMember.js +7 -1
  77. package/dist/src/members/RegistrationWithMember.js.map +1 -1
  78. package/dist/src/members/checkout/BalanceItemCartItem.d.ts +3 -1
  79. package/dist/src/members/checkout/BalanceItemCartItem.d.ts.map +1 -1
  80. package/dist/src/members/checkout/BalanceItemCartItem.js +11 -9
  81. package/dist/src/members/checkout/BalanceItemCartItem.js.map +1 -1
  82. package/dist/src/members/checkout/RegisterCart.d.ts +16 -2
  83. package/dist/src/members/checkout/RegisterCart.d.ts.map +1 -1
  84. package/dist/src/members/checkout/RegisterCart.js +95 -17
  85. package/dist/src/members/checkout/RegisterCart.js.map +1 -1
  86. package/dist/src/members/checkout/RegisterCheckout.d.ts +19 -0
  87. package/dist/src/members/checkout/RegisterCheckout.d.ts.map +1 -1
  88. package/dist/src/members/checkout/RegisterCheckout.js +38 -1
  89. package/dist/src/members/checkout/RegisterCheckout.js.map +1 -1
  90. package/dist/src/members/checkout/RegisterItem.d.ts +37 -19
  91. package/dist/src/members/checkout/RegisterItem.d.ts.map +1 -1
  92. package/dist/src/members/checkout/RegisterItem.js +283 -118
  93. package/dist/src/members/checkout/RegisterItem.js.map +1 -1
  94. package/esm/dist/index.d.ts +1 -7
  95. package/esm/dist/index.d.ts.map +1 -1
  96. package/esm/dist/index.js +1 -7
  97. package/esm/dist/index.js.map +1 -1
  98. package/esm/dist/src/BalanceItemDetailed.d.ts +11 -3
  99. package/esm/dist/src/BalanceItemDetailed.d.ts.map +1 -1
  100. package/esm/dist/src/BalanceItemDetailed.js +15 -7
  101. package/esm/dist/src/BalanceItemDetailed.js.map +1 -1
  102. package/esm/dist/src/Event.d.ts +2 -1
  103. package/esm/dist/src/Event.d.ts.map +1 -1
  104. package/esm/dist/src/Event.js +7 -3
  105. package/esm/dist/src/Event.js.map +1 -1
  106. package/esm/dist/src/Group.d.ts +5 -0
  107. package/esm/dist/src/Group.d.ts.map +1 -1
  108. package/esm/dist/src/Group.js +9 -2
  109. package/esm/dist/src/Group.js.map +1 -1
  110. package/esm/dist/src/GroupSettings.d.ts +58 -19
  111. package/esm/dist/src/GroupSettings.d.ts.map +1 -1
  112. package/esm/dist/src/GroupSettings.js +188 -34
  113. package/esm/dist/src/GroupSettings.js.map +1 -1
  114. package/esm/dist/src/RegistrationPeriod.d.ts +1 -0
  115. package/esm/dist/src/RegistrationPeriod.d.ts.map +1 -1
  116. package/esm/dist/src/RegistrationPeriod.js +3 -0
  117. package/esm/dist/src/RegistrationPeriod.js.map +1 -1
  118. package/esm/dist/src/StockReservation.d.ts +20 -0
  119. package/esm/dist/src/StockReservation.d.ts.map +1 -0
  120. package/esm/dist/src/StockReservation.js +87 -0
  121. package/esm/dist/src/StockReservation.js.map +1 -0
  122. package/esm/dist/src/Version.d.ts +1 -1
  123. package/esm/dist/src/Version.js +1 -1
  124. package/esm/dist/src/addresses/Address.d.ts +4 -0
  125. package/esm/dist/src/addresses/Address.d.ts.map +1 -1
  126. package/esm/dist/src/addresses/Address.js +6 -0
  127. package/esm/dist/src/addresses/Address.js.map +1 -1
  128. package/esm/dist/src/email/EditorSmartVariable.d.ts.map +1 -1
  129. package/esm/dist/src/email/EditorSmartVariable.js +8 -12
  130. package/esm/dist/src/email/EditorSmartVariable.js.map +1 -1
  131. package/esm/dist/src/email/Email.d.ts +4 -3
  132. package/esm/dist/src/email/Email.d.ts.map +1 -1
  133. package/esm/dist/src/email/Email.js +5 -4
  134. package/esm/dist/src/email/Email.js.map +1 -1
  135. package/esm/dist/src/members/Member.d.ts +7 -0
  136. package/esm/dist/src/members/Member.d.ts.map +1 -1
  137. package/esm/dist/src/members/Member.js +32 -0
  138. package/esm/dist/src/members/Member.js.map +1 -1
  139. package/esm/dist/src/members/MemberDetails.d.ts +8 -11
  140. package/esm/dist/src/members/MemberDetails.d.ts.map +1 -1
  141. package/esm/dist/src/members/MemberDetails.js +92 -51
  142. package/esm/dist/src/members/MemberDetails.js.map +1 -1
  143. package/esm/dist/src/members/MemberPlatformMembership.d.ts +1 -0
  144. package/esm/dist/src/members/MemberPlatformMembership.d.ts.map +1 -1
  145. package/esm/dist/src/members/MemberPlatformMembership.js +3 -0
  146. package/esm/dist/src/members/MemberPlatformMembership.js.map +1 -1
  147. package/esm/dist/src/members/MemberWithRegistrationsBlob.d.ts +1 -1
  148. package/esm/dist/src/members/MemberWithRegistrationsBlob.d.ts.map +1 -1
  149. package/esm/dist/src/members/MemberWithRegistrationsBlob.js +35 -12
  150. package/esm/dist/src/members/MemberWithRegistrationsBlob.js.map +1 -1
  151. package/esm/dist/src/members/PaymentDetailed.d.ts +3 -0
  152. package/esm/dist/src/members/PaymentDetailed.d.ts.map +1 -1
  153. package/esm/dist/src/members/PaymentDetailed.js +7 -8
  154. package/esm/dist/src/members/PaymentDetailed.js.map +1 -1
  155. package/esm/dist/src/members/PaymentGeneral.d.ts +5 -2
  156. package/esm/dist/src/members/PaymentGeneral.d.ts.map +1 -1
  157. package/esm/dist/src/members/PaymentGeneral.js +3 -5
  158. package/esm/dist/src/members/PaymentGeneral.js.map +1 -1
  159. package/esm/dist/src/members/PlatformMember.d.ts +6 -2
  160. package/esm/dist/src/members/PlatformMember.d.ts.map +1 -1
  161. package/esm/dist/src/members/PlatformMember.js +68 -18
  162. package/esm/dist/src/members/PlatformMember.js.map +1 -1
  163. package/esm/dist/src/members/Registration.d.ts +12 -0
  164. package/esm/dist/src/members/Registration.d.ts.map +1 -1
  165. package/esm/dist/src/members/Registration.js +19 -4
  166. package/esm/dist/src/members/Registration.js.map +1 -1
  167. package/esm/dist/src/members/RegistrationWithMember.d.ts +3 -2
  168. package/esm/dist/src/members/RegistrationWithMember.d.ts.map +1 -1
  169. package/esm/dist/src/members/RegistrationWithMember.js +8 -2
  170. package/esm/dist/src/members/RegistrationWithMember.js.map +1 -1
  171. package/esm/dist/src/members/checkout/BalanceItemCartItem.d.ts +3 -1
  172. package/esm/dist/src/members/checkout/BalanceItemCartItem.d.ts.map +1 -1
  173. package/esm/dist/src/members/checkout/BalanceItemCartItem.js +11 -9
  174. package/esm/dist/src/members/checkout/BalanceItemCartItem.js.map +1 -1
  175. package/esm/dist/src/members/checkout/RegisterCart.d.ts +16 -2
  176. package/esm/dist/src/members/checkout/RegisterCart.d.ts.map +1 -1
  177. package/esm/dist/src/members/checkout/RegisterCart.js +96 -18
  178. package/esm/dist/src/members/checkout/RegisterCart.js.map +1 -1
  179. package/esm/dist/src/members/checkout/RegisterCheckout.d.ts +19 -0
  180. package/esm/dist/src/members/checkout/RegisterCheckout.d.ts.map +1 -1
  181. package/esm/dist/src/members/checkout/RegisterCheckout.js +38 -1
  182. package/esm/dist/src/members/checkout/RegisterCheckout.js.map +1 -1
  183. package/esm/dist/src/members/checkout/RegisterItem.d.ts +37 -19
  184. package/esm/dist/src/members/checkout/RegisterItem.d.ts.map +1 -1
  185. package/esm/dist/src/members/checkout/RegisterItem.js +283 -118
  186. package/esm/dist/src/members/checkout/RegisterItem.js.map +1 -1
  187. package/package.json +2 -2
  188. package/dist/src/members/MemberWithRegistrations.d.ts +0 -52
  189. package/dist/src/members/MemberWithRegistrations.d.ts.map +0 -1
  190. package/dist/src/members/MemberWithRegistrations.js +0 -156
  191. package/dist/src/members/MemberWithRegistrations.js.map +0 -1
  192. package/dist/src/members/checkout/OldRegisterCart.d.ts +0 -50
  193. package/dist/src/members/checkout/OldRegisterCart.d.ts.map +0 -1
  194. package/dist/src/members/checkout/OldRegisterCart.js +0 -207
  195. package/dist/src/members/checkout/OldRegisterCart.js.map +0 -1
  196. package/dist/src/members/checkout/OldRegisterCartPriceCalculator.d.ts +0 -36
  197. package/dist/src/members/checkout/OldRegisterCartPriceCalculator.d.ts.map +0 -1
  198. package/dist/src/members/checkout/OldRegisterCartPriceCalculator.js +0 -339
  199. package/dist/src/members/checkout/OldRegisterCartPriceCalculator.js.map +0 -1
  200. package/dist/src/members/checkout/OldRegisterCartValidator.d.ts +0 -35
  201. package/dist/src/members/checkout/OldRegisterCartValidator.d.ts.map +0 -1
  202. package/dist/src/members/checkout/OldRegisterCartValidator.js +0 -309
  203. package/dist/src/members/checkout/OldRegisterCartValidator.js.map +0 -1
  204. package/dist/src/members/checkout/OldRegisterCheckout.d.ts +0 -22
  205. package/dist/src/members/checkout/OldRegisterCheckout.d.ts.map +0 -1
  206. package/dist/src/members/checkout/OldRegisterCheckout.js +0 -46
  207. package/dist/src/members/checkout/OldRegisterCheckout.js.map +0 -1
  208. package/dist/src/members/checkout/OldRegisterItem.d.ts +0 -46
  209. package/dist/src/members/checkout/OldRegisterItem.d.ts.map +0 -1
  210. package/dist/src/members/checkout/OldRegisterItem.js +0 -89
  211. package/dist/src/members/checkout/OldRegisterItem.js.map +0 -1
  212. package/dist/src/members/checkout/RegisterCartPriceCalculator.test.d.ts +0 -2
  213. package/dist/src/members/checkout/RegisterCartPriceCalculator.test.d.ts.map +0 -1
  214. package/dist/src/members/checkout/RegisterCartPriceCalculator.test.js +0 -1076
  215. package/dist/src/members/checkout/RegisterCartPriceCalculator.test.js.map +0 -1
  216. package/dist/src/members/checkout/UnknownMemberWithRegistrations.d.ts +0 -23
  217. package/dist/src/members/checkout/UnknownMemberWithRegistrations.d.ts.map +0 -1
  218. package/dist/src/members/checkout/UnknownMemberWithRegistrations.js +0 -3
  219. package/dist/src/members/checkout/UnknownMemberWithRegistrations.js.map +0 -1
  220. package/esm/dist/src/members/MemberWithRegistrations.d.ts +0 -52
  221. package/esm/dist/src/members/MemberWithRegistrations.d.ts.map +0 -1
  222. package/esm/dist/src/members/MemberWithRegistrations.js +0 -152
  223. package/esm/dist/src/members/MemberWithRegistrations.js.map +0 -1
  224. package/esm/dist/src/members/checkout/OldRegisterCart.d.ts +0 -50
  225. package/esm/dist/src/members/checkout/OldRegisterCart.d.ts.map +0 -1
  226. package/esm/dist/src/members/checkout/OldRegisterCart.js +0 -202
  227. package/esm/dist/src/members/checkout/OldRegisterCart.js.map +0 -1
  228. package/esm/dist/src/members/checkout/OldRegisterCartPriceCalculator.d.ts +0 -36
  229. package/esm/dist/src/members/checkout/OldRegisterCartPriceCalculator.d.ts.map +0 -1
  230. package/esm/dist/src/members/checkout/OldRegisterCartPriceCalculator.js +0 -334
  231. package/esm/dist/src/members/checkout/OldRegisterCartPriceCalculator.js.map +0 -1
  232. package/esm/dist/src/members/checkout/OldRegisterCartValidator.d.ts +0 -35
  233. package/esm/dist/src/members/checkout/OldRegisterCartValidator.d.ts.map +0 -1
  234. package/esm/dist/src/members/checkout/OldRegisterCartValidator.js +0 -305
  235. package/esm/dist/src/members/checkout/OldRegisterCartValidator.js.map +0 -1
  236. package/esm/dist/src/members/checkout/OldRegisterCheckout.d.ts +0 -22
  237. package/esm/dist/src/members/checkout/OldRegisterCheckout.d.ts.map +0 -1
  238. package/esm/dist/src/members/checkout/OldRegisterCheckout.js +0 -41
  239. package/esm/dist/src/members/checkout/OldRegisterCheckout.js.map +0 -1
  240. package/esm/dist/src/members/checkout/OldRegisterItem.d.ts +0 -46
  241. package/esm/dist/src/members/checkout/OldRegisterItem.d.ts.map +0 -1
  242. package/esm/dist/src/members/checkout/OldRegisterItem.js +0 -84
  243. package/esm/dist/src/members/checkout/OldRegisterItem.js.map +0 -1
  244. package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.test.d.ts +0 -2
  245. package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.test.d.ts.map +0 -1
  246. package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.test.js +0 -1074
  247. package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.test.js.map +0 -1
  248. package/esm/dist/src/members/checkout/UnknownMemberWithRegistrations.d.ts +0 -23
  249. package/esm/dist/src/members/checkout/UnknownMemberWithRegistrations.d.ts.map +0 -1
  250. package/esm/dist/src/members/checkout/UnknownMemberWithRegistrations.js +0 -2
  251. package/esm/dist/src/members/checkout/UnknownMemberWithRegistrations.js.map +0 -1
@@ -1,1076 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Group_1 = require("../../Group");
4
- const GroupCategory_1 = require("../../GroupCategory");
5
- const OldGroupPrices_1 = require("../../OldGroupPrices");
6
- const GroupSettings_1 = require("../../GroupSettings");
7
- const PaymentConfiguration_1 = require("../../PaymentConfiguration");
8
- const MemberDetails_1 = require("../MemberDetails");
9
- const MemberWithRegistrationsBlob_1 = require("../MemberWithRegistrationsBlob");
10
- const Registration_1 = require("../Registration");
11
- const OldRegisterCart_1 = require("./OldRegisterCart");
12
- const OldRegisterItem_1 = require("./OldRegisterItem");
13
- const defaultPaymentConfiguration = PaymentConfiguration_1.PaymentConfiguration.create({});
14
- describe("Test register cart price calculations", () => {
15
- test("Family discount best combination", () => {
16
- const group1 = Group_1.Group.create({
17
- organizationId: 'test',
18
- periodId: 'test',
19
- settings: GroupSettings_1.GroupSettings.create({
20
- registrationStartDate: new Date(),
21
- registrationEndDate: new Date(),
22
- startDate: new Date(),
23
- endDate: new Date(),
24
- oldPrices: [
25
- OldGroupPrices_1.OldGroupPrices.create({
26
- prices: [
27
- OldGroupPrices_1.OldGroupPrice.create({
28
- price: 60,
29
- reducedPrice: 10,
30
- }),
31
- OldGroupPrices_1.OldGroupPrice.create({
32
- price: 40,
33
- reducedPrice: 10,
34
- }),
35
- OldGroupPrices_1.OldGroupPrice.create({
36
- price: 20,
37
- reducedPrice: 10,
38
- })
39
- ]
40
- })
41
- ]
42
- })
43
- });
44
- //
45
- const group2 = Group_1.Group.create({
46
- organizationId: 'test',
47
- periodId: 'test',
48
- settings: GroupSettings_1.GroupSettings.create({
49
- registrationStartDate: new Date(),
50
- registrationEndDate: new Date(),
51
- startDate: new Date(),
52
- endDate: new Date(),
53
- oldPrices: [
54
- OldGroupPrices_1.OldGroupPrices.create({
55
- prices: [
56
- OldGroupPrices_1.OldGroupPrice.create({
57
- price: 60,
58
- reducedPrice: 10,
59
- }),
60
- OldGroupPrices_1.OldGroupPrice.create({
61
- price: 40,
62
- reducedPrice: 10,
63
- }),
64
- OldGroupPrices_1.OldGroupPrice.create({
65
- price: 10,
66
- reducedPrice: 10,
67
- })
68
- ]
69
- })
70
- ]
71
- })
72
- });
73
- const group3 = Group_1.Group.create({
74
- organizationId: 'test',
75
- periodId: 'test',
76
- settings: GroupSettings_1.GroupSettings.create({
77
- registrationStartDate: new Date(),
78
- registrationEndDate: new Date(),
79
- startDate: new Date(),
80
- endDate: new Date(),
81
- oldPrices: [
82
- OldGroupPrices_1.OldGroupPrices.create({
83
- prices: [
84
- OldGroupPrices_1.OldGroupPrice.create({
85
- price: 70,
86
- reducedPrice: 10,
87
- }),
88
- OldGroupPrices_1.OldGroupPrice.create({
89
- price: 40,
90
- reducedPrice: 10,
91
- }),
92
- OldGroupPrices_1.OldGroupPrice.create({
93
- price: 20,
94
- reducedPrice: 10,
95
- })
96
- ]
97
- })
98
- ]
99
- })
100
- });
101
- const category = GroupCategory_1.GroupCategory.create({
102
- groupIds: [group1.id, group2.id, group3.id],
103
- settings: GroupCategory_1.GroupCategorySettings.create({
104
- maximumRegistrations: 1
105
- })
106
- });
107
- const bart = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
108
- details: MemberDetails_1.MemberDetails.create({}),
109
- users: [],
110
- registrations: []
111
- });
112
- const alice = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
113
- details: MemberDetails_1.MemberDetails.create({}),
114
- users: [],
115
- registrations: []
116
- });
117
- const tom = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
118
- details: MemberDetails_1.MemberDetails.create({}),
119
- users: [],
120
- registrations: []
121
- });
122
- const cart = OldRegisterCart_1.OldIDRegisterCart.create({});
123
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
124
- groupId: group1.id,
125
- memberId: bart.id,
126
- reduced: false,
127
- waitingList: false
128
- }));
129
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
130
- groupId: group2.id,
131
- memberId: alice.id,
132
- reduced: false,
133
- waitingList: false
134
- }));
135
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
136
- groupId: group3.id,
137
- memberId: tom.id,
138
- reduced: false,
139
- waitingList: false
140
- }));
141
- cart.calculatePrices([bart, alice, tom], [group1, group2, group3], [category], defaultPaymentConfiguration);
142
- expect(cart.items).toHaveLength(3);
143
- // Check if Bart got the cheapest price
144
- const calculatedBart = cart.items.find(i => i.memberId === bart.id);
145
- expect(calculatedBart).toMatchObject({
146
- calculatedPrice: 60
147
- });
148
- const calculatedAlice = cart.items.find(i => i.memberId === alice.id);
149
- expect(calculatedAlice).toMatchObject({
150
- calculatedPrice: 10
151
- });
152
- const calculatedTom = cart.items.find(i => i.memberId === tom.id);
153
- expect(calculatedTom).toMatchObject({
154
- calculatedPrice: 40
155
- });
156
- // Try in different order
157
- const cached = cart.price;
158
- cart.calculatePrices([tom, bart, alice], [group2, group1, group3], [category], defaultPaymentConfiguration);
159
- expect(cart.price).toEqual(cached);
160
- });
161
- test("Family discount 4 members", () => {
162
- const group1 = Group_1.Group.create({
163
- organizationId: 'test',
164
- periodId: 'test',
165
- settings: GroupSettings_1.GroupSettings.create({
166
- registrationStartDate: new Date(),
167
- registrationEndDate: new Date(),
168
- startDate: new Date(),
169
- endDate: new Date(),
170
- oldPrices: [
171
- OldGroupPrices_1.OldGroupPrices.create({
172
- prices: [
173
- OldGroupPrices_1.OldGroupPrice.create({
174
- price: 60,
175
- reducedPrice: 10,
176
- }),
177
- OldGroupPrices_1.OldGroupPrice.create({
178
- price: 40,
179
- reducedPrice: 10,
180
- }),
181
- OldGroupPrices_1.OldGroupPrice.create({
182
- price: 20,
183
- reducedPrice: 10,
184
- })
185
- ]
186
- })
187
- ]
188
- })
189
- });
190
- //
191
- const group2 = Group_1.Group.create({
192
- organizationId: 'test',
193
- periodId: 'test',
194
- settings: GroupSettings_1.GroupSettings.create({
195
- registrationStartDate: new Date(),
196
- registrationEndDate: new Date(),
197
- startDate: new Date(),
198
- endDate: new Date(),
199
- oldPrices: [
200
- OldGroupPrices_1.OldGroupPrices.create({
201
- prices: [
202
- OldGroupPrices_1.OldGroupPrice.create({
203
- price: 60,
204
- reducedPrice: 10,
205
- }),
206
- OldGroupPrices_1.OldGroupPrice.create({
207
- price: 40,
208
- reducedPrice: 10,
209
- }),
210
- OldGroupPrices_1.OldGroupPrice.create({
211
- price: 10
212
- })
213
- ]
214
- })
215
- ]
216
- })
217
- });
218
- const group3 = Group_1.Group.create({
219
- organizationId: 'test',
220
- periodId: 'test',
221
- settings: GroupSettings_1.GroupSettings.create({
222
- registrationStartDate: new Date(),
223
- registrationEndDate: new Date(),
224
- startDate: new Date(),
225
- endDate: new Date(),
226
- oldPrices: [
227
- OldGroupPrices_1.OldGroupPrices.create({
228
- prices: [
229
- OldGroupPrices_1.OldGroupPrice.create({
230
- price: 70,
231
- reducedPrice: 10,
232
- }),
233
- OldGroupPrices_1.OldGroupPrice.create({
234
- price: 40,
235
- reducedPrice: 10,
236
- }),
237
- OldGroupPrices_1.OldGroupPrice.create({
238
- price: 20,
239
- reducedPrice: 10,
240
- })
241
- ]
242
- })
243
- ]
244
- })
245
- });
246
- const group4 = Group_1.Group.create({
247
- organizationId: 'test',
248
- periodId: 'test',
249
- settings: GroupSettings_1.GroupSettings.create({
250
- registrationStartDate: new Date(),
251
- registrationEndDate: new Date(),
252
- startDate: new Date(),
253
- endDate: new Date(),
254
- oldPrices: [
255
- OldGroupPrices_1.OldGroupPrices.create({
256
- prices: [
257
- OldGroupPrices_1.OldGroupPrice.create({
258
- price: 80,
259
- })
260
- ]
261
- })
262
- ]
263
- })
264
- });
265
- const category = GroupCategory_1.GroupCategory.create({
266
- groupIds: [group1.id, group2.id, group3.id, group4.id],
267
- settings: GroupCategory_1.GroupCategorySettings.create({
268
- maximumRegistrations: 1
269
- })
270
- });
271
- const bart = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
272
- details: MemberDetails_1.MemberDetails.create({}),
273
- users: [],
274
- registrations: []
275
- });
276
- const alice = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
277
- details: MemberDetails_1.MemberDetails.create({}),
278
- users: [],
279
- registrations: []
280
- });
281
- const tom = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
282
- details: MemberDetails_1.MemberDetails.create({}),
283
- users: [],
284
- registrations: []
285
- });
286
- const linda = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
287
- details: MemberDetails_1.MemberDetails.create({}),
288
- users: [],
289
- registrations: []
290
- });
291
- const cart = OldRegisterCart_1.OldIDRegisterCart.create({});
292
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
293
- groupId: group1.id,
294
- memberId: bart.id,
295
- reduced: false,
296
- waitingList: false
297
- }));
298
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
299
- groupId: group2.id,
300
- memberId: alice.id,
301
- reduced: false,
302
- waitingList: false
303
- }));
304
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
305
- groupId: group3.id,
306
- memberId: tom.id,
307
- reduced: false,
308
- waitingList: false
309
- }));
310
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
311
- groupId: group4.id,
312
- memberId: linda.id,
313
- reduced: false,
314
- waitingList: false
315
- }));
316
- cart.calculatePrices([bart, alice, tom, linda], [group1, group2, group3, group4], [category], defaultPaymentConfiguration);
317
- expect(cart.items).toHaveLength(4);
318
- // Check if Bart got the cheapest price
319
- const calculatedBart = cart.items.find(i => i.memberId === bart.id);
320
- expect(calculatedBart).toMatchObject({
321
- calculatedPrice: 40
322
- });
323
- const calculatedAlice = cart.items.find(i => i.memberId === alice.id);
324
- expect(calculatedAlice).toMatchObject({
325
- calculatedPrice: 10
326
- });
327
- const calculatedTom = cart.items.find(i => i.memberId === tom.id);
328
- expect(calculatedTom).toMatchObject({
329
- calculatedPrice: 20
330
- });
331
- const calculatedLinda = cart.items.find(i => i.memberId === linda.id);
332
- expect(calculatedLinda).toMatchObject({
333
- calculatedPrice: 80
334
- });
335
- // Try in different order
336
- const cached = cart.price;
337
- cart.calculatePrices([tom, bart, alice, linda], [group2, group1, group3, group4], [category], defaultPaymentConfiguration);
338
- expect(cart.price).toEqual(cached);
339
- });
340
- test("With existing registration", () => {
341
- const group1 = Group_1.Group.create({
342
- organizationId: 'test',
343
- periodId: 'test',
344
- settings: GroupSettings_1.GroupSettings.create({
345
- registrationStartDate: new Date(),
346
- registrationEndDate: new Date(),
347
- startDate: new Date(),
348
- endDate: new Date(),
349
- oldPrices: [
350
- OldGroupPrices_1.OldGroupPrices.create({
351
- prices: [
352
- OldGroupPrices_1.OldGroupPrice.create({
353
- price: 60,
354
- reducedPrice: 10,
355
- }),
356
- OldGroupPrices_1.OldGroupPrice.create({
357
- price: 40,
358
- reducedPrice: 10,
359
- }),
360
- OldGroupPrices_1.OldGroupPrice.create({
361
- price: 20,
362
- reducedPrice: 10,
363
- })
364
- ]
365
- })
366
- ]
367
- })
368
- });
369
- //
370
- const group2 = Group_1.Group.create({
371
- organizationId: 'test',
372
- periodId: 'test',
373
- settings: GroupSettings_1.GroupSettings.create({
374
- registrationStartDate: new Date(),
375
- registrationEndDate: new Date(),
376
- startDate: new Date(),
377
- endDate: new Date(),
378
- oldPrices: [
379
- OldGroupPrices_1.OldGroupPrices.create({
380
- prices: [
381
- OldGroupPrices_1.OldGroupPrice.create({
382
- price: 60,
383
- reducedPrice: 10,
384
- }),
385
- OldGroupPrices_1.OldGroupPrice.create({
386
- price: 40,
387
- reducedPrice: 10,
388
- }),
389
- OldGroupPrices_1.OldGroupPrice.create({
390
- price: 10
391
- })
392
- ]
393
- })
394
- ]
395
- })
396
- });
397
- const group3 = Group_1.Group.create({
398
- organizationId: 'test',
399
- periodId: 'test',
400
- settings: GroupSettings_1.GroupSettings.create({
401
- registrationStartDate: new Date(),
402
- registrationEndDate: new Date(),
403
- startDate: new Date(),
404
- endDate: new Date(),
405
- oldPrices: [
406
- OldGroupPrices_1.OldGroupPrices.create({
407
- prices: [
408
- OldGroupPrices_1.OldGroupPrice.create({
409
- price: 70,
410
- reducedPrice: 10,
411
- }),
412
- OldGroupPrices_1.OldGroupPrice.create({
413
- price: 40,
414
- reducedPrice: 10,
415
- }),
416
- OldGroupPrices_1.OldGroupPrice.create({
417
- price: 20,
418
- reducedPrice: 10,
419
- })
420
- ]
421
- })
422
- ]
423
- })
424
- });
425
- const category = GroupCategory_1.GroupCategory.create({
426
- groupIds: [group1.id, group2.id, group3.id],
427
- settings: GroupCategory_1.GroupCategorySettings.create({
428
- maximumRegistrations: 1
429
- })
430
- });
431
- const bart = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
432
- details: MemberDetails_1.MemberDetails.create({}),
433
- users: [],
434
- registrations: [
435
- Registration_1.Registration.create({
436
- organizationId: group1.organizationId,
437
- group: group1,
438
- cycle: group1.cycle,
439
- registeredAt: new Date()
440
- })
441
- ]
442
- });
443
- const alice = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
444
- details: MemberDetails_1.MemberDetails.create({}),
445
- users: [],
446
- registrations: []
447
- });
448
- const tom = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
449
- details: MemberDetails_1.MemberDetails.create({}),
450
- users: [],
451
- registrations: []
452
- });
453
- const cart = OldRegisterCart_1.OldIDRegisterCart.create({});
454
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
455
- groupId: group2.id,
456
- memberId: alice.id,
457
- reduced: false,
458
- waitingList: false
459
- }));
460
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
461
- groupId: group3.id,
462
- memberId: tom.id,
463
- reduced: false,
464
- waitingList: false
465
- }));
466
- cart.calculatePrices([bart, alice, tom], [group1, group2, group3], [category], defaultPaymentConfiguration);
467
- expect(cart.items).toHaveLength(2);
468
- const calculatedAlice = cart.items.find(i => i.memberId === alice.id);
469
- expect(calculatedAlice).toMatchObject({
470
- calculatedPrice: 10
471
- });
472
- const calculatedTom = cart.items.find(i => i.memberId === tom.id);
473
- expect(calculatedTom).toMatchObject({
474
- calculatedPrice: 40
475
- });
476
- // Try in different order
477
- const cached = cart.price;
478
- cart.calculatePrices([tom, bart, alice], [group2, group1, group3], [category], defaultPaymentConfiguration);
479
- expect(cart.price).toEqual(cached);
480
- });
481
- test("With two existing registration", () => {
482
- const group1 = Group_1.Group.create({
483
- organizationId: 'test',
484
- periodId: 'test',
485
- settings: GroupSettings_1.GroupSettings.create({
486
- registrationStartDate: new Date(),
487
- registrationEndDate: new Date(),
488
- startDate: new Date(),
489
- endDate: new Date(),
490
- oldPrices: [
491
- OldGroupPrices_1.OldGroupPrices.create({
492
- prices: [
493
- OldGroupPrices_1.OldGroupPrice.create({
494
- price: 60,
495
- reducedPrice: 10,
496
- }),
497
- OldGroupPrices_1.OldGroupPrice.create({
498
- price: 40,
499
- reducedPrice: 10,
500
- }),
501
- OldGroupPrices_1.OldGroupPrice.create({
502
- price: 20,
503
- reducedPrice: 10,
504
- })
505
- ]
506
- })
507
- ]
508
- })
509
- });
510
- //
511
- const group2 = Group_1.Group.create({
512
- organizationId: 'test',
513
- periodId: 'test',
514
- settings: GroupSettings_1.GroupSettings.create({
515
- registrationStartDate: new Date(),
516
- registrationEndDate: new Date(),
517
- startDate: new Date(),
518
- endDate: new Date(),
519
- oldPrices: [
520
- OldGroupPrices_1.OldGroupPrices.create({
521
- prices: [
522
- OldGroupPrices_1.OldGroupPrice.create({
523
- price: 60,
524
- reducedPrice: 10,
525
- }),
526
- OldGroupPrices_1.OldGroupPrice.create({
527
- price: 40,
528
- reducedPrice: 10,
529
- }),
530
- OldGroupPrices_1.OldGroupPrice.create({
531
- price: 10
532
- })
533
- ]
534
- })
535
- ]
536
- })
537
- });
538
- const group3 = Group_1.Group.create({
539
- organizationId: 'test',
540
- periodId: 'test',
541
- settings: GroupSettings_1.GroupSettings.create({
542
- registrationStartDate: new Date(),
543
- registrationEndDate: new Date(),
544
- startDate: new Date(),
545
- endDate: new Date(),
546
- oldPrices: [
547
- OldGroupPrices_1.OldGroupPrices.create({
548
- prices: [
549
- OldGroupPrices_1.OldGroupPrice.create({
550
- price: 70,
551
- reducedPrice: 10,
552
- }),
553
- OldGroupPrices_1.OldGroupPrice.create({
554
- price: 40,
555
- reducedPrice: 10,
556
- }),
557
- OldGroupPrices_1.OldGroupPrice.create({
558
- price: 20,
559
- reducedPrice: 10,
560
- })
561
- ]
562
- })
563
- ]
564
- })
565
- });
566
- const category = GroupCategory_1.GroupCategory.create({
567
- groupIds: [group1.id, group2.id, group3.id],
568
- settings: GroupCategory_1.GroupCategorySettings.create({
569
- maximumRegistrations: 1
570
- })
571
- });
572
- const bart = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
573
- details: MemberDetails_1.MemberDetails.create({}),
574
- users: [],
575
- registrations: [
576
- Registration_1.Registration.create({
577
- organizationId: group1.organizationId,
578
- group: group1,
579
- cycle: group1.cycle,
580
- registeredAt: new Date()
581
- })
582
- ]
583
- });
584
- const alice = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
585
- details: MemberDetails_1.MemberDetails.create({}),
586
- users: [],
587
- registrations: [
588
- Registration_1.Registration.create({
589
- organizationId: group1.organizationId,
590
- group: group1,
591
- cycle: group1.cycle,
592
- registeredAt: new Date()
593
- })
594
- ]
595
- });
596
- const tom = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
597
- details: MemberDetails_1.MemberDetails.create({}),
598
- users: [],
599
- registrations: []
600
- });
601
- const cart = OldRegisterCart_1.OldIDRegisterCart.create({});
602
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
603
- groupId: group2.id,
604
- memberId: alice.id,
605
- reduced: false,
606
- waitingList: false
607
- }));
608
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
609
- groupId: group3.id,
610
- memberId: tom.id,
611
- reduced: false,
612
- waitingList: false
613
- }));
614
- cart.calculatePrices([bart, alice, tom], [group1, group2, group3], [category], defaultPaymentConfiguration);
615
- expect(cart.items).toHaveLength(2);
616
- const calculatedTom = cart.items.find(i => i.memberId === tom.id);
617
- expect(calculatedTom).toMatchObject({
618
- calculatedPrice: 20
619
- });
620
- // Try in different order
621
- const cached = cart.price;
622
- cart.calculatePrices([tom, bart, alice], [group2, group1, group3], [category], defaultPaymentConfiguration);
623
- expect(cart.price).toEqual(cached);
624
- });
625
- test("With reduced price", () => {
626
- const group1 = Group_1.Group.create({
627
- organizationId: 'test',
628
- periodId: 'test',
629
- settings: GroupSettings_1.GroupSettings.create({
630
- registrationStartDate: new Date(),
631
- registrationEndDate: new Date(),
632
- startDate: new Date(),
633
- endDate: new Date(),
634
- oldPrices: [
635
- OldGroupPrices_1.OldGroupPrices.create({
636
- prices: [
637
- OldGroupPrices_1.OldGroupPrice.create({
638
- price: 60,
639
- reducedPrice: 50,
640
- }),
641
- OldGroupPrices_1.OldGroupPrice.create({
642
- price: 40,
643
- }),
644
- OldGroupPrices_1.OldGroupPrice.create({
645
- price: 20,
646
- })
647
- ]
648
- })
649
- ]
650
- })
651
- });
652
- const category = GroupCategory_1.GroupCategory.create({
653
- groupIds: [group1.id],
654
- settings: GroupCategory_1.GroupCategorySettings.create({
655
- maximumRegistrations: 1
656
- })
657
- });
658
- const bart = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
659
- details: MemberDetails_1.MemberDetails.create({}),
660
- users: [],
661
- registrations: []
662
- });
663
- const alice = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
664
- details: MemberDetails_1.MemberDetails.create({}),
665
- users: [],
666
- registrations: []
667
- });
668
- const tom = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
669
- details: MemberDetails_1.MemberDetails.create({}),
670
- users: [],
671
- registrations: []
672
- });
673
- const cart = OldRegisterCart_1.OldIDRegisterCart.create({});
674
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
675
- groupId: group1.id,
676
- memberId: bart.id,
677
- reduced: false,
678
- waitingList: false
679
- }));
680
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
681
- groupId: group1.id,
682
- memberId: alice.id,
683
- reduced: true,
684
- waitingList: false
685
- }));
686
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
687
- groupId: group1.id,
688
- memberId: tom.id,
689
- reduced: false,
690
- waitingList: false
691
- }));
692
- cart.calculatePrices([bart, alice, tom], [group1], [category], defaultPaymentConfiguration);
693
- expect(cart.items).toHaveLength(3);
694
- // Check if Bart got the cheapest price
695
- const calculatedBart = cart.items.find(i => i.memberId === bart.id);
696
- expect(calculatedBart).toMatchObject({
697
- calculatedPrice: 40
698
- });
699
- // Alice is the only one with the reduced price, so plan it as the first memebr without family discount
700
- const calculatedAlice = cart.items.find(i => i.memberId === alice.id);
701
- expect(calculatedAlice).toMatchObject({
702
- calculatedPrice: 50
703
- });
704
- const calculatedTom = cart.items.find(i => i.memberId === tom.id);
705
- expect(calculatedTom).toMatchObject({
706
- calculatedPrice: 20
707
- });
708
- // Try in different order
709
- const cached = cart.price;
710
- cart.calculatePrices([tom, bart, alice], [group1], [category], defaultPaymentConfiguration);
711
- expect(cart.price).toEqual(cached);
712
- });
713
- test("Group only discounts", () => {
714
- const group1 = Group_1.Group.create({
715
- organizationId: 'test',
716
- periodId: 'test',
717
- settings: GroupSettings_1.GroupSettings.create({
718
- registrationStartDate: new Date(),
719
- registrationEndDate: new Date(),
720
- startDate: new Date(),
721
- endDate: new Date(),
722
- oldPrices: [
723
- OldGroupPrices_1.OldGroupPrices.create({
724
- onlySameGroup: true,
725
- prices: [
726
- OldGroupPrices_1.OldGroupPrice.create({
727
- price: 60,
728
- reducedPrice: 10,
729
- }),
730
- OldGroupPrices_1.OldGroupPrice.create({
731
- price: 40,
732
- reducedPrice: 10,
733
- }),
734
- OldGroupPrices_1.OldGroupPrice.create({
735
- price: 20,
736
- reducedPrice: 10,
737
- })
738
- ]
739
- })
740
- ]
741
- })
742
- });
743
- //
744
- const group2 = Group_1.Group.create({
745
- organizationId: 'test',
746
- periodId: 'test',
747
- settings: GroupSettings_1.GroupSettings.create({
748
- registrationStartDate: new Date(),
749
- registrationEndDate: new Date(),
750
- startDate: new Date(),
751
- endDate: new Date(),
752
- oldPrices: [
753
- OldGroupPrices_1.OldGroupPrices.create({
754
- onlySameGroup: true,
755
- prices: [
756
- OldGroupPrices_1.OldGroupPrice.create({
757
- price: 60,
758
- reducedPrice: 10,
759
- }),
760
- OldGroupPrices_1.OldGroupPrice.create({
761
- price: 40,
762
- reducedPrice: 10,
763
- }),
764
- OldGroupPrices_1.OldGroupPrice.create({
765
- price: 10
766
- })
767
- ]
768
- })
769
- ]
770
- })
771
- });
772
- const category = GroupCategory_1.GroupCategory.create({
773
- groupIds: [group1.id, group2.id],
774
- settings: GroupCategory_1.GroupCategorySettings.create({
775
- maximumRegistrations: null
776
- })
777
- });
778
- const bart = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
779
- details: MemberDetails_1.MemberDetails.create({}),
780
- users: [],
781
- registrations: [
782
- Registration_1.Registration.create({
783
- organizationId: group2.organizationId,
784
- group: group2,
785
- cycle: group2.cycle,
786
- registeredAt: new Date()
787
- })
788
- ]
789
- });
790
- const alice = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
791
- details: MemberDetails_1.MemberDetails.create({}),
792
- users: [],
793
- registrations: []
794
- });
795
- const tom = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
796
- details: MemberDetails_1.MemberDetails.create({}),
797
- users: [],
798
- registrations: []
799
- });
800
- const cart = OldRegisterCart_1.OldIDRegisterCart.create({});
801
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
802
- groupId: group1.id,
803
- memberId: bart.id,
804
- reduced: false,
805
- waitingList: false
806
- }));
807
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
808
- groupId: group2.id,
809
- memberId: alice.id,
810
- reduced: false,
811
- waitingList: false
812
- }));
813
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
814
- groupId: group2.id,
815
- memberId: tom.id,
816
- reduced: false,
817
- waitingList: false
818
- }));
819
- cart.calculatePrices([bart, alice, tom], [group1, group2], [category], defaultPaymentConfiguration);
820
- expect(cart.items).toHaveLength(3);
821
- // Check if Bart got the cheapest price
822
- const calculatedBart = cart.items.find(i => i.memberId === bart.id);
823
- expect(calculatedBart).toMatchObject({
824
- calculatedPrice: 60
825
- });
826
- const calculatedAlice = cart.items.find(i => i.memberId === alice.id);
827
- expect(calculatedAlice).toMatchObject({
828
- calculatedPrice: 40
829
- });
830
- const calculatedTom = cart.items.find(i => i.memberId === tom.id);
831
- expect(calculatedTom).toMatchObject({
832
- calculatedPrice: 10
833
- });
834
- // Try in different order
835
- const cached = cart.price;
836
- cart.calculatePrices([tom, bart, alice], [group2, group1], [category], defaultPaymentConfiguration);
837
- expect(cart.price).toEqual(cached);
838
- });
839
- test("Discount if same member registers for multiple groups", () => {
840
- const group1 = Group_1.Group.create({
841
- organizationId: 'test',
842
- periodId: 'test',
843
- settings: GroupSettings_1.GroupSettings.create({
844
- registrationStartDate: new Date(),
845
- registrationEndDate: new Date(),
846
- startDate: new Date(),
847
- endDate: new Date(),
848
- oldPrices: [
849
- OldGroupPrices_1.OldGroupPrices.create({
850
- sameMemberOnlyDiscount: true,
851
- prices: [
852
- OldGroupPrices_1.OldGroupPrice.create({
853
- price: 60,
854
- }),
855
- OldGroupPrices_1.OldGroupPrice.create({
856
- price: 40,
857
- }),
858
- OldGroupPrices_1.OldGroupPrice.create({
859
- price: 20,
860
- }),
861
- OldGroupPrices_1.OldGroupPrice.create({
862
- price: 10,
863
- })
864
- ]
865
- })
866
- ]
867
- })
868
- });
869
- //
870
- const group2 = Group_1.Group.create({
871
- organizationId: 'test',
872
- periodId: 'test',
873
- settings: GroupSettings_1.GroupSettings.create({
874
- registrationStartDate: new Date(),
875
- registrationEndDate: new Date(),
876
- startDate: new Date(),
877
- endDate: new Date(),
878
- oldPrices: [
879
- OldGroupPrices_1.OldGroupPrices.create({
880
- sameMemberOnlyDiscount: true,
881
- prices: [
882
- OldGroupPrices_1.OldGroupPrice.create({
883
- price: 100,
884
- }),
885
- OldGroupPrices_1.OldGroupPrice.create({
886
- price: 200,
887
- })
888
- ]
889
- })
890
- ]
891
- })
892
- });
893
- const category = GroupCategory_1.GroupCategory.create({
894
- groupIds: [group1.id, group2.id],
895
- settings: GroupCategory_1.GroupCategorySettings.create({
896
- maximumRegistrations: null
897
- })
898
- });
899
- const bart = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
900
- details: MemberDetails_1.MemberDetails.create({}),
901
- users: [],
902
- registrations: [
903
- Registration_1.Registration.create({
904
- organizationId: group2.organizationId,
905
- group: group2,
906
- cycle: group2.cycle,
907
- registeredAt: new Date()
908
- })
909
- ]
910
- });
911
- const alice = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
912
- details: MemberDetails_1.MemberDetails.create({}),
913
- users: [],
914
- registrations: []
915
- });
916
- const cart = OldRegisterCart_1.OldIDRegisterCart.create({});
917
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
918
- groupId: group1.id,
919
- memberId: bart.id,
920
- reduced: false,
921
- waitingList: false
922
- }));
923
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
924
- groupId: group2.id,
925
- memberId: alice.id,
926
- reduced: false,
927
- waitingList: false
928
- }));
929
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
930
- groupId: group1.id,
931
- memberId: alice.id,
932
- reduced: false,
933
- waitingList: false
934
- }));
935
- cart.calculatePrices([bart, alice], [group1, group2], [category], defaultPaymentConfiguration);
936
- expect(cart.items).toHaveLength(3);
937
- // Check if Bart got the cheapest price
938
- const calculatedBart = cart.items.find(i => i.memberId === bart.id);
939
- expect(calculatedBart).toMatchObject({
940
- calculatedPrice: 40
941
- });
942
- const calculatedAlice = cart.items.find(i => i.memberId === alice.id && i.groupId === group2.id);
943
- expect(calculatedAlice).toMatchObject({
944
- calculatedPrice: 100
945
- });
946
- const calculatedAlice2 = cart.items.find(i => i.memberId === alice.id && i.groupId === group1.id);
947
- expect(calculatedAlice2).toMatchObject({
948
- calculatedPrice: 40
949
- });
950
- // Try in different order
951
- const cached = cart.price;
952
- cart.calculatePrices([bart, alice], [group2, group1], [category], defaultPaymentConfiguration);
953
- expect(cart.price).toEqual(cached);
954
- });
955
- test("Combination of group and category based discounts", () => {
956
- const group1 = Group_1.Group.create({
957
- organizationId: 'test',
958
- periodId: 'test',
959
- settings: GroupSettings_1.GroupSettings.create({
960
- registrationStartDate: new Date(),
961
- registrationEndDate: new Date(),
962
- startDate: new Date(),
963
- endDate: new Date(),
964
- oldPrices: [
965
- OldGroupPrices_1.OldGroupPrices.create({
966
- sameMemberOnlyDiscount: false,
967
- onlySameGroup: true,
968
- prices: [
969
- OldGroupPrices_1.OldGroupPrice.create({
970
- price: 60,
971
- }),
972
- OldGroupPrices_1.OldGroupPrice.create({
973
- price: 40,
974
- }),
975
- OldGroupPrices_1.OldGroupPrice.create({
976
- price: 20,
977
- }),
978
- OldGroupPrices_1.OldGroupPrice.create({
979
- price: 10,
980
- })
981
- ]
982
- })
983
- ]
984
- })
985
- });
986
- //
987
- const group2 = Group_1.Group.create({
988
- organizationId: 'test',
989
- periodId: 'test',
990
- settings: GroupSettings_1.GroupSettings.create({
991
- registrationStartDate: new Date(),
992
- registrationEndDate: new Date(),
993
- startDate: new Date(),
994
- endDate: new Date(),
995
- oldPrices: [
996
- OldGroupPrices_1.OldGroupPrices.create({
997
- sameMemberOnlyDiscount: true,
998
- onlySameGroup: false,
999
- prices: [
1000
- OldGroupPrices_1.OldGroupPrice.create({
1001
- price: 100,
1002
- }),
1003
- OldGroupPrices_1.OldGroupPrice.create({
1004
- price: 50,
1005
- }),
1006
- OldGroupPrices_1.OldGroupPrice.create({
1007
- price: 10,
1008
- })
1009
- ]
1010
- })
1011
- ]
1012
- })
1013
- });
1014
- const category = GroupCategory_1.GroupCategory.create({
1015
- groupIds: [group1.id, group2.id],
1016
- settings: GroupCategory_1.GroupCategorySettings.create({
1017
- maximumRegistrations: null
1018
- })
1019
- });
1020
- const bart = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
1021
- details: MemberDetails_1.MemberDetails.create({}),
1022
- users: [],
1023
- registrations: [
1024
- Registration_1.Registration.create({
1025
- organizationId: group2.organizationId,
1026
- group: group2,
1027
- cycle: group2.cycle,
1028
- registeredAt: new Date()
1029
- })
1030
- ]
1031
- });
1032
- const alice = MemberWithRegistrationsBlob_1.MemberWithRegistrationsBlob.create({
1033
- details: MemberDetails_1.MemberDetails.create({}),
1034
- users: [],
1035
- registrations: []
1036
- });
1037
- const cart = OldRegisterCart_1.OldIDRegisterCart.create({});
1038
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
1039
- groupId: group1.id,
1040
- memberId: bart.id,
1041
- reduced: false,
1042
- waitingList: false
1043
- }));
1044
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
1045
- groupId: group2.id,
1046
- memberId: alice.id,
1047
- reduced: false,
1048
- waitingList: false
1049
- }));
1050
- cart.items.push(OldRegisterItem_1.OldIDRegisterItem.create({
1051
- groupId: group1.id,
1052
- memberId: alice.id,
1053
- reduced: false,
1054
- waitingList: false
1055
- }));
1056
- cart.calculatePrices([bart, alice], [group1, group2], [category], defaultPaymentConfiguration);
1057
- expect(cart.items).toHaveLength(3);
1058
- const calculatedBart = cart.items.find(i => i.memberId === bart.id);
1059
- expect(calculatedBart).toMatchObject({
1060
- calculatedPrice: 60
1061
- });
1062
- const calculatedAlice = cart.items.find(i => i.memberId === alice.id && i.groupId === group2.id);
1063
- expect(calculatedAlice).toMatchObject({
1064
- calculatedPrice: 50
1065
- });
1066
- const calculatedAlice2 = cart.items.find(i => i.memberId === alice.id && i.groupId === group1.id);
1067
- expect(calculatedAlice2).toMatchObject({
1068
- calculatedPrice: 40
1069
- });
1070
- // Try in different order
1071
- const cached = cart.price;
1072
- cart.calculatePrices([bart, alice], [group2, group1], [category], defaultPaymentConfiguration);
1073
- expect(cart.price).toEqual(cached);
1074
- });
1075
- });
1076
- //# sourceMappingURL=RegisterCartPriceCalculator.test.js.map