@roomstay/frontend 2.6.31 → 2.6.33

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 (235) hide show
  1. package/dist/166.bundle.js +1 -1
  2. package/dist/279.bundle.js +1 -1
  3. package/dist/370.bundle.js +1 -1
  4. package/dist/449.bundle.js +1 -1
  5. package/dist/586.bundle.js +1 -1
  6. package/dist/736.bundle.js +1 -1
  7. package/dist/873.bundle.js +1 -1
  8. package/dist/903.bundle.js +1 -1
  9. package/dist/927.bundle.js +1 -1
  10. package/dist/972.bundle.js +1 -1
  11. package/dist/978.bundle.js +1 -1
  12. package/dist/e2e/canChangeCurrency.spec.d.ts +1 -0
  13. package/dist/e2e/canChangeCurrency.spec.js +59 -0
  14. package/dist/e2e/canChangeCurrency.spec.js.map +1 -0
  15. package/dist/e2e/canCheckout.spec.d.ts +1 -0
  16. package/dist/e2e/canCheckout.spec.js +205 -0
  17. package/dist/e2e/canCheckout.spec.js.map +1 -0
  18. package/dist/e2e/canViewFindReservationsPage.spec.d.ts +1 -0
  19. package/dist/e2e/canViewFindReservationsPage.spec.js +37 -0
  20. package/dist/e2e/canViewFindReservationsPage.spec.js.map +1 -0
  21. package/dist/e2e/canViewHotelnfoPage.spec.d.ts +1 -0
  22. package/dist/e2e/canViewHotelnfoPage.spec.js +42 -0
  23. package/dist/e2e/canViewHotelnfoPage.spec.js.map +1 -0
  24. package/dist/e2e/frontendTestConfigs.d.ts +7 -0
  25. package/dist/e2e/frontendTestConfigs.js +31 -0
  26. package/dist/e2e/frontendTestConfigs.js.map +1 -0
  27. package/dist/e2e/frontendTestData.d.ts +15 -0
  28. package/dist/e2e/frontendTestData.js +18 -0
  29. package/dist/e2e/frontendTestData.js.map +1 -0
  30. package/dist/e2e/goBackAndCheckoutAgain.spec.js +1 -0
  31. package/dist/e2e/goBackAndCheckoutAgain.spec.js.map +1 -1
  32. package/dist/e2e/helpers/playwrightHelpers.d.ts +2 -0
  33. package/dist/e2e/helpers/playwrightHelpers.js +27 -0
  34. package/dist/e2e/helpers/playwrightHelpers.js.map +1 -0
  35. package/dist/main.bundle.js +1 -1
  36. package/dist/src/api/AvailabilityAPI.d.ts +6 -5
  37. package/dist/src/api/AvailabilityAPI.js +24 -30
  38. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  39. package/dist/src/api/HotelAPI.js +3 -0
  40. package/dist/src/api/HotelAPI.js.map +1 -1
  41. package/dist/src/components/generic/HtmlContentViewer.d.ts +3 -0
  42. package/dist/src/components/generic/HtmlContentViewer.js +41 -0
  43. package/dist/src/components/generic/HtmlContentViewer.js.map +1 -0
  44. package/dist/src/components/generic/Icon/Icon.d.ts +5 -93
  45. package/dist/src/components/generic/Icon/Icon.js +6 -124
  46. package/dist/src/components/generic/Icon/Icon.js.map +1 -1
  47. package/dist/src/components/generic/InputGroup/InputGroup.js +1 -0
  48. package/dist/src/components/generic/InputGroup/InputGroup.js.map +1 -1
  49. package/dist/src/components/generic/InputGroup/InputGroup.types.d.ts +1 -1
  50. package/dist/src/components/generic/InputGroup/InputGroup.types.js.map +1 -1
  51. package/dist/src/components/generic/ScrollToTop.js +10 -1
  52. package/dist/src/components/generic/ScrollToTop.js.map +1 -1
  53. package/dist/src/components/generic/date/DatePicker.js +4 -3
  54. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  55. package/dist/src/components/generic/date/DatePickerDay.js +4 -3
  56. package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
  57. package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.d.ts +4 -0
  58. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/EmailAndFullnameMemberModal.js +8 -4
  59. package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.js.map +1 -0
  60. package/dist/src/components/members/SignInModal/EmailPasswordMemberModal.d.ts +4 -0
  61. package/dist/src/components/members/SignInModal/EmailPasswordMemberModal.js +29 -0
  62. package/dist/src/components/members/SignInModal/EmailPasswordMemberModal.js.map +1 -0
  63. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/ExternalMemberModal.d.ts +8 -3
  64. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/ExternalMemberModal.js +24 -23
  65. package/dist/src/components/members/SignInModal/ExternalMemberModal.js.map +1 -0
  66. package/dist/src/components/members/SignInModal/FamilyNameMemberModal.d.ts +4 -0
  67. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/FamilyNameMemberModal.js +6 -4
  68. package/dist/src/components/members/SignInModal/FamilyNameMemberModal.js.map +1 -0
  69. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/InternalMemberSignInModal.d.ts +1 -0
  70. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/InternalMemberSignInModal.js +28 -39
  71. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js.map +1 -0
  72. package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/InternalMemberSignInModal.types.d.ts +1 -1
  73. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.types.js.map +1 -0
  74. package/dist/src/components/members/SignInModal/MemberSignInModal.js +86 -0
  75. package/dist/src/components/members/SignInModal/MemberSignInModal.js.map +1 -0
  76. package/dist/src/components/steps/MinimumNightStayPill.js +2 -2
  77. package/dist/src/components/steps/MinimumNightStayPill.js.map +1 -1
  78. package/dist/src/components/steps/confirmation/RoomContactDetails.js +74 -6
  79. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  80. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  81. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js +3 -2
  82. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js.map +1 -1
  83. package/dist/src/components/steps/date/PeoplePicker.js +6 -4
  84. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  85. package/dist/src/components/steps/date/PeoplePickerRow.d.ts +1 -0
  86. package/dist/src/components/steps/date/PeoplePickerRow.js +14 -4
  87. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  88. package/dist/src/components/steps/date/StepDatePricePerRoom.js +4 -3
  89. package/dist/src/components/steps/date/StepDatePricePerRoom.js.map +1 -1
  90. package/dist/src/components/steps/hotel/HotelCard.js +8 -6
  91. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  92. package/dist/src/components/steps/hotel/HotelCardModal.js +8 -6
  93. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  94. package/dist/src/components/steps/hotel/HotelInfoPerksRow.js +3 -5
  95. package/dist/src/components/steps/hotel/HotelInfoPerksRow.js.map +1 -1
  96. package/dist/src/components/steps/room/AvailableUpgradesModal.js +3 -3
  97. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  98. package/dist/src/components/steps/room/LargeRoomCard.js +3 -1
  99. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  100. package/dist/src/components/steps/room/NoRoomsFoundBlock.js +2 -2
  101. package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
  102. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +4 -4
  103. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  104. package/dist/src/components/steps/room/RoomModalPerkRow.js +3 -5
  105. package/dist/src/components/steps/room/RoomModalPerkRow.js.map +1 -1
  106. package/dist/src/components/steps/room/StepRoomBestRateAlert.js +13 -10
  107. package/dist/src/components/steps/room/StepRoomBestRateAlert.js.map +1 -1
  108. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +5 -1
  109. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
  110. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +13 -2
  111. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
  112. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +4 -6
  113. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  114. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +11 -10
  115. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  116. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +1 -1
  117. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  118. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js +3 -2
  119. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js.map +1 -1
  120. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +3 -1
  121. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
  122. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +3 -2
  123. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  124. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.js.map +1 -1
  125. package/dist/src/components/summary/BEMobileSummaryModal.js +1 -1
  126. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  127. package/dist/src/components/summary/BESummary.js +1 -1
  128. package/dist/src/components/summary/BESummary.js.map +1 -1
  129. package/dist/src/components/summary/BESummaryPerkBlock.js +4 -3
  130. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  131. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +18 -11
  132. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
  133. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +21 -12
  134. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  135. package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.d.ts +8 -1
  136. package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.js.map +1 -1
  137. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js +5 -0
  138. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js.map +1 -1
  139. package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +1 -1
  140. package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
  141. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +40 -29
  142. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  143. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +8 -4
  144. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  145. package/dist/src/contexts/HotelOverridesContext.js +8 -0
  146. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  147. package/dist/src/engines/BaseEngine.d.ts +4 -1
  148. package/dist/src/engines/BaseEngine.js +6 -1
  149. package/dist/src/engines/BaseEngine.js.map +1 -1
  150. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +2 -2
  151. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  152. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +1 -1
  153. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
  154. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js +2 -2
  155. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -1
  156. package/dist/src/hooks/UpdateQueryParameters.js.map +1 -1
  157. package/dist/src/hooks/useCalendarNightStay.js +6 -4
  158. package/dist/src/hooks/useCalendarNightStay.js.map +1 -1
  159. package/dist/src/hooks/useSignedInMember.d.ts +7 -0
  160. package/dist/src/hooks/{useExternalMember.js → useSignedInMember.js} +7 -5
  161. package/dist/src/hooks/useSignedInMember.js.map +1 -0
  162. package/dist/src/index.d.ts +2 -1
  163. package/dist/src/index.js +6 -4
  164. package/dist/src/index.js.map +1 -1
  165. package/dist/src/models/Api/HotelDTO.d.ts +1 -1
  166. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  167. package/dist/src/models/Api/HotelOverrideDTO.d.ts +15 -7
  168. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  169. package/dist/src/models/Api/ReservationsDTO.d.ts +1 -0
  170. package/dist/src/models/Api/ReservationsDTO.js.map +1 -1
  171. package/dist/src/models/BasketRow.d.ts +16 -1
  172. package/dist/src/models/BasketRow.js +32 -2
  173. package/dist/src/models/BasketRow.js.map +1 -1
  174. package/dist/src/models/Client/Hotel/Hotel.d.ts +8 -2
  175. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  176. package/dist/src/models/Client/Hotel/HotelPerk.d.ts +1 -1
  177. package/dist/src/models/Client/Hotel/HotelPerk.js.map +1 -1
  178. package/dist/src/models/Confirmation.d.ts +5 -0
  179. package/dist/src/models/Confirmation.js +5 -1
  180. package/dist/src/models/Confirmation.js.map +1 -1
  181. package/dist/src/models/LocalStorageModel.d.ts +7 -0
  182. package/dist/src/models/LocalStorageModel.js +3 -0
  183. package/dist/src/models/LocalStorageModel.js.map +1 -0
  184. package/dist/src/models/Promotion/IPromotion.type.d.ts +2 -0
  185. package/dist/src/models/Promotion/IPromotion.type.js.map +1 -1
  186. package/dist/src/pages/findReservation/FindReservationResults.js +22 -4
  187. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  188. package/dist/src/pages/hotel/HotelInfo.js +2 -2
  189. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  190. package/dist/src/providers/RoomstayThemeEngine.js +1 -1
  191. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  192. package/dist/src/providers/storage/LocalStorageProvider.d.ts +9 -14
  193. package/dist/src/providers/storage/LocalStorageProvider.js +19 -97
  194. package/dist/src/providers/storage/LocalStorageProvider.js.map +1 -1
  195. package/dist/src/providers/{SessionProvider.d.ts → storage/SessionProvider.d.ts} +1 -1
  196. package/dist/src/providers/{SessionProvider.js → storage/SessionProvider.js} +13 -12
  197. package/dist/src/providers/storage/SessionProvider.js.map +1 -0
  198. package/dist/src/providers/storage/StorageProvider.d.ts +14 -8
  199. package/dist/src/providers/storage/StorageProvider.js +94 -7
  200. package/dist/src/providers/storage/StorageProvider.js.map +1 -1
  201. package/dist/src/translations/Translation.d.ts +9 -0
  202. package/dist/src/translations/Translation.js +9 -0
  203. package/dist/src/translations/Translation.js.map +1 -1
  204. package/dist/src/translations/languages/en-gb.js +9 -0
  205. package/dist/src/translations/languages/en-gb.js.map +1 -1
  206. package/dist/src/util/CalendarHelper.d.ts +1 -0
  207. package/dist/src/util/CalendarHelper.js +16 -1
  208. package/dist/src/util/CalendarHelper.js.map +1 -1
  209. package/dist/src/util/EventsHelper.js +2 -2
  210. package/dist/src/util/EventsHelper.js.map +1 -1
  211. package/dist/src/util/HotelPerkHelper.d.ts +3 -0
  212. package/dist/src/util/HotelPerkHelper.js +46 -0
  213. package/dist/src/util/HotelPerkHelper.js.map +1 -0
  214. package/dist/test.bundle.js +1 -1
  215. package/dist/tests/jest/providers/SessionProvider.test.js +7 -7
  216. package/dist/tests/jest/providers/SessionProvider.test.js.map +1 -1
  217. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js +17 -28
  218. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js.map +1 -1
  219. package/dist/vendors.bundle.js +1 -1
  220. package/dist/vendors.bundle.js.LICENSE.txt +9 -1
  221. package/package.json +9 -4
  222. package/dist/src/components/steps/room/MemberSignInModal/EmailAndFullnameMemberModal.d.ts +0 -4
  223. package/dist/src/components/steps/room/MemberSignInModal/EmailAndFullnameMemberModal.js.map +0 -1
  224. package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.js.map +0 -1
  225. package/dist/src/components/steps/room/MemberSignInModal/FamilyNameMemberModal.d.ts +0 -8
  226. package/dist/src/components/steps/room/MemberSignInModal/FamilyNameMemberModal.js.map +0 -1
  227. package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.js.map +0 -1
  228. package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.types.js.map +0 -1
  229. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +0 -62
  230. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +0 -1
  231. package/dist/src/hooks/useExternalMember.d.ts +0 -5
  232. package/dist/src/hooks/useExternalMember.js.map +0 -1
  233. package/dist/src/providers/SessionProvider.js.map +0 -1
  234. /package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/InternalMemberSignInModal.types.js +0 -0
  235. /package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/MemberSignInModal.d.ts +0 -0
