@roomstay/frontend 2.1.33 → 2.2.1

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 (468) hide show
  1. package/dist/201.bundle.js +1 -1
  2. package/dist/213.bundle.js +1 -0
  3. package/dist/279.bundle.js +1 -1
  4. package/dist/370.bundle.js +1 -1
  5. package/dist/423.bundle.js +1 -1
  6. package/dist/449.bundle.js +1 -1
  7. package/dist/535.bundle.js +1 -1
  8. package/dist/548.bundle.js +1 -0
  9. package/dist/686.bundle.js +1 -0
  10. package/dist/855.bundle.js +1 -1
  11. package/dist/873.bundle.js +1 -1
  12. package/dist/882.bundle.js +1 -1
  13. package/dist/93.bundle.js +1 -0
  14. package/dist/972.bundle.js +1 -1
  15. package/dist/main.bundle.js +1 -2
  16. package/dist/src/api/HotelAPI.d.ts +1 -1
  17. package/dist/src/api/HotelAPI.js.map +1 -1
  18. package/dist/src/api/ReservationAPI.d.ts +0 -6
  19. package/dist/src/api/ReservationAPI.js.map +1 -1
  20. package/dist/src/api/events-service/EventsServiceAPI.d.ts +3 -0
  21. package/dist/src/api/events-service/EventsServiceAPI.js +62 -0
  22. package/dist/src/api/events-service/EventsServiceAPI.js.map +1 -0
  23. package/dist/src/components/Event/EventCarouselContainer.d.ts +8 -0
  24. package/dist/src/components/Event/EventCarouselContainer.js +97 -0
  25. package/dist/src/components/Event/EventCarouselContainer.js.map +1 -0
  26. package/dist/src/components/User/Forms/ForgotPasswordForm.d.ts +1 -0
  27. package/dist/src/components/User/Forms/ForgotPasswordForm.js +38 -24
  28. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  29. package/dist/src/components/User/Forms/SignInForm.d.ts +4 -3
  30. package/dist/src/components/User/Forms/SignInForm.js +32 -14
  31. package/dist/src/components/User/Forms/SignInForm.js.map +1 -1
  32. package/dist/src/components/User/Forms/SignUpForm.d.ts +1 -0
  33. package/dist/src/components/User/Forms/SignUpForm.js +30 -26
  34. package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
  35. package/dist/src/components/generic/BookingWizard/BookingWizard.js +5 -2
  36. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  37. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +6 -3
  38. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  39. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +8 -5
  40. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  41. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +15 -9
  42. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  43. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +4 -1
  44. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
  45. package/dist/src/components/generic/Currency.js +5 -5
  46. package/dist/src/components/generic/Currency.js.map +1 -1
  47. package/dist/src/components/generic/Event/EventCard.d.ts +8 -0
  48. package/dist/src/components/generic/Event/EventCard.js +70 -0
  49. package/dist/src/components/generic/Event/EventCard.js.map +1 -0
  50. package/dist/src/components/generic/Event/EventCarousel.d.ts +9 -0
  51. package/dist/src/components/generic/Event/EventCarousel.js +72 -0
  52. package/dist/src/components/generic/Event/EventCarousel.js.map +1 -0
  53. package/dist/src/components/generic/Headline.d.ts +2 -2
  54. package/dist/src/components/generic/Headline.js +8 -4
  55. package/dist/src/components/generic/Headline.js.map +1 -1
  56. package/dist/src/components/generic/Icon/Icon.d.ts +5 -1
  57. package/dist/src/components/generic/Icon/Icon.js +4 -0
  58. package/dist/src/components/generic/Icon/Icon.js.map +1 -1
  59. package/dist/src/components/generic/Overlay/Overlay.d.ts +2 -1
  60. package/dist/src/components/generic/Overlay/Overlay.js +50 -7
  61. package/dist/src/components/generic/Overlay/Overlay.js.map +1 -1
  62. package/dist/src/components/generic/PasswordBox/PasswordBox.js +2 -2
  63. package/dist/src/components/generic/PasswordBox/PasswordBox.js.map +1 -1
  64. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.d.ts +8 -0
  65. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.js +16 -0
  66. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.js.map +1 -0
  67. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.d.ts +8 -0
  68. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js +61 -0
  69. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js.map +1 -0
  70. package/dist/src/components/generic/PaymentCard/PaymentCard.js +6 -3
  71. package/dist/src/components/generic/PaymentCard/PaymentCard.js.map +1 -1
  72. package/dist/src/components/generic/PaymentCard/PaymentCardInput.d.ts +2 -3
  73. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +34 -28
  74. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
  75. package/dist/src/components/generic/PromoCodeInput.js +15 -18
  76. package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
  77. package/dist/src/components/generic/RadioButtonGroup/RadioButton.d.ts +5 -4
  78. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +33 -10
  79. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
  80. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.d.ts +14 -11
  81. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +69 -11
  82. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  83. package/dist/src/components/generic/RatioImage/RatioImage.d.ts +11 -0
  84. package/dist/src/components/generic/RatioImage/RatioImage.js +12 -0
  85. package/dist/src/components/generic/RatioImage/RatioImage.js.map +1 -0
  86. package/dist/src/components/generic/RecentSearchesCard.js +6 -5
  87. package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
  88. package/dist/src/components/generic/Tabs/TabLink.js +28 -3
  89. package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
  90. package/dist/src/components/generic/TextBox.js +1 -1
  91. package/dist/src/components/generic/TextBox.js.map +1 -1
  92. package/dist/src/components/generic/badging/SSLSecureBadge.js +4 -1
  93. package/dist/src/components/generic/badging/SSLSecureBadge.js.map +1 -1
  94. package/dist/src/components/generic/buttons/NextStepButton.d.ts +0 -3
  95. package/dist/src/components/generic/buttons/NextStepButton.js +4 -1
  96. package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
  97. package/dist/src/components/generic/loader/LargeLoader.js +31 -6
  98. package/dist/src/components/generic/loader/LargeLoader.js.map +1 -1
  99. package/dist/src/components/generic/modal/ConfirmationModal.js +6 -3
  100. package/dist/src/components/generic/modal/ConfirmationModal.js.map +1 -1
  101. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.d.ts +14 -2
  102. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js +34 -26
  103. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js.map +1 -1
  104. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.d.ts +7 -0
  105. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js +14 -0
  106. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js.map +1 -0
  107. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.d.ts +8 -0
  108. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js +25 -0
  109. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js.map +1 -0
  110. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.d.ts +7 -0
  111. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js +49 -0
  112. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js.map +1 -0
  113. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.d.ts +5 -2
  114. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js +30 -39
  115. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js.map +1 -1
  116. package/dist/src/components/generic/print/NoPrint.d.ts +3 -0
  117. package/dist/src/components/generic/print/NoPrint.js +11 -0
  118. package/dist/src/components/generic/print/NoPrint.js.map +1 -0
  119. package/dist/src/components/generic/print/PrintOnly.d.ts +3 -0
  120. package/dist/src/components/generic/print/PrintOnly.js +11 -0
  121. package/dist/src/components/generic/print/PrintOnly.js.map +1 -0
  122. package/dist/src/components/graphics/AddCard.d.ts +7 -0
  123. package/dist/src/components/graphics/AddCard.js +28 -0
  124. package/dist/src/components/graphics/AddCard.js.map +1 -0
  125. package/dist/src/components/graphics/HomeEmptyCard.d.ts +7 -0
  126. package/dist/src/components/graphics/HomeEmptyCard.js +53 -0
  127. package/dist/src/components/graphics/HomeEmptyCard.js.map +1 -0
  128. package/dist/src/components/graphics/HomeEmptyReservation.d.ts +7 -0
  129. package/dist/src/components/graphics/HomeEmptyReservation.js +136 -0
  130. package/dist/src/components/graphics/HomeEmptyReservation.js.map +1 -0
  131. package/dist/src/components/iconComponents/CreditCardOff.d.ts +6 -0
  132. package/dist/src/components/iconComponents/CreditCardOff.js +16 -0
  133. package/dist/src/components/iconComponents/CreditCardOff.js.map +1 -0
  134. package/dist/src/components/members/EditMyProfile.js +19 -21
  135. package/dist/src/components/members/EditMyProfile.js.map +1 -1
  136. package/dist/src/components/navigation/Header.js +29 -9
  137. package/dist/src/components/navigation/Header.js.map +1 -1
  138. package/dist/src/components/navigation/StepSelector.js +2 -1
  139. package/dist/src/components/navigation/StepSelector.js.map +1 -1
  140. package/dist/src/components/pages/Account/Card/MemberCardItem.js +5 -2
  141. package/dist/src/components/pages/Account/Card/MemberCardItem.js.map +1 -1
  142. package/dist/src/components/reservation/EmptyReservation.js +3 -3
  143. package/dist/src/components/reservation/EmptyReservation.js.map +1 -1
  144. package/dist/src/components/reservation/ReservationItem.d.ts +4 -3
  145. package/dist/src/components/reservation/ReservationItem.js +45 -33
  146. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  147. package/dist/src/components/reservation/ReservationList.d.ts +2 -2
  148. package/dist/src/components/reservation/ReservationList.js +1 -1
  149. package/dist/src/components/reservation/ReservationList.js.map +1 -1
  150. package/dist/src/components/steps/DaysSelectedInformer.js +15 -10
  151. package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
  152. package/dist/src/components/steps/addons/AddonCard.js +10 -12
  153. package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
  154. package/dist/src/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard.js.map +1 -1
  155. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js +26 -7
  156. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js.map +1 -1
  157. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.d.ts +1 -2
  158. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +36 -44
  159. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
  160. package/dist/src/components/steps/confirmation/PaymentInformation.d.ts +7 -0
  161. package/dist/src/components/steps/confirmation/PaymentInformation.js +119 -0
  162. package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -0
  163. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js +12 -10
  164. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js.map +1 -1
  165. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +43 -80
  166. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  167. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js +7 -5
  168. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js.map +1 -1
  169. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js +10 -12
  170. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js.map +1 -1
  171. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js +8 -2
  172. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js.map +1 -1
  173. package/dist/src/components/steps/date/PeoplePicker.js +9 -9
  174. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  175. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  176. package/dist/src/components/steps/date/StepOneNextStepButton.d.ts +1 -1
  177. package/dist/src/components/steps/date/StepOneNextStepButton.js +2 -4
  178. package/dist/src/components/steps/date/StepOneNextStepButton.js.map +1 -1
  179. package/dist/src/components/steps/hotel/HotelCard.js +5 -11
  180. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  181. package/dist/src/components/steps/hotel/HotelCardModal.js +5 -6
  182. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  183. package/dist/src/components/steps/hotel/HotelSearchParameters.js +8 -8
  184. package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
  185. package/dist/src/components/steps/room/AvailableUpgradesModal.js +8 -9
  186. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  187. package/dist/src/components/steps/room/InactivityWindow.js +3 -5
  188. package/dist/src/components/steps/room/InactivityWindow.js.map +1 -1
  189. package/dist/src/components/steps/room/LargeRoomCard.js +5 -4
  190. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  191. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +42 -40
  192. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +1 -1
  193. package/dist/src/components/steps/room/NoRoomsFoundBlock.js +7 -9
  194. package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
  195. package/dist/src/components/steps/room/RatesNotFound.js +6 -3
  196. package/dist/src/components/steps/room/RatesNotFound.js.map +1 -1
  197. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +3 -3
  198. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  199. package/dist/src/components/steps/room/StepRoomNextStepButton.d.ts +2 -1
  200. package/dist/src/components/steps/room/StepRoomNextStepButton.js +3 -3
  201. package/dist/src/components/steps/room/StepRoomNextStepButton.js.map +1 -1
  202. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js +2 -6
  203. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js.map +1 -1
  204. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js +1 -0
  205. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js.map +1 -1
  206. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +16 -18
  207. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  208. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +2 -2
  209. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  210. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js +6 -3
  211. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js.map +1 -1
  212. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js +3 -1
  213. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js.map +1 -1
  214. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +7 -8
  215. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
  216. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +4 -6
  217. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
  218. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +4 -5
  219. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  220. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js +7 -5
  221. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js.map +1 -1
  222. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js +4 -1
  223. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js.map +1 -1
  224. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +5 -2
  225. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
  226. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +11 -10
  227. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  228. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js +1 -1
  229. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js.map +1 -1
  230. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js +7 -8
  231. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js.map +1 -1
  232. package/dist/src/components/summary/BEMobileSummaryModal.js +1 -1
  233. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  234. package/dist/src/components/summary/BESummaryPerkBlock.js +4 -1
  235. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  236. package/dist/src/components/summary/BESummaryPrivacyPolicy.js +5 -10
  237. package/dist/src/components/summary/BESummaryPrivacyPolicy.js.map +1 -1
  238. package/dist/src/components/summary/BESummaryRoomRow.js +4 -6
  239. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  240. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +5 -1
  241. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
  242. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -0
  243. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  244. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +36 -13
  245. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  246. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +26 -2
  247. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  248. package/dist/src/contexts/ConfirmationFormContext.d.ts +0 -2
  249. package/dist/src/contexts/ConfirmationFormContext.js +0 -3
  250. package/dist/src/contexts/ConfirmationFormContext.js.map +1 -1
  251. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +13 -8
  252. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  253. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.d.ts +1 -6
  254. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +24 -18
  255. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  256. package/dist/src/contexts/HotelOverridesContext.js +4 -0
  257. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  258. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +10 -6
  259. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
  260. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +76 -26
  261. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  262. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.d.ts +8 -5
  263. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.js.map +1 -1
  264. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +35 -4
  265. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  266. package/dist/src/engines/BaseEngine.d.ts +2 -1
  267. package/dist/src/engines/BaseEngine.js +1 -1
  268. package/dist/src/engines/BaseEngine.js.map +1 -1
  269. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  270. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +24 -25
  271. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  272. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.d.ts +22 -0
  273. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js +33 -0
  274. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -0
  275. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.d.ts +6 -0
  276. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +116 -0
  277. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -0
  278. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +11 -10
  279. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
  280. package/dist/src/errors/GetAvailabilityError.d.ts +2 -1
  281. package/dist/src/errors/GetAvailabilityError.js +10 -3
  282. package/dist/src/errors/GetAvailabilityError.js.map +1 -1
  283. package/dist/src/hooks/HistoryConsistentPush.d.ts +1 -0
  284. package/dist/src/hooks/HistoryConsistentPush.js +12 -0
  285. package/dist/src/hooks/HistoryConsistentPush.js.map +1 -0
  286. package/dist/src/hooks/LoggedInUserHook.d.ts +3 -3
  287. package/dist/src/hooks/Query.js +2 -6
  288. package/dist/src/hooks/Query.js.map +1 -1
  289. package/dist/src/hooks/UpdateQueryParameters.d.ts +1 -0
  290. package/dist/src/hooks/UpdateQueryParameters.js +16 -0
  291. package/dist/src/hooks/UpdateQueryParameters.js.map +1 -0
  292. package/dist/src/hooks/VGSHooks.d.ts +11 -1
  293. package/dist/src/hooks/VGSHooks.js +26 -11
  294. package/dist/src/hooks/VGSHooks.js.map +1 -1
  295. package/dist/src/index.d.ts +2 -3
  296. package/dist/src/index.js +2 -0
  297. package/dist/src/index.js.map +1 -1
  298. package/dist/src/mockApi/HotelAPI.d.ts +1 -1
  299. package/dist/src/mockApi/HotelAPI.js.map +1 -1
  300. package/dist/src/models/Api/HotelDTO.d.ts +11 -3
  301. package/dist/src/models/Api/HotelDTO.js +17 -8
  302. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  303. package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
  304. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  305. package/dist/src/models/Api/ReservationsDTO.d.ts +2 -0
  306. package/dist/src/models/Api/ReservationsDTO.js.map +1 -1
  307. package/dist/src/models/AppQueryParameters.d.ts +14 -0
  308. package/dist/src/models/AppQueryParameters.js +19 -0
  309. package/dist/src/models/AppQueryParameters.js.map +1 -0
  310. package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +2 -2
  311. package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
  312. package/dist/src/models/Client/Hotel/ColorProfile.d.ts +3 -0
  313. package/dist/src/models/Client/Hotel/ColorProfile.js.map +1 -1
  314. package/dist/src/models/Client/Hotel/Company.d.ts +2 -2
  315. package/dist/src/models/Client/Hotel/Company.js.map +1 -1
  316. package/dist/src/models/Client/Hotel/Hotel.d.ts +15 -5
  317. package/dist/src/models/Client/Hotel/Hotel.js +3 -1
  318. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  319. package/dist/src/models/Confirmation.d.ts +1 -1
  320. package/dist/src/models/Confirmation.js.map +1 -1
  321. package/dist/src/models/Room/Filters/Filter.d.ts +2 -1
  322. package/dist/src/models/Room/Filters/Filter.js.map +1 -1
  323. package/dist/src/models/Room/Filters/RateTypeFilter.d.ts +2 -1
  324. package/dist/src/models/Room/Filters/RateTypeFilter.js +3 -2
  325. package/dist/src/models/Room/Filters/RateTypeFilter.js.map +1 -1
  326. package/dist/src/models/Room/Filters/RoomTypeFilter.d.ts +2 -1
  327. package/dist/src/models/Room/Filters/RoomTypeFilter.js +3 -2
  328. package/dist/src/models/Room/Filters/RoomTypeFilter.js.map +1 -1
  329. package/dist/src/pages/account/AccountHome/AccountHomePage.js +9 -10
  330. package/dist/src/pages/account/AccountHome/AccountHomePage.js.map +1 -1
  331. package/dist/src/pages/account/AccountRouter.js +7 -9
  332. package/dist/src/pages/account/AccountRouter.js.map +1 -1
  333. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js +19 -32
  334. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js.map +1 -1
  335. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js +9 -7
  336. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js.map +1 -1
  337. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js +25 -38
  338. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js.map +1 -1
  339. package/dist/src/pages/account/Help/AccountHelpPage.js +16 -25
  340. package/dist/src/pages/account/Help/AccountHelpPage.js.map +1 -1
  341. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +68 -52
  342. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  343. package/dist/src/pages/account/Reservations/AccountReservationsPage.js.map +1 -1
  344. package/dist/src/pages/findReservation/FindReservation.js +40 -23
  345. package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
  346. package/dist/src/pages/findReservation/ReservationRow.js +10 -9
  347. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  348. package/dist/src/pages/findReservation/ReservationRowModal.js +3 -3
  349. package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
  350. package/dist/src/pages/hotel/HotelInfo.js +6 -6
  351. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  352. package/dist/src/pages/steps/Step.d.ts +2 -2
  353. package/dist/src/pages/steps/Step.js.map +1 -1
  354. package/dist/src/pages/steps/StepAddon/StepAddon.d.ts +2 -2
  355. package/dist/src/pages/steps/StepAddon/StepAddon.js.map +1 -1
  356. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.d.ts +2 -2
  357. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.js.map +1 -1
  358. package/dist/src/pages/steps/StepDate/StepDate.d.ts +2 -2
  359. package/dist/src/pages/steps/StepDate/StepDate.js.map +1 -1
  360. package/dist/src/pages/steps/StepDate/StepDateComponent.js +1 -1
  361. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  362. package/dist/src/pages/steps/StepHotel/StepHotel.d.ts +2 -2
  363. package/dist/src/pages/steps/StepHotel/StepHotel.js.map +1 -1
  364. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +10 -7
  365. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  366. package/dist/src/pages/steps/StepRoom/StepRoom.d.ts +2 -2
  367. package/dist/src/pages/steps/StepRoom/StepRoom.js.map +1 -1
  368. package/dist/src/pages/steps/StepThanks/StepThanks.d.ts +2 -2
  369. package/dist/src/pages/steps/StepThanks/StepThanks.js.map +1 -1
  370. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +5 -0
  371. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  372. package/dist/src/providers/FeatureProvider.js +2 -0
  373. package/dist/src/providers/FeatureProvider.js.map +1 -1
  374. package/dist/src/providers/RoomstayThemeEngine.d.ts +3 -3
  375. package/dist/src/providers/RoomstayThemeEngine.js +4 -18
  376. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  377. package/dist/src/providers/feature/ModifyBookingFeature.d.ts +6 -0
  378. package/dist/src/providers/feature/ModifyBookingFeature.js +10 -0
  379. package/dist/src/providers/feature/ModifyBookingFeature.js.map +1 -0
  380. package/dist/src/stories/EventCarousel.stories.d.ts +6 -0
  381. package/dist/src/stories/EventCarousel.stories.js +236 -0
  382. package/dist/src/stories/EventCarousel.stories.js.map +1 -0
  383. package/dist/src/stories/RadioButton.stories.d.ts +3 -3
  384. package/dist/src/stories/RadioButtonGroup.stories.d.ts +4 -1
  385. package/dist/src/stories/RadioButtonGroup.stories.js +73 -1
  386. package/dist/src/stories/RadioButtonGroup.stories.js.map +1 -1
  387. package/dist/src/translations/Translation.d.ts +196 -8
  388. package/dist/src/translations/Translation.js +198 -10
  389. package/dist/src/translations/Translation.js.map +1 -1
  390. package/dist/src/translations/languages/en-gb.js +198 -10
  391. package/dist/src/translations/languages/en-gb.js.map +1 -1
  392. package/dist/src/util/Color.d.ts +3 -0
  393. package/dist/src/util/Color.js +21 -1
  394. package/dist/src/util/Color.js.map +1 -1
  395. package/dist/src/util/CurrencyHelper.d.ts +11 -3
  396. package/dist/src/util/CurrencyHelper.js +306 -5
  397. package/dist/src/util/CurrencyHelper.js.map +1 -1
  398. package/dist/src/util/EventsHelper.d.ts +11 -0
  399. package/dist/src/util/EventsHelper.js +43 -0
  400. package/dist/src/util/EventsHelper.js.map +1 -0
  401. package/dist/src/util/StringHelper.d.ts +2 -2
  402. package/dist/src/util/StringHelper.js +5 -4
  403. package/dist/src/util/StringHelper.js.map +1 -1
  404. package/dist/src/util/TextAlignment.d.ts +2 -1
  405. package/dist/src/util/TextAlignment.js +1 -0
  406. package/dist/src/util/TextAlignment.js.map +1 -1
  407. package/dist/src/util/Validation.d.ts +17 -13
  408. package/dist/src/util/Validation.js +34 -18
  409. package/dist/src/util/Validation.js.map +1 -1
  410. package/dist/test.bundle.js +1 -2
  411. package/dist/tests/jest/engines/RoomstayThemeEngine.test.d.ts +1 -0
  412. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js +41 -0
  413. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js.map +1 -0
  414. package/dist/tests/jest/events/EventManager.test.d.ts +1 -0
  415. package/dist/tests/jest/events/EventManager.test.js +101 -0
  416. package/dist/tests/jest/events/EventManager.test.js.map +1 -0
  417. package/dist/tests/jest/helpers/ObjectHelper.test.d.ts +1 -0
  418. package/dist/tests/jest/helpers/ObjectHelper.test.js +72 -0
  419. package/dist/tests/jest/helpers/ObjectHelper.test.js.map +1 -0
  420. package/dist/tests/jest/models/RoomRate.test.d.ts +1 -0
  421. package/dist/tests/jest/models/RoomRate.test.js +133 -0
  422. package/dist/tests/jest/models/RoomRate.test.js.map +1 -0
  423. package/dist/tests/jest/providers/LanguageProvider.test.d.ts +1 -0
  424. package/dist/tests/jest/providers/LanguageProvider.test.js +32 -0
  425. package/dist/tests/jest/providers/LanguageProvider.test.js.map +1 -0
  426. package/dist/tests/jest/providers/SessionProvider.test.d.ts +1 -0
  427. package/dist/tests/jest/providers/SessionProvider.test.js +230 -0
  428. package/dist/tests/jest/providers/SessionProvider.test.js.map +1 -0
  429. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.d.ts +1 -0
  430. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js +126 -0
  431. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js.map +1 -0
  432. package/dist/tests/jest/reducers/BasketReducer.test.d.ts +1 -0
  433. package/dist/tests/jest/reducers/BasketReducer.test.js +103 -0
  434. package/dist/tests/jest/reducers/BasketReducer.test.js.map +1 -0
  435. package/dist/tests/offline/RoomstayBestRateAlert.d.ts +1 -0
  436. package/dist/tests/offline/RoomstayBestRateAlert.js +48 -0
  437. package/dist/tests/offline/RoomstayBestRateAlert.js.map +1 -0
  438. package/dist/tests/offline/entry/RSCompany.js +7 -2
  439. package/dist/tests/offline/entry/RSCompany.js.map +1 -1
  440. package/dist/tests/offline/entry/ReactWrapper.d.ts +1 -0
  441. package/dist/tests/offline/entry/ReactWrapper.js +140 -0
  442. package/dist/tests/offline/entry/ReactWrapper.js.map +1 -0
  443. package/dist/tests/offline/entry/allEngines.d.ts +1 -0
  444. package/dist/tests/offline/entry/allEngines.js +50 -0
  445. package/dist/tests/offline/entry/allEngines.js.map +1 -0
  446. package/dist/tests/offline/entry/components/TestPicker.d.ts +1 -0
  447. package/dist/tests/offline/entry/components/TestPicker.js +214 -0
  448. package/dist/tests/offline/entry/components/TestPicker.js.map +1 -0
  449. package/dist/tests/offline/entry/context/EngineContext.d.ts +9 -0
  450. package/dist/tests/offline/entry/context/EngineContext.js +37 -0
  451. package/dist/tests/offline/entry/context/EngineContext.js.map +1 -0
  452. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.d.ts +1 -0
  453. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js +68 -0
  454. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js.map +1 -0
  455. package/dist/tests/setupTests.d.ts +0 -0
  456. package/dist/tests/setupTests.js +12 -0
  457. package/dist/tests/setupTests.js.map +1 -0
  458. package/dist/vendors.bundle.js +1 -1
  459. package/package.json +3 -3
  460. package/dist/14.bundle.js +0 -1
  461. package/dist/559.bundle.js +0 -1
  462. package/dist/848.bundle.js +0 -1
  463. package/dist/962.bundle.js +0 -1
  464. package/dist/main.bundle.js.LICENSE.txt +0 -5
  465. package/dist/src/components/temp/Login.d.ts +0 -2
  466. package/dist/src/components/temp/Login.js +0 -79
  467. package/dist/src/components/temp/Login.js.map +0 -1
  468. package/dist/test.bundle.js.LICENSE.txt +0 -5
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ require("../../../src/api/BookingAPI");
16
+ const SessionProvider_1 = __importDefault(require("../../../src/providers/SessionProvider"));
17
+ const LocalStorageProvider_1 = require("../../../src/providers/storage/LocalStorageProvider");
18
+ const RoomstaySession_1 = require("../../../src/models/RoomstaySession");
19
+ const dayjs_1 = __importDefault(require("dayjs"));
20
+ const BasketRow_1 = __importDefault(require("../../../src/models/BasketRow"));
21
+ const RoomRate_1 = require("../../../src/models/Room/RoomRate");
22
+ const Room_1 = require("../../../src/models/Room/Room");
23
+ describe('Session Provider Tests', () => {
24
+ let session;
25
+ beforeEach(() => {
26
+ localStorage.clear();
27
+ sessionStorage.clear();
28
+ session = new SessionProvider_1.default();
29
+ });
30
+ describe('Session Provider Initialization', () => {
31
+ it('creates a new session id if none are passed through', () => {
32
+ expect.assertions(1);
33
+ const session = new SessionProvider_1.default();
34
+ return session.setSessionID().then(() => expect(session.getCurrentSessionID()).toBeTruthy());
35
+ });
36
+ it('re-uses a session if an ID is passed through', () => __awaiter(void 0, void 0, void 0, function* () {
37
+ const sessionId = new Date().getTime();
38
+ const sessionStorageProvider = new LocalStorageProvider_1.LocalStorageProvider(sessionStorage);
39
+ yield sessionStorageProvider.write('currentSession', sessionId);
40
+ const localStorageProvider = new LocalStorageProvider_1.LocalStorageProvider();
41
+ yield localStorageProvider.write(`session-${sessionId}`, { id: sessionId });
42
+ const session = new SessionProvider_1.default();
43
+ yield session.initialize(sessionId);
44
+ expect(session.getCurrentSessionID()).toBe(sessionId);
45
+ }));
46
+ it('saves session to storage when created', () => __awaiter(void 0, void 0, void 0, function* () {
47
+ const session = new SessionProvider_1.default();
48
+ yield session.initialize();
49
+ const sessionId = session.getCurrentSessionID();
50
+ expect(sessionId).toBeTruthy();
51
+ expect(localStorage.getItem(`roomstay-session-${sessionId}`)).toBeTruthy();
52
+ }));
53
+ it('sets the current session id in sessionStorage', () => __awaiter(void 0, void 0, void 0, function* () {
54
+ const session = new SessionProvider_1.default();
55
+ yield session.initialize();
56
+ const sessionId = session.getCurrentSessionID();
57
+ expect(JSON.parse(sessionStorage.getItem('roomstay-currentSession')).value).toBe(sessionId);
58
+ }));
59
+ });
60
+ describe('Loading a Session Object', () => {
61
+ it('by default returns a blank session record', () => __awaiter(void 0, void 0, void 0, function* () {
62
+ const state = yield session.getSession();
63
+ expect(state).toBeTruthy();
64
+ expect(state.id).toBeGreaterThan(1000000);
65
+ }));
66
+ it('loads and serializes an object from storage', () => __awaiter(void 0, void 0, void 0, function* () {
67
+ const id = new Date().getTime();
68
+ const storage = new LocalStorageProvider_1.LocalStorageProvider();
69
+ const serializedSession = {
70
+ id,
71
+ startDate: '2020-12-24',
72
+ endDate: '2020-12-25',
73
+ source: '',
74
+ hotelID: '',
75
+ step: 'StepRoom',
76
+ basketRows: [],
77
+ };
78
+ storage.write(`session-${id}`, serializedSession);
79
+ session = new SessionProvider_1.default();
80
+ yield session.initialize(id);
81
+ const state = yield session.getSession();
82
+ expect(state.id).toBe(id);
83
+ }));
84
+ it('loads basket rows correctly mapped', () => __awaiter(void 0, void 0, void 0, function* () {
85
+ var _a, _b;
86
+ const id = new Date().getTime();
87
+ const basketRow = new BasketRow_1.default();
88
+ const room = new Room_1.Room();
89
+ room.code = 'TESTCODE';
90
+ room.name = 'Test Room Code';
91
+ const rate = new RoomRate_1.RoomRate();
92
+ rate.code = 'TEST';
93
+ rate.name = 'Test Rate';
94
+ rate.setRoom(room);
95
+ basketRow.setRate(rate);
96
+ const startDate = (0, dayjs_1.default)().add(1, 'day');
97
+ const endDate = (0, dayjs_1.default)().add(3, 'day');
98
+ yield session.saveSession({
99
+ startDate,
100
+ endDate,
101
+ id: session.getCurrentSessionID(),
102
+ source: '',
103
+ hotelID: '',
104
+ step: 'StepConfirmation',
105
+ basketRows: [basketRow],
106
+ });
107
+ const loadedState = yield session.getSession();
108
+ expect((_a = loadedState.startDate) === null || _a === void 0 ? void 0 : _a.isSame(startDate, 'date')).toBeTruthy();
109
+ expect((_b = loadedState.endDate) === null || _b === void 0 ? void 0 : _b.isSame(endDate, 'date')).toBeTruthy();
110
+ expect(loadedState.basketRows.length).toBeGreaterThan(0);
111
+ }));
112
+ });
113
+ describe('Session Find and Retrieve', () => {
114
+ it('finds all stored sessions in the storage', () => __awaiter(void 0, void 0, void 0, function* () {
115
+ const startDate = (0, dayjs_1.default)().add(1, 'day');
116
+ const endDate = (0, dayjs_1.default)().add(3, 'day');
117
+ const room = new Room_1.Room();
118
+ const rate = new RoomRate_1.RoomRate();
119
+ rate.setRoom(room);
120
+ const basketRow = new BasketRow_1.default();
121
+ basketRow.setAdults(2);
122
+ basketRow.setStartDate(startDate);
123
+ basketRow.setEndDate(endDate);
124
+ basketRow.setRate(rate);
125
+ const partialState = {
126
+ id: session.getCurrentSessionID(),
127
+ startDate,
128
+ endDate,
129
+ source: '',
130
+ hotelID: '',
131
+ step: 'StepRoom',
132
+ basketRows: [basketRow, basketRow],
133
+ };
134
+ //First write the session, with the auto-generated ID
135
+ yield session.saveSession(partialState);
136
+ //Then change over the sessionID
137
+ yield session.setSessionID(new Date().getTime());
138
+ //And write another session down
139
+ yield session.saveSession(Object.assign(Object.assign({}, partialState), { id: session.getCurrentSessionID() }));
140
+ const allSessions = yield session.getAllSessions();
141
+ expect(allSessions.length).toBe(2);
142
+ }));
143
+ });
144
+ describe('Saving session to local storage', () => {
145
+ it('breaks out of save if no save parameter is passed', () => __awaiter(void 0, void 0, void 0, function* () {
146
+ const session = new SessionProvider_1.default();
147
+ const serializeCall = jest.spyOn(session, 'serializeSession');
148
+ yield session.saveSession(null);
149
+ expect(serializeCall).not.toHaveBeenCalled();
150
+ }));
151
+ it('saves current state in a serialized format', () => __awaiter(void 0, void 0, void 0, function* () {
152
+ const partialState = {
153
+ id: session.getCurrentSessionID(),
154
+ startDate: (0, dayjs_1.default)().add(1, 'day'),
155
+ endDate: (0, dayjs_1.default)().add(3, 'day'),
156
+ source: '',
157
+ hotelID: '',
158
+ step: 'StepRoom',
159
+ basketRows: [],
160
+ };
161
+ yield session.saveSession(partialState);
162
+ const storage = new LocalStorageProvider_1.LocalStorageProvider();
163
+ const rawStore = yield storage.read(`session-${session.getCurrentSessionID()}`);
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
+ expect(rawStore === null || rawStore === void 0 ? void 0 : rawStore.endDate).toBe((0, dayjs_1.default)().add(3, 'day').format(RoomstaySession_1.SERIALIZED_DATE_FORMAT));
166
+ expect(rawStore === null || rawStore === void 0 ? void 0 : rawStore.step).toBe('StepRoom');
167
+ expect(rawStore === null || rawStore === void 0 ? void 0 : rawStore.basketRows.length).toBe(0);
168
+ }));
169
+ it('saves current state of all basket rows correctly', () => __awaiter(void 0, void 0, void 0, function* () {
170
+ const startDate = (0, dayjs_1.default)().add(1, 'day');
171
+ const endDate = (0, dayjs_1.default)().add(3, 'day');
172
+ const room = new Room_1.Room();
173
+ const rate = new RoomRate_1.RoomRate();
174
+ rate.setRoom(room);
175
+ const basketRow = new BasketRow_1.default();
176
+ basketRow.setAdults(2);
177
+ basketRow.setStartDate(startDate);
178
+ basketRow.setEndDate(endDate);
179
+ basketRow.setRate(rate);
180
+ const partialState = {
181
+ id: session.getCurrentSessionID(),
182
+ startDate,
183
+ endDate,
184
+ step: 'StepRoom',
185
+ source: '',
186
+ hotelID: '123',
187
+ basketRows: [basketRow, basketRow],
188
+ };
189
+ yield session.saveSession(partialState);
190
+ const storage = new LocalStorageProvider_1.LocalStorageProvider();
191
+ const rawStore = yield storage.read(`session-${session.getCurrentSessionID()}`);
192
+ expect(rawStore === null || rawStore === void 0 ? void 0 : rawStore.basketRows.length).toBe(2);
193
+ expect(rawStore === null || rawStore === void 0 ? void 0 : rawStore.basketRows[0].startDate).toBe(startDate.format(RoomstaySession_1.SERIALIZED_DATE_FORMAT));
194
+ }));
195
+ });
196
+ describe('Updating individual values of the state', () => {
197
+ it('updates only the changed values of the state', () => __awaiter(void 0, void 0, void 0, function* () {
198
+ var _a, _b;
199
+ yield session.initialize();
200
+ const startDate = (0, dayjs_1.default)();
201
+ yield session.updateSession({ startDate });
202
+ // Hacky way to get around the debounce timeout
203
+ yield (() => new Promise((resolve) => {
204
+ setTimeout(resolve, 350);
205
+ }))();
206
+ let state = yield session.getSession();
207
+ expect((_a = state.startDate) === null || _a === void 0 ? void 0 : _a.isSame(startDate, 'day')).toBeTruthy();
208
+ const endDate = (0, dayjs_1.default)();
209
+ const room = new Room_1.Room();
210
+ const rate = new RoomRate_1.RoomRate();
211
+ rate.setRoom(room);
212
+ const basketRow = new BasketRow_1.default();
213
+ basketRow.setAdults(2);
214
+ basketRow.setStartDate(startDate);
215
+ basketRow.setEndDate(endDate);
216
+ basketRow.setRate(rate);
217
+ const basketRows = [basketRow];
218
+ expect(state.basketRows.length).toBe(0);
219
+ yield session.updateSession({ endDate, basketRows });
220
+ // Hacky way to get around the debounce timeout
221
+ yield (() => new Promise((resolve) => {
222
+ setTimeout(resolve, 350);
223
+ }))();
224
+ state = yield session.getSession();
225
+ expect((_b = state.endDate) === null || _b === void 0 ? void 0 : _b.isSame(endDate, 'day')).toBeTruthy();
226
+ expect(state.basketRows.length).toBe(1);
227
+ }));
228
+ });
229
+ });
230
+ //# sourceMappingURL=SessionProvider.test.js.map
@@ -0,0 +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 SessionProvider from '../../../src/providers/SessionProvider';\nimport { LocalStorageProvider } from '../../../src/providers/storage/LocalStorageProvider';\nimport { SerializedRoomstaySession, RoomstaySession, SERIALIZED_DATE_FORMAT } from '../../../src/models/RoomstaySession';\nimport dayjs from 'dayjs';\nimport BasketRow from '../../../src/models/BasketRow';\nimport { RoomRate } from '../../../src/models/Room/RoomRate';\nimport { Room } from '../../../src/models/Room/Room';\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"]}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const LocalStorageProvider_1 = require("../../../../src/providers/storage/LocalStorageProvider");
13
+ const StorageProvider_1 = require("../../../../src/providers/storage/StorageProvider");
14
+ describe('Session Storage Provider', () => {
15
+ let savedLocalStorage;
16
+ beforeEach(() => {
17
+ savedLocalStorage = window.localStorage;
18
+ localStorage.clear();
19
+ sessionStorage.clear();
20
+ });
21
+ afterEach(() => {
22
+ Object.defineProperty(window, 'localStorage', {
23
+ value: savedLocalStorage,
24
+ });
25
+ });
26
+ describe('Writing To Storage', () => {
27
+ it('writes a number successfully to local storage', () => {
28
+ const provider = new LocalStorageProvider_1.LocalStorageProvider();
29
+ provider.write('example', 2);
30
+ expect(localStorage.getItem('roomstay-example')).toBe(JSON.stringify({
31
+ type: StorageProvider_1.StorageType.Number,
32
+ value: 2,
33
+ }));
34
+ });
35
+ it('writes a string successfully to local storage', () => {
36
+ const provider = new LocalStorageProvider_1.LocalStorageProvider();
37
+ 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
+ }));
42
+ });
43
+ it('writes an object successfully to local storage', () => {
44
+ const provider = new LocalStorageProvider_1.LocalStorageProvider();
45
+ provider.write('example', { test: 1, two: 2, three: 'four' });
46
+ 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
+ },
53
+ }));
54
+ });
55
+ it('gracefully fails if user has specifically denied local storage', () => {
56
+ var localStorageMock = (function () {
57
+ var store = {};
58
+ return {
59
+ setItem: function (key, value) {
60
+ throw new Error('Forced Exception');
61
+ },
62
+ };
63
+ })();
64
+ const provider = new LocalStorageProvider_1.LocalStorageProvider(localStorageMock);
65
+ return expect(provider.write('item', 'value')).resolves.toBeFalsy();
66
+ });
67
+ });
68
+ describe('Reading from storage', () => {
69
+ it('reads a string properly', () => {
70
+ const provider = new LocalStorageProvider_1.LocalStorageProvider();
71
+ provider.write('test', 'this will be fun');
72
+ return expect(provider.read('test')).resolves.toBe('this will be fun');
73
+ });
74
+ it('gracefully fails if someone / something injected our local storage', () => {
75
+ const provider = new LocalStorageProvider_1.LocalStorageProvider();
76
+ localStorage.setItem('roomstay-test', '{addqwdqdqe}');
77
+ return expect(provider.read('test')).resolves.toBe(null);
78
+ });
79
+ it('gracefully fails if we incur an error while reading from storage', () => {
80
+ var localStorageMock = (function () {
81
+ return {
82
+ getItem: function (key) {
83
+ throw new Error('Forced Exception');
84
+ },
85
+ setItem: window.localStorage.setItem,
86
+ };
87
+ })();
88
+ const provider = new LocalStorageProvider_1.LocalStorageProvider(localStorageMock);
89
+ return expect(provider.read('test')).resolves.toBe(null);
90
+ });
91
+ it('lists all the keys of the objects stored in storage', () => {
92
+ localStorage.setItem('roomstay-thing', 'is cool');
93
+ localStorage.setItem('roomstay-yoke', 'is cool');
94
+ localStorage.setItem('roomstay-engine', 'is cool');
95
+ localStorage.setItem('roomstay-wonder', 'is cool');
96
+ const storage = new LocalStorageProvider_1.LocalStorageProvider();
97
+ expect(storage.getAllKeys().length).toBe(4);
98
+ });
99
+ it('lists all the keys of the objects stored in storage', () => {
100
+ localStorage.setItem('roomstay-thing', 'is cool');
101
+ localStorage.setItem('roomstay-yoke', 'is cool');
102
+ localStorage.setItem('engine', 'is cool');
103
+ localStorage.setItem('wonder', 'is cool');
104
+ const storage = new LocalStorageProvider_1.LocalStorageProvider();
105
+ expect(storage.getAllKeys().length).toBe(2);
106
+ });
107
+ it('list all the keys matching a filter', () => {
108
+ localStorage.setItem('roomstay-thing', 'is cool');
109
+ localStorage.setItem('roomstay-session-yoke', 'is cool');
110
+ localStorage.setItem('engine', 'is cool');
111
+ localStorage.setItem('wonder', 'is cool');
112
+ const storage = new LocalStorageProvider_1.LocalStorageProvider();
113
+ expect(storage.getAllKeys((name) => name.startsWith('roomstay-session')).length).toBe(1);
114
+ });
115
+ 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 });
117
+ localStorage.setItem('roomstay-thing', value);
118
+ localStorage.setItem('roomstay-session-yoke', value);
119
+ localStorage.setItem('engine', value);
120
+ const storage = new LocalStorageProvider_1.LocalStorageProvider();
121
+ const values = yield storage.readAll(['thing', 'session-yoke']);
122
+ expect(values.length).toBe(2);
123
+ }));
124
+ });
125
+ });
126
+ //# sourceMappingURL=LocalStorageProvider.test.js.map
@@ -0,0 +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"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const BasketRow_1 = __importDefault(require("../../../src/models/BasketRow"));
16
+ const RoomRate_1 = require("../../../src/models/Room/RoomRate");
17
+ const BasketReducer_1 = require("../../../src/reducers/BasketReducer");
18
+ describe('Basket Management Suite', () => {
19
+ describe('Adding basket rows', () => {
20
+ it('Adds a basket row to the list of basket rows', () => {
21
+ const initialState = [];
22
+ const newRow = new BasketRow_1.default();
23
+ const updatedState = (0, BasketReducer_1.BasketReducer)(initialState, { method: 'Add', row: newRow });
24
+ expect(updatedState.length).toBe(1);
25
+ });
26
+ it('Sets the default values if none are provided', () => {
27
+ const initialState = [];
28
+ const newRow = new BasketRow_1.default();
29
+ const updatedState = (0, BasketReducer_1.BasketReducer)(initialState, { method: 'Add', row: newRow });
30
+ expect(updatedState[0].getAdults()).toBe(1);
31
+ expect(updatedState[0].getPromoCodeStatus()).toBe('new');
32
+ });
33
+ });
34
+ describe('Removing a row from the basket', () => {
35
+ it('Decreases the row array', () => {
36
+ const newRow = new BasketRow_1.default();
37
+ const initialState = [newRow];
38
+ const updatedState = (0, BasketReducer_1.BasketReducer)(initialState, { method: 'Remove', row: newRow });
39
+ expect(updatedState.length).toBe(0);
40
+ });
41
+ it('Removes the correct basket row from the list', () => {
42
+ const newRow = new BasketRow_1.default();
43
+ const otherNewRow = new BasketRow_1.default();
44
+ const initialState = [newRow, otherNewRow];
45
+ const updatedState = (0, BasketReducer_1.BasketReducer)(initialState, { method: 'Remove', row: newRow });
46
+ expect(updatedState.includes(newRow)).toBeFalsy();
47
+ expect(updatedState.includes(otherNewRow)).toBeTruthy();
48
+ });
49
+ it('Returns original state of no row is passed', () => {
50
+ const newRow = new BasketRow_1.default();
51
+ const otherNewRow = new BasketRow_1.default();
52
+ const initialState = [newRow, otherNewRow];
53
+ const updatedState = (0, BasketReducer_1.BasketReducer)(initialState, { method: 'Remove' });
54
+ expect(updatedState).toEqual(initialState);
55
+ });
56
+ it('Clear removes all rows in the basket', () => {
57
+ const newRow = new BasketRow_1.default();
58
+ const otherNewRow = new BasketRow_1.default();
59
+ const initialState = [newRow, otherNewRow];
60
+ const updatedState = (0, BasketReducer_1.BasketReducer)(initialState, { method: 'Clear' });
61
+ expect(updatedState).toEqual([]);
62
+ });
63
+ });
64
+ describe('Updating a row from the basket', () => {
65
+ it('Updates the date on the new object', () => {
66
+ const newRow = new BasketRow_1.default();
67
+ const otherNewRow = new BasketRow_1.default();
68
+ const initialState = [newRow, otherNewRow];
69
+ newRow.setPromoCode('Updated');
70
+ const updatedState = (0, BasketReducer_1.BasketReducer)(initialState, { method: 'Update', row: newRow });
71
+ expect(updatedState[0].getPromoCode()).toBe('UPDATED');
72
+ });
73
+ it('Returns original state if no row is passed', () => {
74
+ const newRow = new BasketRow_1.default();
75
+ const initialState = [newRow];
76
+ newRow.setPromoCode('Updated');
77
+ const updatedState = (0, BasketReducer_1.BasketReducer)(initialState, { method: 'Update' });
78
+ expect(updatedState[0].getPromoCode()).toBe('UPDATED');
79
+ });
80
+ });
81
+ describe('Adding a Room to the basket', () => {
82
+ it('Returns original state if no Rate or Room is passed', () => __awaiter(void 0, void 0, void 0, function* () {
83
+ const newRow = new BasketRow_1.default();
84
+ const rate = new RoomRate_1.RoomRate();
85
+ rate.code = 'TEST';
86
+ const initialState = [newRow];
87
+ let updatedState = (0, BasketReducer_1.BasketReducer)(initialState, { method: 'AddRate' });
88
+ expect(updatedState[0].getRate()).toBeFalsy();
89
+ updatedState = (0, BasketReducer_1.BasketReducer)(initialState, { method: 'AddRate', row: newRow });
90
+ expect(updatedState[0].getRate()).toBeFalsy();
91
+ }));
92
+ it('Adds a rate to basket row', () => __awaiter(void 0, void 0, void 0, function* () {
93
+ var _a;
94
+ const newRow = new BasketRow_1.default();
95
+ const rate = new RoomRate_1.RoomRate();
96
+ rate.code = 'TEST';
97
+ const initialState = [newRow];
98
+ const updatedState = (0, BasketReducer_1.BasketReducer)(initialState, { method: 'AddRate', row: newRow, rate });
99
+ expect((_a = updatedState[0].getRate()) === null || _a === void 0 ? void 0 : _a.code).toBe('TEST');
100
+ }));
101
+ });
102
+ });
103
+ //# sourceMappingURL=BasketReducer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasketReducer.test.js","sourceRoot":"/","sources":["tests/jest/reducers/BasketReducer.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import BasketRow from '../../../src/models/BasketRow';\nimport { RoomRate } from '../../../src/models/Room/RoomRate';\nimport { BasketReducer } from '../../../src/reducers/BasketReducer';\n\ndescribe('Basket Management Suite', () => {\n describe('Adding basket rows', () => {\n it('Adds a basket row to the list of basket rows', () => {\n const initialState: BasketRow[] = [];\n const newRow = new BasketRow();\n\n const updatedState = BasketReducer(initialState, { method: 'Add', row: newRow });\n\n expect(updatedState.length).toBe(1);\n });\n\n it('Sets the default values if none are provided', () => {\n const initialState: BasketRow[] = [];\n const newRow = new BasketRow();\n\n const updatedState = BasketReducer(initialState, { method: 'Add', row: newRow });\n\n expect(updatedState[0].getAdults()).toBe(1);\n expect(updatedState[0].getPromoCodeStatus()).toBe('new');\n });\n });\n\n describe('Removing a row from the basket', () => {\n it('Decreases the row array', () => {\n const newRow = new BasketRow();\n const initialState = [newRow];\n\n const updatedState = BasketReducer(initialState, { method: 'Remove', row: newRow });\n\n expect(updatedState.length).toBe(0);\n });\n\n it('Removes the correct basket row from the list', () => {\n const newRow = new BasketRow();\n const otherNewRow = new BasketRow();\n\n const initialState = [newRow, otherNewRow];\n\n const updatedState = BasketReducer(initialState, { method: 'Remove', row: newRow });\n\n expect(updatedState.includes(newRow)).toBeFalsy();\n expect(updatedState.includes(otherNewRow)).toBeTruthy();\n });\n\n it('Returns original state of no row is passed', () => {\n const newRow = new BasketRow();\n const otherNewRow = new BasketRow();\n\n const initialState = [newRow, otherNewRow];\n\n const updatedState = BasketReducer(initialState, { method: 'Remove' });\n\n expect(updatedState).toEqual(initialState);\n });\n\n it('Clear removes all rows in the basket', () => {\n const newRow = new BasketRow();\n const otherNewRow = new BasketRow();\n\n const initialState = [newRow, otherNewRow];\n\n const updatedState = BasketReducer(initialState, { method: 'Clear' });\n\n expect(updatedState).toEqual([]);\n });\n });\n\n describe('Updating a row from the basket', () => {\n it('Updates the date on the new object', () => {\n const newRow = new BasketRow();\n const otherNewRow = new BasketRow();\n\n const initialState = [newRow, otherNewRow];\n\n newRow.setPromoCode('Updated');\n const updatedState = BasketReducer(initialState, { method: 'Update', row: newRow });\n\n expect(updatedState[0].getPromoCode()).toBe('UPDATED');\n });\n\n it('Returns original state if no row is passed', () => {\n const newRow = new BasketRow();\n\n const initialState = [newRow];\n\n newRow.setPromoCode('Updated');\n const updatedState = BasketReducer(initialState, { method: 'Update' });\n\n expect(updatedState[0].getPromoCode()).toBe('UPDATED');\n });\n });\n\n describe('Adding a Room to the basket', () => {\n it('Returns original state if no Rate or Room is passed', async () => {\n const newRow = new BasketRow();\n\n const rate = new RoomRate();\n rate.code = 'TEST';\n\n const initialState = [newRow];\n\n let updatedState = BasketReducer(initialState, { method: 'AddRate' });\n expect(updatedState[0].getRate()).toBeFalsy();\n\n updatedState = BasketReducer(initialState, { method: 'AddRate', row: newRow });\n expect(updatedState[0].getRate()).toBeFalsy();\n });\n\n it('Adds a rate to basket row', async () => {\n const newRow = new BasketRow();\n\n const rate = new RoomRate();\n rate.code = 'TEST';\n\n const initialState = [newRow];\n\n const updatedState = BasketReducer(initialState, { method: 'AddRate', row: newRow, rate });\n\n expect(updatedState[0].getRate()?.code).toBe('TEST');\n });\n });\n});\n"]}
@@ -0,0 +1 @@
1
+ export default function RoomstayBestRateAlert(): JSX.Element;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const react_1 = __importDefault(require("react"));
30
+ const react_i18next_1 = require("react-i18next");
31
+ const Alert_1 = __importDefault(require("../../src/components/generic/Alert"));
32
+ const Icon_1 = require("../../src/components/generic/Icon/Icon");
33
+ const Text_1 = __importStar(require("../../src/components/generic/Text"));
34
+ const Translation_1 = require("../../src/translations/Translation");
35
+ const react_2 = require("react");
36
+ const contexts_1 = require("../../src/contexts/index.js");
37
+ const STEP_ROOM_BEST_RATE_ALERT = 'StepRoomBestRateAlert';
38
+ function RoomstayBestRateAlert() {
39
+ const basketContext = (0, react_2.useContext)(contexts_1.BasketContext);
40
+ const { t } = (0, react_i18next_1.useTranslation)();
41
+ const isEditingRow = !!(basketContext.selectedBasketRow && basketContext.selectedBasketRow.isValid());
42
+ return (react_1.default.createElement(Alert_1.default, { icon: Icon_1.IconType.Money, noMargin: !isEditingRow },
43
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small },
44
+ react_1.default.createElement("strong", null, t(Translation_1.Translation.Misc.Alerts.BestRatePerks)),
45
+ " - Lowest prices and the Roomstay perks only when you book here on roomstay.io")));
46
+ }
47
+ exports.default = RoomstayBestRateAlert;
48
+ //# sourceMappingURL=RoomstayBestRateAlert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoomstayBestRateAlert.js","sourceRoot":"/","sources":["tests/offline/RoomstayBestRateAlert.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAE1B,iDAA+C;AAC/C,+EAAuD;AACvD,iEAAkE;AAClE,0EAAmE;AACnE,oEAAiE;AACjE,iCAAmC;AAEnC,iDAAmD;AAEnD,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAE1D,SAAwB,qBAAqB;IACzC,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,iBAAiB,IAAI,aAAa,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;IAEtG,OAAO,CACH,8BAAC,eAAK,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,YAAY;QAChD,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;YACtB,8CAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAU;6FACxD,CACH,CACX,CAAC;AACN,CAAC;AAZD,wCAYC","sourcesContent":["import React from 'react';\n\nimport { useTranslation } from 'react-i18next';\nimport Alert from '../../src/components/generic/Alert';\nimport { IconType } from '../../src/components/generic/Icon/Icon';\nimport Text, { TextType } from '../../src/components/generic/Text';\nimport { Translation } from '../../src/translations/Translation';\nimport { useContext } from 'react';\n\nimport { BasketContext } from '@frontend/contexts';\n\nconst STEP_ROOM_BEST_RATE_ALERT = 'StepRoomBestRateAlert';\n\nexport default function RoomstayBestRateAlert() {\n const basketContext = useContext(BasketContext);\n const { t } = useTranslation();\n const isEditingRow = !!(basketContext.selectedBasketRow && basketContext.selectedBasketRow.isValid());\n\n return (\n <Alert icon={IconType.Money} noMargin={!isEditingRow}>\n <Text type={TextType.Small}>\n <strong>{t(Translation.Misc.Alerts.BestRatePerks)}</strong> - Lowest prices and the Roomstay perks only when you book here on roomstay.io\n </Text>\n </Alert>\n );\n}\n"]}