@roomstay/frontend 2.6.30 → 2.6.32
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.
- package/dist/166.bundle.js +1 -1
- package/dist/279.bundle.js +1 -1
- package/dist/370.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/586.bundle.js +1 -1
- package/dist/736.bundle.js +1 -1
- package/dist/873.bundle.js +1 -1
- package/dist/903.bundle.js +1 -1
- package/dist/927.bundle.js +1 -1
- package/dist/972.bundle.js +1 -1
- package/dist/978.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/AvailabilityAPI.d.ts +5 -4
- package/dist/src/api/AvailabilityAPI.js +23 -29
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/components/generic/InputGroup/InputGroup.js +1 -0
- package/dist/src/components/generic/InputGroup/InputGroup.js.map +1 -1
- package/dist/src/components/generic/InputGroup/InputGroup.types.d.ts +1 -1
- package/dist/src/components/generic/InputGroup/InputGroup.types.js.map +1 -1
- package/dist/src/components/generic/ScrollToTop.js +10 -1
- package/dist/src/components/generic/ScrollToTop.js.map +1 -1
- package/dist/src/components/generic/date/DatePicker.js +2 -1
- package/dist/src/components/generic/date/DatePicker.js.map +1 -1
- package/dist/src/components/generic/date/DatePickerDay.js +2 -1
- package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
- package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.d.ts +4 -0
- package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/EmailAndFullnameMemberModal.js +8 -4
- package/dist/src/components/members/SignInModal/EmailAndFullnameMemberModal.js.map +1 -0
- package/dist/src/components/members/SignInModal/EmailPasswordMemberModal.d.ts +4 -0
- package/dist/src/components/members/SignInModal/EmailPasswordMemberModal.js +29 -0
- package/dist/src/components/members/SignInModal/EmailPasswordMemberModal.js.map +1 -0
- package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/ExternalMemberModal.d.ts +8 -3
- package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/ExternalMemberModal.js +24 -23
- package/dist/src/components/members/SignInModal/ExternalMemberModal.js.map +1 -0
- package/dist/src/components/members/SignInModal/FamilyNameMemberModal.d.ts +4 -0
- package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/FamilyNameMemberModal.js +6 -4
- package/dist/src/components/members/SignInModal/FamilyNameMemberModal.js.map +1 -0
- package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/InternalMemberSignInModal.d.ts +1 -0
- package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/InternalMemberSignInModal.js +31 -35
- package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js.map +1 -0
- package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/InternalMemberSignInModal.types.d.ts +1 -1
- package/dist/src/components/members/SignInModal/InternalMemberSignInModal.types.js.map +1 -0
- package/dist/src/components/members/SignInModal/MemberSignInModal.js +86 -0
- package/dist/src/components/members/SignInModal/MemberSignInModal.js.map +1 -0
- package/dist/src/components/steps/MinimumNightStayPill.js.map +1 -1
- package/dist/src/components/steps/confirmation/RoomContactDetails.js +72 -4
- package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
- package/dist/src/components/steps/date/PeoplePicker.js +1 -0
- package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
- package/dist/src/components/steps/date/PeoplePickerRow.d.ts +1 -0
- package/dist/src/components/steps/date/PeoplePickerRow.js +14 -4
- package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
- package/dist/src/components/steps/date/StepDatePricePerRoom.js +2 -1
- package/dist/src/components/steps/date/StepDatePricePerRoom.js.map +1 -1
- package/dist/src/components/steps/room/RoomListCrossSellBlock.js +1 -1
- package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
- package/dist/src/components/steps/room/StepRoomBestRateAlert.js +13 -10
- package/dist/src/components/steps/room/StepRoomBestRateAlert.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +5 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.d.ts +1 -0
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +15 -5
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
- package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +3 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.d.ts +8 -1
- package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.js.map +1 -1
- package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js +5 -0
- package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +1 -0
- package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +22 -19
- package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +4 -2
- package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
- package/dist/src/contexts/HotelOverridesContext.js +12 -0
- package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
- package/dist/src/engines/BaseEngine.d.ts +4 -1
- package/dist/src/engines/BaseEngine.js +6 -1
- package/dist/src/engines/BaseEngine.js.map +1 -1
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +1 -1
- package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
- package/dist/src/hooks/UpdateQueryParameters.js.map +1 -1
- package/dist/src/hooks/useCalendarNightStay.js +4 -2
- package/dist/src/hooks/useCalendarNightStay.js.map +1 -1
- package/dist/src/hooks/useExternalMember.d.ts +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.js +6 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Api/HotelDTO.d.ts +1 -1
- package/dist/src/models/Api/HotelDTO.js.map +1 -1
- package/dist/src/models/Api/HotelOverrideDTO.d.ts +16 -7
- package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
- package/dist/src/models/BasketRow.d.ts +12 -0
- package/dist/src/models/BasketRow.js +17 -0
- package/dist/src/models/BasketRow.js.map +1 -1
- package/dist/src/models/Client/Hotel/Hotel.d.ts +4 -1
- package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
- package/dist/src/models/Confirmation.d.ts +5 -0
- package/dist/src/models/Confirmation.js +5 -1
- package/dist/src/models/Confirmation.js.map +1 -1
- package/dist/src/models/LocalStorageModel.d.ts +7 -0
- package/dist/src/models/LocalStorageModel.js +3 -0
- package/dist/src/models/LocalStorageModel.js.map +1 -0
- package/dist/src/models/Promotion/IPromotion.type.d.ts +2 -0
- package/dist/src/models/Promotion/IPromotion.type.js.map +1 -1
- package/dist/src/models/Room/RoomRate.d.ts +2 -0
- package/dist/src/models/Room/RoomRate.js +3 -1
- package/dist/src/models/Room/RoomRate.js.map +1 -1
- package/dist/src/providers/RatePillProvider.d.ts +2 -0
- package/dist/src/providers/RatePillProvider.js +6 -1
- package/dist/src/providers/RatePillProvider.js.map +1 -1
- package/dist/src/providers/RoomstayThemeEngine.js +1 -1
- package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
- package/dist/src/providers/storage/LocalStorageProvider.d.ts +9 -14
- package/dist/src/providers/storage/LocalStorageProvider.js +19 -97
- package/dist/src/providers/storage/LocalStorageProvider.js.map +1 -1
- package/dist/src/providers/{SessionProvider.d.ts → storage/SessionProvider.d.ts} +1 -1
- package/dist/src/providers/{SessionProvider.js → storage/SessionProvider.js} +13 -12
- package/dist/src/providers/storage/SessionProvider.js.map +1 -0
- package/dist/src/providers/storage/StorageProvider.d.ts +14 -8
- package/dist/src/providers/storage/StorageProvider.js +94 -7
- package/dist/src/providers/storage/StorageProvider.js.map +1 -1
- package/dist/src/util/CalendarHelper.d.ts +1 -0
- package/dist/src/util/CalendarHelper.js +16 -1
- package/dist/src/util/CalendarHelper.js.map +1 -1
- package/dist/src/util/EventsHelper.js +2 -2
- package/dist/src/util/EventsHelper.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/tests/jest/providers/SessionProvider.test.js +7 -7
- package/dist/tests/jest/providers/SessionProvider.test.js.map +1 -1
- package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js +17 -28
- package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js.map +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +5 -3
- package/dist/src/components/steps/room/MemberSignInModal/EmailAndFullnameMemberModal.d.ts +0 -4
- package/dist/src/components/steps/room/MemberSignInModal/EmailAndFullnameMemberModal.js.map +0 -1
- package/dist/src/components/steps/room/MemberSignInModal/ExternalMemberModal.js.map +0 -1
- package/dist/src/components/steps/room/MemberSignInModal/FamilyNameMemberModal.d.ts +0 -8
- package/dist/src/components/steps/room/MemberSignInModal/FamilyNameMemberModal.js.map +0 -1
- package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.js.map +0 -1
- package/dist/src/components/steps/room/MemberSignInModal/InternalMemberSignInModal.types.js.map +0 -1
- package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +0 -62
- package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +0 -1
- package/dist/src/providers/SessionProvider.js.map +0 -1
- /package/dist/src/components/{steps/room/MemberSignInModal → members/SignInModal}/InternalMemberSignInModal.types.js +0 -0
- /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
|
|
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
|
|
38
|
+
const sessionStorageProvider = new StorageProvider_1.StorageProvider(sessionStorage);
|
|
39
39
|
yield sessionStorageProvider.write('currentSession', sessionId);
|
|
40
|
-
const localStorageProvider = new
|
|
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
|
|
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
|
|
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
|
|
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":";;;;;;;;;;;;;;AAAA,uCAAqC;AAErC,kDAA0B;AAE1B,8EAAsD;AACtD,wDAAqD;AACrD,gEAA6D;AAC7D,yEAAyH;AACzH,6FAAqE;AACrE,8FAA2F;AAE3F,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACpC,IAAI,OAAwB,CAAC;IAE7B,UAAU,CAAC,GAAG,EAAE;QACZ,YAAY,CAAC,KAAK,EAAE,CAAC;QACrB,cAAc,CAAC,KAAK,EAAE,CAAC;QAEvB,OAAO,GAAG,IAAI,yBAAe,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC3D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAErB,MAAM,OAAO,GAAG,IAAI,yBAAe,EAAE,CAAC;YAEtC,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAS,EAAE;YAC1D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAEvC,MAAM,sBAAsB,GAAG,IAAI,2CAAoB,CAAC,cAAc,CAAC,CAAC;YACxE,MAAM,sBAAsB,CAAC,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;YAEhE,MAAM,oBAAoB,GAAG,IAAI,2CAAoB,EAAE,CAAC;YACxD,MAAM,oBAAoB,CAAC,KAAK,CAAC,WAAW,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAE5E,MAAM,OAAO,GAAG,IAAI,yBAAe,EAAE,CAAC;YACtC,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAEpC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAS,EAAE;YACnD,MAAM,OAAO,GAAG,IAAI,yBAAe,EAAE,CAAC;YACtC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAEhD,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;YAC/B,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC/E,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAS,EAAE;YAC3D,MAAM,OAAO,GAAG,IAAI,yBAAe,EAAE,CAAC;YACtC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAEhD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,yBAAyB,CAAW,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1G,CAAC,CAAA,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,2CAA2C,EAAE,GAAS,EAAE;YACvD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAEzC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAS,EAAE;YACzD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAEhC,MAAM,OAAO,GAAG,IAAI,2CAAoB,EAAE,CAAC;YAC3C,MAAM,iBAAiB,GAA8B;gBACjD,EAAE;gBACF,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE,YAAY;gBACrB,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,UAAU;gBAChB,UAAU,EAAE,EAAE;aACjB,CAAC;YAEF,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAElD,OAAO,GAAG,IAAI,yBAAe,EAAE,CAAC;YAChC,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAE7B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAEzC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAS,EAAE;;YAChD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAEhC,MAAM,SAAS,GAAG,IAAI,mBAAS,EAAE,CAAC;YAElC,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;YAE7B,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;YAExB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,SAAS,GAAG,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAEtC,MAAM,OAAO,CAAC,WAAW,CAAC;gBACtB,SAAS;gBACT,OAAO;gBACP,EAAE,EAAE,OAAO,CAAC,mBAAmB,EAAE;gBACjC,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,kBAAkB;gBACxB,UAAU,EAAE,CAAC,SAAS,CAAC;aAC1B,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE/C,MAAM,CAAC,MAAA,WAAW,CAAC,SAAS,0CAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YACtE,MAAM,CAAC,MAAA,WAAW,CAAC,OAAO,0CAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAClE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAA,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,0CAA0C,EAAE,GAAS,EAAE;YACtD,MAAM,SAAS,GAAG,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAEtC,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEnB,MAAM,SAAS,GAAG,IAAI,mBAAS,EAAE,CAAC;YAClC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACvB,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAClC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC9B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,YAAY,GAAoB;gBAClC,EAAE,EAAE,OAAO,CAAC,mBAAmB,EAAE;gBACjC,SAAS;gBACT,OAAO;gBACP,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,UAAU;gBAChB,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;aACrC,CAAC;YAEF,qDAAqD;YACrD,MAAM,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAExC,gCAAgC;YAChC,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAEjD,gCAAgC;YAChC,MAAM,OAAO,CAAC,WAAW,iCAClB,YAAY,KACf,EAAE,EAAE,OAAO,CAAC,mBAAmB,EAAE,IACnC,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;YAEnD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAA,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,mDAAmD,EAAE,GAAS,EAAE;YAC/D,MAAM,OAAO,GAAG,IAAI,yBAAe,EAAE,CAAC;YACtC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,kBAAyB,CAAC,CAAC;YAErE,MAAM,OAAO,CAAC,WAAW,CAAC,IAAkC,CAAC,CAAC;YAC9D,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjD,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAS,EAAE;YACxD,MAAM,YAAY,GAAoB;gBAClC,EAAE,EAAE,OAAO,CAAC,mBAAmB,EAAE;gBACjC,SAAS,EAAE,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;gBAChC,OAAO,EAAE,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;gBAC9B,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,UAAU;gBAChB,UAAU,EAAE,EAAE;aACjB,CAAC;YAEF,MAAM,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAExC,MAAM,OAAO,GAAG,IAAI,2CAAoB,EAAE,CAAC;YAE3C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAA4B,WAAW,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAE3G,MAAM,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,wCAAsB,CAAC,CAAC,CAAC;YACvF,MAAM,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,wCAAsB,CAAC,CAAC,CAAC;YACrF,MAAM,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAS,EAAE;YAC9D,MAAM,SAAS,GAAG,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAEtC,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEnB,MAAM,SAAS,GAAG,IAAI,mBAAS,EAAE,CAAC;YAClC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACvB,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAClC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC9B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,YAAY,GAAoB;gBAClC,EAAE,EAAE,OAAO,CAAC,mBAAmB,EAAE;gBACjC,SAAS;gBACT,OAAO;gBACP,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;aACrC,CAAC;YAEF,MAAM,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAExC,MAAM,OAAO,GAAG,IAAI,2CAAoB,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAA4B,WAAW,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAE3G,MAAM,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,wCAAsB,CAAC,CAAC,CAAC;QAC7F,CAAC,CAAA,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACrD,EAAE,CAAC,8CAA8C,EAAE,GAAS,EAAE;;YAC1D,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3B,MAAM,SAAS,GAAG,IAAA,eAAK,GAAE,CAAC;YAC1B,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YAE3C,+CAA+C;YAC/C,MAAM,CAAC,GAAG,EAAE,CACR,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACpB,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC,EAAE,CAAC;YAEV,IAAI,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,CAAC,MAAA,KAAK,CAAC,SAAS,0CAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAE/D,MAAM,OAAO,GAAG,IAAA,eAAK,GAAE,CAAC;YAExB,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEnB,MAAM,SAAS,GAAG,IAAI,mBAAS,EAAE,CAAC;YAClC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACvB,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAClC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC9B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,CAAC;YAE/B,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAExC,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;YAErD,+CAA+C;YAC/C,MAAM,CAAC,GAAG,EAAE,CACR,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACpB,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC,EAAE,CAAC;YAEV,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,CAAC,MAAA,KAAK,CAAC,OAAO,0CAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAC3D,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAA,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","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
|
|
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
|
|
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
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
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"]}
|