@@ -18,8 +18,8 @@ const BasketRow_1 = __importDefault(require("../../../src/models/BasketRow"));
18
18
  const Room_1 = require("../../../src/models/Room/Room");
19
19
  const RoomRate_1 = require("../../../src/models/Room/RoomRate");
20
20
  const RoomstaySession_1 = require("../../../src/models/RoomstaySession");
21
- const SessionProvider_1 = __importDefault(require("../../../src/providers/SessionProvider"));
22
- const LocalStorageProvider_1 = require("../../../src/providers/storage/LocalStorageProvider");
21
+ const SessionProvider_1 = __importDefault(require("../../../src/providers/storage/SessionProvider"));
22
+ const StorageProvider_1 = require("../../../src/providers/storage/StorageProvider");
23
23
  describe('Session Provider Tests', () => {
24
24
  let session;
25
25
  beforeEach(() => {
@@ -35,9 +35,9 @@ describe('Session Provider Tests', () => {
35
35
  });
36
36
  it('re-uses a session if an ID is passed through', () => __awaiter(void 0, void 0, void 0, function* () {
37
37
  const sessionId = new Date().getTime();
38
- const sessionStorageProvider = new LocalStorageProvider_1.LocalStorageProvider(sessionStorage);
38
+ const sessionStorageProvider = new StorageProvider_1.StorageProvider(sessionStorage);
39
39
  yield sessionStorageProvider.write('currentSession', sessionId);
40
- const localStorageProvider = new LocalStorageProvider_1.LocalStorageProvider();
40
+ const localStorageProvider = new StorageProvider_1.StorageProvider();
41
41
  yield localStorageProvider.write(`session-${sessionId}`, { id: sessionId });
42
42
  const session = new SessionProvider_1.default();
43
43
  yield session.initialize(sessionId);
@@ -65,7 +65,7 @@ describe('Session Provider Tests', () => {
65
65
  }));
66
66
  it('loads and serializes an object from storage', () => __awaiter(void 0, void 0, void 0, function* () {
67
67
  const id = new Date().getTime();
68
- const storage = new LocalStorageProvider_1.LocalStorageProvider();
68
+ const storage = new StorageProvider_1.StorageProvider();
69
69
  const serializedSession = {
70
70
  id,
71
71
  startDate: '2020-12-24',
@@ -159,7 +159,7 @@ describe('Session Provider Tests', () => {
159
159
  basketRows: [],
160
160
  };
161
161
  yield session.saveSession(partialState);
162
- const storage = new LocalStorageProvider_1.LocalStorageProvider();
162
+ const storage = new StorageProvider_1.StorageProvider();
163
163
  const rawStore = yield storage.read(`session-${session.getCurrentSessionID()}`);
164
164
  expect(rawStore === null || rawStore === void 0 ? void 0 : rawStore.startDate).toBe((0, dayjs_1.default)().add(1, 'day').format(RoomstaySession_1.SERIALIZED_DATE_FORMAT));
165
165
  expect(rawStore === null || rawStore === void 0 ? void 0 : rawStore.endDate).toBe((0, dayjs_1.default)().add(3, 'day').format(RoomstaySession_1.SERIALIZED_DATE_FORMAT));
@@ -187,7 +187,7 @@ describe('Session Provider Tests', () => {
187
187
  basketRows: [basketRow, basketRow],
188
188
  };
189
189
  yield session.saveSession(partialState);
190
- const storage = new LocalStorageProvider_1.LocalStorageProvider();
190
+ const storage = new StorageProvider_1.StorageProvider();
191
191
  const rawStore = yield storage.read(`session-${session.getCurrentSessionID()}`);
192
192
  expect(rawStore === null || rawStore === void 0 ? void 0 : rawStore.basketRows.length).toBe(2);
193
193
  expect(rawStore === null || rawStore === void 0 ? void 0 : rawStore.basketRows[0].startDate).toBe(startDate.format(RoomstaySession_1.SERIALIZED_DATE_FORMAT));
@@ -1 +1 @@
1
- {"version":3,"file":"SessionProvider.test.js","sourceRoot":"/","sources":["tests/jest/providers/SessionProvider.test.ts"],"names":[],"mappings":"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","sourcesContent":["import '../../../src/api/BookingAPI';\n\nimport dayjs from 'dayjs';\n\nimport BasketRow from '../../../src/models/BasketRow';\nimport { Room } from '../../../src/models/Room/Room';\nimport { RoomRate } from '../../../src/models/Room/RoomRate';\nimport { RoomstaySession, SERIALIZED_DATE_FORMAT, SerializedRoomstaySession } from '../../../src/models/RoomstaySession';\nimport SessionProvider from '../../../src/providers/SessionProvider';\nimport { LocalStorageProvider } from '../../../src/providers/storage/LocalStorageProvider';\n\ndescribe('Session Provider Tests', () => {\n let session: SessionProvider;\n\n beforeEach(() => {\n localStorage.clear();\n sessionStorage.clear();\n\n session = new SessionProvider();\n });\n\n describe('Session Provider Initialization', () => {\n it('creates a new session id if none are passed through', () => {\n expect.assertions(1);\n\n const session = new SessionProvider();\n\n return session.setSessionID().then(() => expect(session.getCurrentSessionID()).toBeTruthy());\n });\n\n it('re-uses a session if an ID is passed through', async () => {\n const sessionId = new Date().getTime();\n\n const sessionStorageProvider = new LocalStorageProvider(sessionStorage);\n await sessionStorageProvider.write('currentSession', sessionId);\n\n const localStorageProvider = new LocalStorageProvider();\n await localStorageProvider.write(`session-${sessionId}`, { id: sessionId });\n\n const session = new SessionProvider();\n await session.initialize(sessionId);\n\n expect(session.getCurrentSessionID()).toBe(sessionId);\n });\n\n it('saves session to storage when created', async () => {\n const session = new SessionProvider();\n await session.initialize();\n\n const sessionId = session.getCurrentSessionID();\n\n expect(sessionId).toBeTruthy();\n expect(localStorage.getItem(`roomstay-session-${sessionId}`)).toBeTruthy();\n });\n\n it('sets the current session id in sessionStorage', async () => {\n const session = new SessionProvider();\n await session.initialize();\n\n const sessionId = session.getCurrentSessionID();\n\n expect(JSON.parse(sessionStorage.getItem('roomstay-currentSession') as string).value).toBe(sessionId);\n });\n });\n\n describe('Loading a Session Object', () => {\n it('by default returns a blank session record', async () => {\n const state = await session.getSession();\n\n expect(state).toBeTruthy();\n expect(state.id).toBeGreaterThan(1000000);\n });\n\n it('loads and serializes an object from storage', async () => {\n const id = new Date().getTime();\n\n const storage = new LocalStorageProvider();\n const serializedSession: SerializedRoomstaySession = {\n id,\n startDate: '2020-12-24',\n endDate: '2020-12-25',\n source: '',\n hotelID: '',\n step: 'StepRoom',\n basketRows: [],\n };\n\n storage.write(`session-${id}`, serializedSession);\n\n session = new SessionProvider();\n await session.initialize(id);\n\n const state = await session.getSession();\n\n expect(state.id).toBe(id);\n });\n\n it('loads basket rows correctly mapped', async () => {\n const id = new Date().getTime();\n\n const basketRow = new BasketRow();\n\n const room = new Room();\n room.code = 'TESTCODE';\n room.name = 'Test Room Code';\n\n const rate = new RoomRate();\n rate.code = 'TEST';\n rate.name = 'Test Rate';\n\n rate.setRoom(room);\n basketRow.setRate(rate);\n\n const startDate = dayjs().add(1, 'day');\n const endDate = dayjs().add(3, 'day');\n\n await session.saveSession({\n startDate,\n endDate,\n id: session.getCurrentSessionID(),\n source: '',\n hotelID: '',\n step: 'StepConfirmation',\n basketRows: [basketRow],\n });\n\n const loadedState = await session.getSession();\n\n expect(loadedState.startDate?.isSame(startDate, 'date')).toBeTruthy();\n expect(loadedState.endDate?.isSame(endDate, 'date')).toBeTruthy();\n expect(loadedState.basketRows.length).toBeGreaterThan(0);\n });\n });\n\n describe('Session Find and Retrieve', () => {\n it('finds all stored sessions in the storage', async () => {\n const startDate = dayjs().add(1, 'day');\n const endDate = dayjs().add(3, 'day');\n\n const room = new Room();\n const rate = new RoomRate();\n rate.setRoom(room);\n\n const basketRow = new BasketRow();\n basketRow.setAdults(2);\n basketRow.setStartDate(startDate);\n basketRow.setEndDate(endDate);\n basketRow.setRate(rate);\n\n const partialState: RoomstaySession = {\n id: session.getCurrentSessionID(),\n startDate,\n endDate,\n source: '',\n hotelID: '',\n step: 'StepRoom',\n basketRows: [basketRow, basketRow],\n };\n\n //First write the session, with the auto-generated ID\n await session.saveSession(partialState);\n\n //Then change over the sessionID\n await session.setSessionID(new Date().getTime());\n\n //And write another session down\n await session.saveSession({\n ...partialState,\n id: session.getCurrentSessionID(),\n });\n\n const allSessions = await session.getAllSessions();\n\n expect(allSessions.length).toBe(2);\n });\n });\n\n describe('Saving session to local storage', () => {\n it('breaks out of save if no save parameter is passed', async () => {\n const session = new SessionProvider();\n const serializeCall = jest.spyOn(session, 'serializeSession' as any);\n\n await session.saveSession(null as unknown as RoomstaySession);\n expect(serializeCall).not.toHaveBeenCalled();\n });\n\n it('saves current state in a serialized format', async () => {\n const partialState: RoomstaySession = {\n id: session.getCurrentSessionID(),\n startDate: dayjs().add(1, 'day'),\n endDate: dayjs().add(3, 'day'),\n source: '',\n hotelID: '',\n step: 'StepRoom',\n basketRows: [],\n };\n\n await session.saveSession(partialState);\n\n const storage = new LocalStorageProvider();\n\n const rawStore = await storage.read<SerializedRoomstaySession>(`session-${session.getCurrentSessionID()}`);\n\n expect(rawStore?.startDate).toBe(dayjs().add(1, 'day').format(SERIALIZED_DATE_FORMAT));\n expect(rawStore?.endDate).toBe(dayjs().add(3, 'day').format(SERIALIZED_DATE_FORMAT));\n expect(rawStore?.step).toBe('StepRoom');\n expect(rawStore?.basketRows.length).toBe(0);\n });\n\n it('saves current state of all basket rows correctly', async () => {\n const startDate = dayjs().add(1, 'day');\n const endDate = dayjs().add(3, 'day');\n\n const room = new Room();\n const rate = new RoomRate();\n rate.setRoom(room);\n\n const basketRow = new BasketRow();\n basketRow.setAdults(2);\n basketRow.setStartDate(startDate);\n basketRow.setEndDate(endDate);\n basketRow.setRate(rate);\n\n const partialState: RoomstaySession = {\n id: session.getCurrentSessionID(),\n startDate,\n endDate,\n step: 'StepRoom',\n source: '',\n hotelID: '123',\n basketRows: [basketRow, basketRow],\n };\n\n await session.saveSession(partialState);\n\n const storage = new LocalStorageProvider();\n const rawStore = await storage.read<SerializedRoomstaySession>(`session-${session.getCurrentSessionID()}`);\n\n expect(rawStore?.basketRows.length).toBe(2);\n expect(rawStore?.basketRows[0].startDate).toBe(startDate.format(SERIALIZED_DATE_FORMAT));\n });\n });\n\n describe('Updating individual values of the state', () => {\n it('updates only the changed values of the state', async () => {\n await session.initialize();\n\n const startDate = dayjs();\n await session.updateSession({ startDate });\n\n // Hacky way to get around the debounce timeout\n await (() =>\n new Promise((resolve) => {\n setTimeout(resolve, 350);\n }))();\n\n let state = await session.getSession();\n expect(state.startDate?.isSame(startDate, 'day')).toBeTruthy();\n\n const endDate = dayjs();\n\n const room = new Room();\n const rate = new RoomRate();\n rate.setRoom(room);\n\n const basketRow = new BasketRow();\n basketRow.setAdults(2);\n basketRow.setStartDate(startDate);\n basketRow.setEndDate(endDate);\n basketRow.setRate(rate);\n\n const basketRows = [basketRow];\n\n expect(state.basketRows.length).toBe(0);\n\n await session.updateSession({ endDate, basketRows });\n\n // Hacky way to get around the debounce timeout\n await (() =>\n new Promise((resolve) => {\n setTimeout(resolve, 350);\n }))();\n\n state = await session.getSession();\n expect(state.endDate?.isSame(endDate, 'day')).toBeTruthy();\n expect(state.basketRows.length).toBe(1);\n });\n });\n});\n"]}
1
+ {"version":3,"file":"SessionProvider.test.js","sourceRoot":"/","sources":["tests/jest/providers/SessionProvider.test.ts"],"names":[],"mappings":"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","sourcesContent":["import '../../../src/api/BookingAPI';\n\nimport dayjs from 'dayjs';\n\nimport BasketRow from '../../../src/models/BasketRow';\nimport { Room } from '../../../src/models/Room/Room';\nimport { RoomRate } from '../../../src/models/Room/RoomRate';\nimport { RoomstaySession, SERIALIZED_DATE_FORMAT, SerializedRoomstaySession } from '../../../src/models/RoomstaySession';\nimport SessionProvider from '../../../src/providers/storage/SessionProvider';\nimport { StorageProvider } from '../../../src/providers/storage/StorageProvider';\n\ndescribe('Session Provider Tests', () => {\n let session: SessionProvider;\n\n beforeEach(() => {\n localStorage.clear();\n sessionStorage.clear();\n\n session = new SessionProvider();\n });\n\n describe('Session Provider Initialization', () => {\n it('creates a new session id if none are passed through', () => {\n expect.assertions(1);\n\n const session = new SessionProvider();\n\n return session.setSessionID().then(() => expect(session.getCurrentSessionID()).toBeTruthy());\n });\n\n it('re-uses a session if an ID is passed through', async () => {\n const sessionId = new Date().getTime();\n\n const sessionStorageProvider = new StorageProvider(sessionStorage);\n await sessionStorageProvider.write('currentSession', sessionId);\n\n const localStorageProvider = new StorageProvider();\n await localStorageProvider.write(`session-${sessionId}`, { id: sessionId });\n\n const session = new SessionProvider();\n await session.initialize(sessionId);\n\n expect(session.getCurrentSessionID()).toBe(sessionId);\n });\n\n it('saves session to storage when created', async () => {\n const session = new SessionProvider();\n await session.initialize();\n\n const sessionId = session.getCurrentSessionID();\n\n expect(sessionId).toBeTruthy();\n expect(localStorage.getItem(`roomstay-session-${sessionId}`)).toBeTruthy();\n });\n\n it('sets the current session id in sessionStorage', async () => {\n const session = new SessionProvider();\n await session.initialize();\n\n const sessionId = session.getCurrentSessionID();\n\n expect(JSON.parse(sessionStorage.getItem('roomstay-currentSession') as string).value).toBe(sessionId);\n });\n });\n\n describe('Loading a Session Object', () => {\n it('by default returns a blank session record', async () => {\n const state = await session.getSession();\n\n expect(state).toBeTruthy();\n expect(state.id).toBeGreaterThan(1000000);\n });\n\n it('loads and serializes an object from storage', async () => {\n const id = new Date().getTime();\n\n const storage = new StorageProvider();\n const serializedSession: SerializedRoomstaySession = {\n id,\n startDate: '2020-12-24',\n endDate: '2020-12-25',\n source: '',\n hotelID: '',\n step: 'StepRoom',\n basketRows: [],\n };\n\n storage.write(`session-${id}`, serializedSession);\n\n session = new SessionProvider();\n await session.initialize(id);\n\n const state = await session.getSession();\n\n expect(state.id).toBe(id);\n });\n\n it('loads basket rows correctly mapped', async () => {\n const id = new Date().getTime();\n\n const basketRow = new BasketRow();\n\n const room = new Room();\n room.code = 'TESTCODE';\n room.name = 'Test Room Code';\n\n const rate = new RoomRate();\n rate.code = 'TEST';\n rate.name = 'Test Rate';\n\n rate.setRoom(room);\n basketRow.setRate(rate);\n\n const startDate = dayjs().add(1, 'day');\n const endDate = dayjs().add(3, 'day');\n\n await session.saveSession({\n startDate,\n endDate,\n id: session.getCurrentSessionID(),\n source: '',\n hotelID: '',\n step: 'StepConfirmation',\n basketRows: [basketRow],\n });\n\n const loadedState = await session.getSession();\n\n expect(loadedState.startDate?.isSame(startDate, 'date')).toBeTruthy();\n expect(loadedState.endDate?.isSame(endDate, 'date')).toBeTruthy();\n expect(loadedState.basketRows.length).toBeGreaterThan(0);\n });\n });\n\n describe('Session Find and Retrieve', () => {\n it('finds all stored sessions in the storage', async () => {\n const startDate = dayjs().add(1, 'day');\n const endDate = dayjs().add(3, 'day');\n\n const room = new Room();\n const rate = new RoomRate();\n rate.setRoom(room);\n\n const basketRow = new BasketRow();\n basketRow.setAdults(2);\n basketRow.setStartDate(startDate);\n basketRow.setEndDate(endDate);\n basketRow.setRate(rate);\n\n const partialState: RoomstaySession = {\n id: session.getCurrentSessionID(),\n startDate,\n endDate,\n source: '',\n hotelID: '',\n step: 'StepRoom',\n basketRows: [basketRow, basketRow],\n };\n\n //First write the session, with the auto-generated ID\n await session.saveSession(partialState);\n\n //Then change over the sessionID\n await session.setSessionID(new Date().getTime());\n\n //And write another session down\n await session.saveSession({\n ...partialState,\n id: session.getCurrentSessionID(),\n });\n\n const allSessions = await session.getAllSessions();\n\n expect(allSessions.length).toBe(2);\n });\n });\n\n describe('Saving session to local storage', () => {\n it('breaks out of save if no save parameter is passed', async () => {\n const session = new SessionProvider();\n const serializeCall = jest.spyOn(session, 'serializeSession' as any);\n\n await session.saveSession(null as unknown as RoomstaySession);\n expect(serializeCall).not.toHaveBeenCalled();\n });\n\n it('saves current state in a serialized format', async () => {\n const partialState: RoomstaySession = {\n id: session.getCurrentSessionID(),\n startDate: dayjs().add(1, 'day'),\n endDate: dayjs().add(3, 'day'),\n source: '',\n hotelID: '',\n step: 'StepRoom',\n basketRows: [],\n };\n\n await session.saveSession(partialState);\n\n const storage = new StorageProvider();\n\n const rawStore = await storage.read<SerializedRoomstaySession>(`session-${session.getCurrentSessionID()}`);\n\n expect(rawStore?.startDate).toBe(dayjs().add(1, 'day').format(SERIALIZED_DATE_FORMAT));\n expect(rawStore?.endDate).toBe(dayjs().add(3, 'day').format(SERIALIZED_DATE_FORMAT));\n expect(rawStore?.step).toBe('StepRoom');\n expect(rawStore?.basketRows.length).toBe(0);\n });\n\n it('saves current state of all basket rows correctly', async () => {\n const startDate = dayjs().add(1, 'day');\n const endDate = dayjs().add(3, 'day');\n\n const room = new Room();\n const rate = new RoomRate();\n rate.setRoom(room);\n\n const basketRow = new BasketRow();\n basketRow.setAdults(2);\n basketRow.setStartDate(startDate);\n basketRow.setEndDate(endDate);\n basketRow.setRate(rate);\n\n const partialState: RoomstaySession = {\n id: session.getCurrentSessionID(),\n startDate,\n endDate,\n step: 'StepRoom',\n source: '',\n hotelID: '123',\n basketRows: [basketRow, basketRow],\n };\n\n await session.saveSession(partialState);\n\n const storage = new StorageProvider();\n const rawStore = await storage.read<SerializedRoomstaySession>(`session-${session.getCurrentSessionID()}`);\n\n expect(rawStore?.basketRows.length).toBe(2);\n expect(rawStore?.basketRows[0].startDate).toBe(startDate.format(SERIALIZED_DATE_FORMAT));\n });\n });\n\n describe('Updating individual values of the state', () => {\n it('updates only the changed values of the state', async () => {\n await session.initialize();\n\n const startDate = dayjs();\n await session.updateSession({ startDate });\n\n // Hacky way to get around the debounce timeout\n await (() =>\n new Promise((resolve) => {\n setTimeout(resolve, 350);\n }))();\n\n let state = await session.getSession();\n expect(state.startDate?.isSame(startDate, 'day')).toBeTruthy();\n\n const endDate = dayjs();\n\n const room = new Room();\n const rate = new RoomRate();\n rate.setRoom(room);\n\n const basketRow = new BasketRow();\n basketRow.setAdults(2);\n basketRow.setStartDate(startDate);\n basketRow.setEndDate(endDate);\n basketRow.setRate(rate);\n\n const basketRows = [basketRow];\n\n expect(state.basketRows.length).toBe(0);\n\n await session.updateSession({ endDate, basketRows });\n\n // Hacky way to get around the debounce timeout\n await (() =>\n new Promise((resolve) => {\n setTimeout(resolve, 350);\n }))();\n\n state = await session.getSession();\n expect(state.endDate?.isSame(endDate, 'day')).toBeTruthy();\n expect(state.basketRows.length).toBe(1);\n });\n });\n});\n"]}
@@ -9,7 +9,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- const LocalStorageProvider_1 = require("../../../../src/providers/storage/LocalStorageProvider");
13
12
  const StorageProvider_1 = require("../../../../src/providers/storage/StorageProvider");
14
13
  describe('Session Storage Provider', () => {
15
14
  let savedLocalStorage;
@@ -25,54 +24,44 @@ describe('Session Storage Provider', () => {
25
24
  });
26
25
  describe('Writing To Storage', () => {
27
26
  it('writes a number successfully to local storage', () => {
28
- const provider = new LocalStorageProvider_1.LocalStorageProvider();
27
+ const provider = new StorageProvider_1.StorageProvider();
29
28
  provider.write('example', 2);
30
- expect(localStorage.getItem('roomstay-example')).toBe(JSON.stringify({
31
- type: StorageProvider_1.StorageType.Number,
32
- value: 2,
33
- }));
29
+ expect(localStorage.getItem('roomstay-example')).toBe(JSON.stringify(2));
34
30
  });
35
31
  it('writes a string successfully to local storage', () => {
36
- const provider = new LocalStorageProvider_1.LocalStorageProvider();
32
+ const provider = new StorageProvider_1.StorageProvider();
37
33
  provider.write('example', 'simple string');
38
- expect(localStorage.getItem('roomstay-example')).toBe(JSON.stringify({
39
- type: StorageProvider_1.StorageType.String,
40
- value: 'simple string',
41
- }));
34
+ expect(localStorage.getItem('roomstay-example')).toBe(JSON.stringify('simple string'));
42
35
  });
43
36
  it('writes an object successfully to local storage', () => {
44
- const provider = new LocalStorageProvider_1.LocalStorageProvider();
37
+ const provider = new StorageProvider_1.StorageProvider();
45
38
  provider.write('example', { test: 1, two: 2, three: 'four' });
46
39
  expect(localStorage.getItem('roomstay-example')).toBe(JSON.stringify({
47
- type: StorageProvider_1.StorageType.Object,
48
- value: {
49
- test: 1,
50
- two: 2,
51
- three: 'four',
52
- },
40
+ test: 1,
41
+ two: 2,
42
+ three: 'four',
53
43
  }));
54
44
  });
55
45
  it('gracefully fails if user has specifically denied local storage', () => {
56
46
  var localStorageMock = (function () {
57
- var store = {};
58
47
  return {
59
48
  setItem: function (key, value) {
60
49
  throw new Error('Forced Exception');
61
50
  },
62
51
  };
63
52
  })();
64
- const provider = new LocalStorageProvider_1.LocalStorageProvider(localStorageMock);
53
+ const provider = new StorageProvider_1.StorageProvider(localStorageMock);
65
54
  return expect(provider.write('item', 'value')).resolves.toBeFalsy();
66
55
  });
67
56
  });
68
57
  describe('Reading from storage', () => {
69
58
  it('reads a string properly', () => {
70
- const provider = new LocalStorageProvider_1.LocalStorageProvider();
59
+ const provider = new StorageProvider_1.StorageProvider();
71
60
  provider.write('test', 'this will be fun');
72
61
  return expect(provider.read('test')).resolves.toBe('this will be fun');
73
62
  });
74
63
  it('gracefully fails if someone / something injected our local storage', () => {
75
- const provider = new LocalStorageProvider_1.LocalStorageProvider();
64
+ const provider = new StorageProvider_1.StorageProvider();
76
65
  localStorage.setItem('roomstay-test', '{addqwdqdqe}');
77
66
  return expect(provider.read('test')).resolves.toBe(null);
78
67
  });
@@ -85,7 +74,7 @@ describe('Session Storage Provider', () => {
85
74
  setItem: window.localStorage.setItem,
86
75
  };
87
76
  })();
88
- const provider = new LocalStorageProvider_1.LocalStorageProvider(localStorageMock);
77
+ const provider = new StorageProvider_1.StorageProvider(localStorageMock);
89
78
  return expect(provider.read('test')).resolves.toBe(null);
90
79
  });
91
80
  it('lists all the keys of the objects stored in storage', () => {
@@ -93,7 +82,7 @@ describe('Session Storage Provider', () => {
93
82
  localStorage.setItem('roomstay-yoke', 'is cool');
94
83
  localStorage.setItem('roomstay-engine', 'is cool');
95
84
  localStorage.setItem('roomstay-wonder', 'is cool');
96
- const storage = new LocalStorageProvider_1.LocalStorageProvider();
85
+ const storage = new StorageProvider_1.StorageProvider();
97
86
  expect(storage.getAllKeys().length).toBe(4);
98
87
  });
99
88
  it('lists all the keys of the objects stored in storage', () => {
@@ -101,7 +90,7 @@ describe('Session Storage Provider', () => {
101
90
  localStorage.setItem('roomstay-yoke', 'is cool');
102
91
  localStorage.setItem('engine', 'is cool');
103
92
  localStorage.setItem('wonder', 'is cool');
104
- const storage = new LocalStorageProvider_1.LocalStorageProvider();
93
+ const storage = new StorageProvider_1.StorageProvider();
105
94
  expect(storage.getAllKeys().length).toBe(2);
106
95
  });
107
96
  it('list all the keys matching a filter', () => {
@@ -109,15 +98,15 @@ describe('Session Storage Provider', () => {
109
98
  localStorage.setItem('roomstay-session-yoke', 'is cool');
110
99
  localStorage.setItem('engine', 'is cool');
111
100
  localStorage.setItem('wonder', 'is cool');
112
- const storage = new LocalStorageProvider_1.LocalStorageProvider();
101
+ const storage = new StorageProvider_1.StorageProvider();
113
102
  expect(storage.getAllKeys((name) => name.startsWith('roomstay-session')).length).toBe(1);
114
103
  });
115
104
  it('reads multiple list of objects based on an array of keys provided', () => __awaiter(void 0, void 0, void 0, function* () {
116
- const value = JSON.stringify({ value: 'this is cool', type: StorageProvider_1.StorageType.String });
105
+ const value = JSON.stringify('this is cool');
117
106
  localStorage.setItem('roomstay-thing', value);
118
107
  localStorage.setItem('roomstay-session-yoke', value);
119
108
  localStorage.setItem('engine', value);
120
- const storage = new LocalStorageProvider_1.LocalStorageProvider();
109
+ const storage = new StorageProvider_1.StorageProvider();
121
110
  const values = yield storage.readAll(['thing', 'session-yoke']);
122
111
  expect(values.length).toBe(2);
123
112
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"LocalStorageProvider.test.js","sourceRoot":"/","sources":["tests/jest/providers/storage/LocalStorageProvider.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocalStorageProvider } from '../../../../src/providers/storage/LocalStorageProvider';\nimport { StorageType } from '../../../../src/providers/storage/StorageProvider';\n\ndescribe('Session Storage Provider', () => {\n let savedLocalStorage: any;\n beforeEach(() => {\n savedLocalStorage = window.localStorage;\n\n localStorage.clear();\n sessionStorage.clear();\n });\n\n afterEach(() => {\n Object.defineProperty(window, 'localStorage', {\n value: savedLocalStorage,\n });\n });\n\n describe('Writing To Storage', () => {\n it('writes a number successfully to local storage', () => {\n const provider = new LocalStorageProvider();\n\n provider.write('example', 2);\n\n expect(localStorage.getItem('roomstay-example')).toBe(\n JSON.stringify({\n type: StorageType.Number,\n value: 2,\n })\n );\n });\n\n it('writes a string successfully to local storage', () => {\n const provider = new LocalStorageProvider();\n\n provider.write('example', 'simple string');\n\n expect(localStorage.getItem('roomstay-example')).toBe(\n JSON.stringify({\n type: StorageType.String,\n value: 'simple string',\n })\n );\n });\n\n it('writes an object successfully to local storage', () => {\n const provider = new LocalStorageProvider();\n\n provider.write('example', { test: 1, two: 2, three: 'four' });\n\n expect(localStorage.getItem('roomstay-example')).toBe(\n JSON.stringify({\n type: StorageType.Object,\n value: {\n test: 1,\n two: 2,\n three: 'four',\n },\n })\n );\n });\n\n it('gracefully fails if user has specifically denied local storage', () => {\n var localStorageMock = (function () {\n var store = {};\n\n return {\n setItem: function (key: string, value: string) {\n throw new Error('Forced Exception');\n },\n };\n })() as unknown as Storage;\n\n const provider = new LocalStorageProvider(localStorageMock);\n\n return expect(provider.write('item', 'value')).resolves.toBeFalsy();\n });\n });\n\n describe('Reading from storage', () => {\n it('reads a string properly', () => {\n const provider = new LocalStorageProvider();\n\n provider.write('test', 'this will be fun');\n\n return expect(provider.read('test')).resolves.toBe('this will be fun');\n });\n\n it('gracefully fails if someone / something injected our local storage', () => {\n const provider = new LocalStorageProvider();\n\n localStorage.setItem('roomstay-test', '{addqwdqdqe}');\n\n return expect(provider.read('test')).resolves.toBe(null);\n });\n\n it('gracefully fails if we incur an error while reading from storage', () => {\n var localStorageMock = (function () {\n return {\n getItem: function (key: string) {\n throw new Error('Forced Exception');\n },\n setItem: window.localStorage.setItem,\n };\n })() as unknown as Storage;\n\n const provider = new LocalStorageProvider(localStorageMock);\n\n return expect(provider.read('test')).resolves.toBe(null);\n });\n\n it('lists all the keys of the objects stored in storage', () => {\n localStorage.setItem('roomstay-thing', 'is cool');\n localStorage.setItem('roomstay-yoke', 'is cool');\n localStorage.setItem('roomstay-engine', 'is cool');\n localStorage.setItem('roomstay-wonder', 'is cool');\n\n const storage = new LocalStorageProvider();\n expect(storage.getAllKeys().length).toBe(4);\n });\n\n it('lists all the keys of the objects stored in storage', () => {\n localStorage.setItem('roomstay-thing', 'is cool');\n localStorage.setItem('roomstay-yoke', 'is cool');\n localStorage.setItem('engine', 'is cool');\n localStorage.setItem('wonder', 'is cool');\n\n const storage = new LocalStorageProvider();\n expect(storage.getAllKeys().length).toBe(2);\n });\n\n it('list all the keys matching a filter', () => {\n localStorage.setItem('roomstay-thing', 'is cool');\n localStorage.setItem('roomstay-session-yoke', 'is cool');\n localStorage.setItem('engine', 'is cool');\n localStorage.setItem('wonder', 'is cool');\n\n const storage = new LocalStorageProvider();\n expect(storage.getAllKeys((name) => name.startsWith('roomstay-session')).length).toBe(1);\n });\n\n it('reads multiple list of objects based on an array of keys provided', async () => {\n const value = JSON.stringify({ value: 'this is cool', type: StorageType.String });\n\n localStorage.setItem('roomstay-thing', value);\n localStorage.setItem('roomstay-session-yoke', value);\n localStorage.setItem('engine', value);\n\n const storage = new LocalStorageProvider();\n\n const values = await storage.readAll(['thing', 'session-yoke']);\n\n expect(values.length).toBe(2);\n });\n });\n});\n"]}
1
+ {"version":3,"file":"LocalStorageProvider.test.js","sourceRoot":"/","sources":["tests/jest/providers/storage/LocalStorageProvider.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { StorageProvider } from '../../../../src/providers/storage/StorageProvider';\n\ndescribe('Session Storage Provider', () => {\n let savedLocalStorage: any;\n beforeEach(() => {\n savedLocalStorage = window.localStorage;\n\n localStorage.clear();\n sessionStorage.clear();\n });\n\n afterEach(() => {\n Object.defineProperty(window, 'localStorage', {\n value: savedLocalStorage,\n });\n });\n\n describe('Writing To Storage', () => {\n it('writes a number successfully to local storage', () => {\n const provider = new StorageProvider();\n\n provider.write('example', 2);\n\n expect(localStorage.getItem('roomstay-example')).toBe(\n JSON.stringify(2)\n );\n });\n\n it('writes a string successfully to local storage', () => {\n const provider = new StorageProvider();\n\n provider.write('example', 'simple string');\n\n expect(localStorage.getItem('roomstay-example')).toBe(\n JSON.stringify('simple string')\n );\n });\n\n it('writes an object successfully to local storage', () => {\n const provider = new StorageProvider();\n\n provider.write('example', { test: 1, two: 2, three: 'four' });\n\n expect(localStorage.getItem('roomstay-example')).toBe(\n JSON.stringify({\n test: 1,\n two: 2,\n three: 'four',\n })\n );\n });\n\n it('gracefully fails if user has specifically denied local storage', () => {\n var localStorageMock = (function () {\n return {\n setItem: function (key: string, value: string) {\n throw new Error('Forced Exception');\n },\n };\n })() as unknown as Storage;\n\n const provider = new StorageProvider(localStorageMock);\n\n return expect(provider.write('item', 'value')).resolves.toBeFalsy();\n });\n });\n\n describe('Reading from storage', () => {\n it('reads a string properly', () => {\n const provider = new StorageProvider();\n\n provider.write('test', 'this will be fun');\n\n return expect(provider.read('test')).resolves.toBe('this will be fun');\n });\n\n it('gracefully fails if someone / something injected our local storage', () => {\n const provider = new StorageProvider();\n\n localStorage.setItem('roomstay-test', '{addqwdqdqe}');\n\n return expect(provider.read('test')).resolves.toBe(null);\n });\n\n it('gracefully fails if we incur an error while reading from storage', () => {\n var localStorageMock = (function () {\n return {\n getItem: function (key: string) {\n throw new Error('Forced Exception');\n },\n setItem: window.localStorage.setItem,\n };\n })() as unknown as Storage;\n\n const provider = new StorageProvider(localStorageMock);\n\n return expect(provider.read('test')).resolves.toBe(null);\n });\n\n it('lists all the keys of the objects stored in storage', () => {\n localStorage.setItem('roomstay-thing', 'is cool');\n localStorage.setItem('roomstay-yoke', 'is cool');\n localStorage.setItem('roomstay-engine', 'is cool');\n localStorage.setItem('roomstay-wonder', 'is cool');\n\n const storage = new StorageProvider();\n expect(storage.getAllKeys().length).toBe(4);\n });\n\n it('lists all the keys of the objects stored in storage', () => {\n localStorage.setItem('roomstay-thing', 'is cool');\n localStorage.setItem('roomstay-yoke', 'is cool');\n localStorage.setItem('engine', 'is cool');\n localStorage.setItem('wonder', 'is cool');\n\n const storage = new StorageProvider();\n expect(storage.getAllKeys().length).toBe(2);\n });\n\n it('list all the keys matching a filter', () => {\n localStorage.setItem('roomstay-thing', 'is cool');\n localStorage.setItem('roomstay-session-yoke', 'is cool');\n localStorage.setItem('engine', 'is cool');\n localStorage.setItem('wonder', 'is cool');\n\n const storage = new StorageProvider();\n expect(storage.getAllKeys((name: string) => name.startsWith('roomstay-session')).length).toBe(1);\n });\n\n it('reads multiple list of objects based on an array of keys provided', async () => {\n const value = JSON.stringify('this is cool');\n\n localStorage.setItem('roomstay-thing', value);\n localStorage.setItem('roomstay-session-yoke', value);\n localStorage.setItem('engine', value);\n\n const storage = new StorageProvider();\n\n const values = await storage.readAll(['thing', 'session-yoke']);\n\n expect(values.length).toBe(2);\n });\n });\n});\n"]}