@evenicanpm/storefront-core 1.0.4 → 1.0.6

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 (343) hide show
  1. package/package.json +8 -10
  2. package/src/api-manager/datasources/d365/d365-address.datasource.ts +2 -2
  3. package/src/api-manager/datasources/d365/d365-cart.datasource.ts +3 -3
  4. package/src/api-manager/datasources/d365/d365-categories.datasource.ts +2 -2
  5. package/src/api-manager/datasources/d365/d365-order.datasource.ts +3 -3
  6. package/src/api-manager/datasources/d365/d365-organization.datasource.ts +2 -2
  7. package/src/api-manager/datasources/d365/d365-product.datasource.ts +5 -5
  8. package/src/api-manager/datasources/d365/d365-session.datasource.ts +2 -2
  9. package/src/api-manager/datasources/d365/d365-user.datasource.ts +2 -2
  10. package/src/api-manager/datasources/d365/d365.datasource.ts +8 -8
  11. package/src/api-manager/datasources/d365/index.ts +2 -2
  12. package/src/api-manager/datasources/e4/address/e4-address.datasource.ts +4 -4
  13. package/src/api-manager/datasources/e4/address/e4-address.remaps.ts +1 -1
  14. package/src/api-manager/datasources/e4/address/e4-address.translator.ts +7 -3
  15. package/src/api-manager/datasources/e4/cart/e4-cart.datasource.ts +7 -7
  16. package/src/api-manager/datasources/e4/cart/e4-cart.remaps.ts +7 -3
  17. package/src/api-manager/datasources/e4/cart/e4-cart.translator.ts +2 -2
  18. package/src/api-manager/datasources/e4/categories/e4-categories.datasource.ts +2 -2
  19. package/src/api-manager/datasources/e4/categories/e4-categories.translator.ts +1 -1
  20. package/src/api-manager/datasources/e4/e4.datasource.ts +9 -9
  21. package/src/api-manager/datasources/e4/graphqlRequestSdk.ts +2175 -138
  22. package/src/api-manager/datasources/e4/order/e4-order.datasource.ts +6 -3
  23. package/src/api-manager/datasources/e4/order/e4-order.remaps.ts +2 -2
  24. package/src/api-manager/datasources/e4/organization/e4-organization.datasource.ts +1 -1
  25. package/src/api-manager/datasources/e4/product/e4-product.datasource.ts +4 -4
  26. package/src/api-manager/datasources/e4/product/e4-product.remaps.ts +2 -2
  27. package/src/api-manager/datasources/e4/product/e4-product.translator.ts +3 -3
  28. package/src/api-manager/datasources/e4/session/e4-session.datasource.ts +2 -2
  29. package/src/api-manager/datasources/e4/session/e4-session.translator.ts +1 -1
  30. package/src/api-manager/datasources/e4/user/e4-user.datasource.ts +4 -4
  31. package/src/api-manager/datasources/e4/user/e4-user.remaps.ts +5 -2
  32. package/src/api-manager/datasources/e4/user/e4-user.translator.ts +5 -2
  33. package/src/api-manager/datasources/e4/utils/unwrap-e4-variants.ts +6 -2
  34. package/src/api-manager/index.ts +4 -4
  35. package/src/api-manager/lib/get-graphql-client.ts +1 -1
  36. package/src/api-manager/schemas/address.schema.ts +1 -1
  37. package/src/api-manager/schemas/cart.schema.ts +1 -1
  38. package/src/api-manager/schemas/order.schema.ts +1 -1
  39. package/src/api-manager/schemas/organization.schema.ts +1 -1
  40. package/src/api-manager/schemas/product.schema.ts +1 -1
  41. package/src/api-manager/schemas/session.schema.ts +2 -2
  42. package/src/api-manager/schemas/user.schema.ts +1 -1
  43. package/src/api-manager/services/address/mutations/create-address.ts +2 -2
  44. package/src/api-manager/services/address/mutations/delete-address.ts +2 -2
  45. package/src/api-manager/services/address/mutations/get-delivery-options.ts +2 -2
  46. package/src/api-manager/services/address/mutations/update-address.ts +2 -2
  47. package/src/api-manager/services/address/queries/get-countries.ts +2 -2
  48. package/src/api-manager/services/address/queries/get-states.ts +4 -1
  49. package/src/api-manager/services/cart/mutations/add-discount-code.ts +3 -3
  50. package/src/api-manager/services/cart/mutations/add-to-cart.ts +3 -3
  51. package/src/api-manager/services/cart/mutations/checkout.ts +2 -2
  52. package/src/api-manager/services/cart/mutations/delete-cart-line.ts +3 -3
  53. package/src/api-manager/services/cart/mutations/get-payment-accept-result.ts +2 -2
  54. package/src/api-manager/services/cart/mutations/remove-cart-line-delivery-mode.ts +3 -3
  55. package/src/api-manager/services/cart/mutations/remove-discount-code.ts +3 -3
  56. package/src/api-manager/services/cart/mutations/update-cart-line-delivery-mode.ts +3 -3
  57. package/src/api-manager/services/cart/mutations/update-cart-lines.ts +3 -3
  58. package/src/api-manager/services/cart/mutations/update-cart.ts +3 -3
  59. package/src/api-manager/services/cart/queries/get-cart-lines-inventory.ts +4 -1
  60. package/src/api-manager/services/cart/queries/get-cart.ts +2 -2
  61. package/src/api-manager/services/cart/queries/get-payment-accept-point.ts +4 -1
  62. package/src/api-manager/services/categories/queries/get-categories.ts +5 -2
  63. package/src/api-manager/services/create-mutation.ts +2 -2
  64. package/src/api-manager/services/create-query.ts +2 -2
  65. package/src/api-manager/services/order/queries/get-order-details.ts +4 -1
  66. package/src/api-manager/services/order/queries/get-orders.ts +4 -1
  67. package/src/api-manager/services/organization/queries/get-channel-configuration.ts +4 -1
  68. package/src/api-manager/services/organization/queries/get-stores.ts +4 -1
  69. package/src/api-manager/services/product/mutations/search-products.ts +1 -1
  70. package/src/api-manager/services/product/queries/get-product-availability.ts +4 -1
  71. package/src/api-manager/services/product/queries/get-product-by-id.ts +5 -2
  72. package/src/api-manager/services/product/queries/get-product-by-ids.ts +5 -2
  73. package/src/api-manager/services/product/queries/get-product-list.ts +4 -1
  74. package/src/api-manager/services/product/queries/get-product-prices.ts +4 -1
  75. package/src/api-manager/services/product/queries/get-related-products.ts +5 -2
  76. package/src/api-manager/services/product/queries/search-products.ts +4 -1
  77. package/src/api-manager/services/product/server/product.server.ts +2 -2
  78. package/src/api-manager/services/session/mutations/session-init.ts +2 -2
  79. package/src/api-manager/services/session/mutations/session-logout.ts +2 -2
  80. package/src/api-manager/services/session/queries/get-session.ts +4 -1
  81. package/src/api-manager/services/user/mutations/add-to-wishlist.ts +5 -3
  82. package/src/api-manager/services/user/mutations/copy-cart-to-wishlist.ts +2 -2
  83. package/src/api-manager/services/user/mutations/create-wishlist.ts +2 -2
  84. package/src/api-manager/services/user/mutations/delete-wishlist.ts +3 -3
  85. package/src/api-manager/services/user/mutations/remove-from-wishlist.ts +6 -4
  86. package/src/api-manager/services/user/mutations/update-user.ts +2 -2
  87. package/src/api-manager/services/user/mutations/update-wishlist.ts +2 -2
  88. package/src/api-manager/services/user/queries/get-user-counts.ts +4 -1
  89. package/src/api-manager/services/user/queries/get-user.ts +4 -1
  90. package/src/api-manager/services/user/queries/get-wishlist-details.ts +4 -1
  91. package/src/api-manager/services/user/queries/get-wishlists.ts +4 -1
  92. package/src/api-manager/types/Datasource.ts +2 -2
  93. package/src/auth/auth-options.test.ts +1 -1
  94. package/src/auth/auth-options.ts +1 -1
  95. package/src/auth/providers/index.ts +3 -3
  96. package/src/auth/refresh-token.ts +2 -2
  97. package/src/cms/blocks/{BlockManager.tsx → block-manager.tsx} +2 -2
  98. package/src/cms/blocks/{Components/BrandLogosScroller.tsx → components/brand-logos-scroller.tsx} +1 -1
  99. package/src/cms/blocks/{Components/CategoryCarousel → components/category-carousel}/index.tsx +3 -3
  100. package/src/cms/blocks/{Components/FeaturePill.tsx → components/feature-pill.tsx} +1 -1
  101. package/src/cms/blocks/{Components/FeaturedCategories.tsx → components/featured-categories.tsx} +2 -2
  102. package/src/cms/blocks/{Components/FeaturedProducts.tsx → components/featured-products.tsx} +2 -2
  103. package/src/cms/blocks/{Components/Footer → components/footer}/index.tsx +7 -4
  104. package/src/cms/blocks/{Components/Footer/sections/FooterContact.tsx → components/footer/sections/footer-contact.tsx} +3 -3
  105. package/src/cms/blocks/{Components/Footer/sections/FooterLinks.tsx → components/footer/sections/footer-links.tsx} +5 -2
  106. package/src/cms/blocks/{Components/Footer/sections/FooterSocialLinks.tsx → components/footer/sections/footer-social-links.tsx} +1 -1
  107. package/src/cms/blocks/{Components/Footer.tsx → components/footer.tsx} +1 -1
  108. package/src/cms/blocks/{Components/HeroCarousel → components/hero-carousel}/index.tsx +1 -1
  109. package/src/cms/blocks/{Components/Hero.tsx → components/hero.tsx} +1 -1
  110. package/src/cms/blocks/{Components/Image.tsx → components/image.tsx} +1 -1
  111. package/src/cms/blocks/{Components/ProductCarousel → components/product-carousel}/index.tsx +2 -2
  112. package/src/cms/blocks/{Components/ProductSectionFullWidth → components/product-section-fullwidth}/index.tsx +2 -2
  113. package/src/cms/blocks/{Components/Seo → components/seo}/index.tsx +1 -1
  114. package/src/cms/blocks/{Components/Services → components/services}/index.tsx +2 -2
  115. package/src/cms/blocks/{Components/Services → components/services}/service-card.tsx +1 -1
  116. package/src/cms/blocks/{Icons → icons}/index.ts +7 -7
  117. package/src/cms/blocks/index.tsx +15 -15
  118. package/src/cms/blog.ts +2 -2
  119. package/src/cms/endpoints.ts +1 -1
  120. package/src/cms/interfaces/navigation.ts +9 -9
  121. package/src/cms/pages.ts +1 -1
  122. package/src/components-v2/BazaarMenu.tsx +2 -0
  123. package/src/components-v2/BazaarTextField.tsx +1 -1
  124. package/src/components-v2/DropZone.tsx +4 -1
  125. package/src/components-v2/ImageWithFallback.tsx +1 -1
  126. package/src/components-v2/accordion/index.ts +1 -1
  127. package/src/components-v2/carousel/carousel.tsx +3 -3
  128. package/src/components-v2/carousel/components/carousel-arrows.tsx +1 -1
  129. package/src/components-v2/carousel/components/carousel-dots.tsx +4 -1
  130. package/src/components-v2/carousel/index.ts +1 -1
  131. package/src/components-v2/carousel-cards/carousel-card-1/carousel-card-1.tsx +1 -1
  132. package/src/components-v2/carousel-cards/carousel-card-1/index.ts +1 -1
  133. package/src/components-v2/categories/category-list/category-list.tsx +7 -4
  134. package/src/components-v2/categories/category-list/index.ts +1 -1
  135. package/src/components-v2/categories/category-list/styles.ts +1 -1
  136. package/src/components-v2/categories/category-list-item/category-menu-item.tsx +1 -1
  137. package/src/components-v2/categories/category-list-item/index.ts +1 -1
  138. package/src/components-v2/categories/category-menu.tsx +1 -1
  139. package/src/components-v2/categories/mega-menu/column-list.tsx +1 -1
  140. package/src/components-v2/categories/mega-menu/mega-menu-1.tsx +2 -2
  141. package/src/components-v2/categories/mega-menu/mega-menu-2.tsx +4 -4
  142. package/src/components-v2/flex-box/index.ts +3 -3
  143. package/src/components-v2/header/{components → __tests__}/user.test.tsx +51 -29
  144. package/src/components-v2/header/components/mobile-header.tsx +3 -3
  145. package/src/components-v2/header/components/user.tsx +8 -5
  146. package/src/components-v2/header/header.tsx +8 -5
  147. package/src/components-v2/header/index.ts +1 -1
  148. package/src/components-v2/header/sticky-header.tsx +1 -1
  149. package/src/components-v2/mini-cart/__tests__/cart-item.test.tsx +31 -40
  150. package/src/components-v2/mini-cart/__tests__/mini-cart.test.tsx +7 -8
  151. package/src/components-v2/mini-cart/index.ts +1 -1
  152. package/src/components-v2/mini-cart/mini-cart-trigger.tsx +1 -1
  153. package/src/components-v2/mini-cart/mini-cart.tsx +7 -7
  154. package/src/components-v2/mobile-navigation/index.ts +1 -1
  155. package/src/components-v2/mobile-navigation/mobile-navigation-bar.tsx +6 -1
  156. package/src/components-v2/nav-link/index.ts +3 -3
  157. package/src/components-v2/navbar/categories.tsx +1 -1
  158. package/src/components-v2/navbar/category-based-menu/category-based-menu.tsx +2 -2
  159. package/src/components-v2/navbar/category-based-menu/index.ts +1 -1
  160. package/src/components-v2/navbar/index.ts +1 -1
  161. package/src/components-v2/navbar/mega-menu/index.ts +1 -1
  162. package/src/components-v2/navbar/mega-menu/mega-menu.tsx +6 -1
  163. package/src/components-v2/navbar/mobile-menu/index.ts +1 -1
  164. package/src/components-v2/navbar/mobile-menu/mobile-menu.test.tsx +7 -13
  165. package/src/components-v2/navbar/mobile-menu/mobile-menu.tsx +1 -1
  166. package/src/components-v2/navbar/nav-list/cms-nav.test.tsx +16 -10
  167. package/src/components-v2/navbar/nav-list/index.ts +1 -1
  168. package/src/components-v2/navbar/nav-list/nav-item-child.tsx +4 -1
  169. package/src/components-v2/navbar/nav-list/nav-list.tsx +8 -4
  170. package/src/components-v2/navbar/navbar.tsx +6 -3
  171. package/src/components-v2/navbar/utils/transform-nav.test.ts +4 -1
  172. package/src/components-v2/product-cards/product-card/components/hover-actions.tsx +1 -1
  173. package/src/components-v2/product-cards/product-card/index.ts +1 -1
  174. package/src/components-v2/product-cards/product-card/product-card.tsx +10 -6
  175. package/src/components-v2/product-cards/product-card-plp/index.ts +1 -1
  176. package/src/components-v2/product-cards/product-card-plp/product-card.tsx +5 -5
  177. package/src/components-v2/product-cards/product-card-plp-list/index.ts +1 -1
  178. package/src/components-v2/product-cards/product-card-plp-list/product-card.tsx +7 -8
  179. package/src/components-v2/product-cards/product-card-search/index.ts +1 -1
  180. package/src/components-v2/product-cards/product-card-search/product-card.tsx +2 -2
  181. package/src/components-v2/product-dialog/compound/product-dialog.tsx +61 -45
  182. package/src/components-v2/product-dialog/index.tsx +1 -2
  183. package/src/components-v2/product-dimensions/compound/dimensions-group-error.tsx +3 -3
  184. package/src/components-v2/product-dimensions/compound/dimensions-group-label.tsx +1 -1
  185. package/src/components-v2/product-dimensions/compound/dimensions-group-list-chip.tsx +1 -1
  186. package/src/components-v2/product-dimensions/compound/dimensions-group-list.tsx +2 -2
  187. package/src/components-v2/product-dimensions/compound/dimensions-group.tsx +3 -3
  188. package/src/components-v2/product-dimensions/compound/dimensions.tsx +1 -1
  189. package/src/components-v2/product-dimensions/index.tsx +1 -1
  190. package/src/components-v2/product-quantity-buttons/compound/quantity-buttons-root.tsx +1 -1
  191. package/src/components-v2/product-quantity-buttons/index.tsx +2 -2
  192. package/src/components-v2/products-view/compound/products-grid-view.tsx +2 -2
  193. package/src/components-v2/products-view/compound/products-list-view.tsx +2 -2
  194. package/src/components-v2/products-view/compound/types.ts +1 -1
  195. package/src/components-v2/products-view/index.tsx +2 -2
  196. package/src/components-v2/progress/index.ts +1 -1
  197. package/src/components-v2/scrollbar/index.ts +1 -1
  198. package/src/components-v2/scrollbar/scrollbar.tsx +1 -1
  199. package/src/components-v2/search-bar/compound/results-item-lg.tsx +4 -1
  200. package/src/components-v2/search-bar/compound/results-item-sm.tsx +4 -1
  201. package/src/components-v2/search-bar/compound/results-suspense.tsx +4 -4
  202. package/src/components-v2/search-bar/compound/results.tsx +5 -2
  203. package/src/components-v2/search-bar/compound/search-bar-root.tsx +5 -5
  204. package/src/components-v2/search-bar/compound/textfield-adornment-category.tsx +2 -2
  205. package/src/components-v2/search-bar/compound/textfield.tsx +5 -5
  206. package/src/components-v2/search-bar/index.tsx +1 -1
  207. package/src/components-v2/section/compound/section-header.tsx +6 -3
  208. package/src/components-v2/section/compound/section.tsx +1 -1
  209. package/src/components-v2/section/index.ts +1 -1
  210. package/src/components-v2/side-nav/index.ts +1 -1
  211. package/src/components-v2/sticky/index.ts +1 -1
  212. package/src/components-v2/sticky/sticky.tsx +1 -1
  213. package/src/components-v2/wishlist-dialogs/__tests__/create-new-list.test.tsx +82 -0
  214. package/src/components-v2/wishlist-dialogs/__tests__/wishlistDetailData.json +280 -0
  215. package/src/components-v2/wishlist-dialogs/__tests__/wishlistsData.json +38 -0
  216. package/src/components-v2/wishlist-dialogs/add-to-wishlist/add-to-wishlist-button.tsx +1 -1
  217. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-bottom-ui.tsx +1 -1
  218. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-dialog.tsx +4 -4
  219. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-list.tsx +5 -2
  220. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/context.ts +1 -1
  221. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-header.tsx +1 -1
  222. package/src/components-v2/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-item.tsx +6 -3
  223. package/src/components-v2/wishlist-dialogs/add-to-wishlist/hooks/use-add-to-wishlist.ts +1 -1
  224. package/src/components-v2/wishlist-dialogs/add-to-wishlist/index.tsx +1 -1
  225. package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-bottom-ui.tsx +1 -1
  226. package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-dialog.tsx +2 -2
  227. package/src/components-v2/wishlist-dialogs/create-wishlist/compound/create-wishlist-form.tsx +2 -2
  228. package/src/components-v2/wishlist-dialogs/create-wishlist/create-wishlist-button.tsx +1 -1
  229. package/src/components-v2/wishlist-dialogs/create-wishlist/index.tsx +1 -1
  230. package/src/lib/build-detail-url.ts +1 -1
  231. package/src/lib/cart-cookie-handler.ts +1 -1
  232. package/src/pages-v2/account/account-navigation.tsx +183 -0
  233. package/src/pages-v2/account/addresses/address-form.tsx +187 -186
  234. package/src/pages-v2/account/addresses/address-item.tsx +118 -56
  235. package/src/pages-v2/account/dashboard-header.tsx +103 -76
  236. package/src/pages-v2/account/orders/order-progress.tsx +104 -65
  237. package/src/pages-v2/account/orders/order-row.tsx +69 -32
  238. package/src/pages-v2/account/orders/order-summary.tsx +96 -62
  239. package/src/pages-v2/account/orders/ordered-products.tsx +128 -87
  240. package/src/pages-v2/account/profile/profile-button.test.tsx +1 -1
  241. package/src/pages-v2/account/profile/user-info.tsx +59 -34
  242. package/src/pages-v2/account/wishlist/create-new-list.tsx +181 -127
  243. package/src/pages-v2/account/wishlist/create-wishlist-button.tsx +16 -3
  244. package/src/pages-v2/account/wishlist/wishlist-item.tsx +93 -42
  245. package/src/pages-v2/cart/__tests__/cart-item.test.tsx +225 -0
  246. package/src/pages-v2/cart/__tests__/cart-with-items.json +811 -0
  247. package/src/pages-v2/cart/__tests__/checkout-form.test.tsx +148 -0
  248. package/src/pages-v2/cart/__tests__/conutries.json +19407 -0
  249. package/src/pages-v2/cart/__tests__/estimate-shipping.test.tsx +86 -0
  250. package/src/pages-v2/cart/cart-item.tsx +387 -258
  251. package/src/pages-v2/cart/checkout-form.tsx +141 -48
  252. package/src/pages-v2/cart/coupon-entry.tsx +121 -58
  253. package/src/pages-v2/cart/estimate-shipping.tsx +174 -118
  254. package/src/pages-v2/checkout/checkout-alt-form/checkout-form.tsx +153 -76
  255. package/src/pages-v2/checkout/checkout-alt-form/checkout-step.tsx +128 -77
  256. package/src/pages-v2/checkout/checkout-alt-form/index.ts +1 -1
  257. package/src/pages-v2/checkout/checkout-alt-form/{heading.tsx → step-heading.tsx} +1 -1
  258. package/src/pages-v2/checkout/checkout-alt-form/steps/address/address-card.tsx +131 -0
  259. package/src/pages-v2/checkout/checkout-alt-form/steps/address/delivery-address.tsx +450 -0
  260. package/src/pages-v2/checkout/checkout-alt-form/steps/address/new-address-form.tsx +322 -0
  261. package/src/pages-v2/checkout/checkout-alt-form/steps/address/styles.ts +27 -0
  262. package/src/pages-v2/checkout/checkout-alt-form/steps/customer-info/customer-information.tsx +139 -0
  263. package/src/pages-v2/checkout/checkout-alt-form/{payment-details.tsx → steps/payment/payment-details.tsx} +123 -141
  264. package/src/pages-v2/checkout/checkout-alt-form/{delivery-date.tsx → steps/shipping/delivery-date.tsx} +3 -3
  265. package/src/pages-v2/checkout/checkout-alt-form/{delivery-options.tsx → steps/shipping/delivery-options.tsx} +97 -50
  266. package/src/pages-v2/checkout/checkout-alt-summary/cart-item.tsx +58 -28
  267. package/src/pages-v2/checkout/checkout-alt-summary/checkout-alt-summary.tsx +69 -22
  268. package/src/pages-v2/checkout/checkout-alt-summary/index.ts +1 -1
  269. package/src/pages-v2/checkout/checkout-alt-summary/list-item.tsx +56 -14
  270. package/src/pages-v2/confirmation/address.tsx +37 -15
  271. package/src/pages-v2/confirmation/confirmation-summary.tsx +80 -41
  272. package/src/pages-v2/confirmation/ordered-products.tsx +127 -95
  273. package/src/pages-v2/product-details/bopis/find-in-store-button.tsx +2 -2
  274. package/src/pages-v2/product-details/bopis/find-in-store-modal.tsx +4 -4
  275. package/src/pages-v2/product-details/bopis/pickup-option-select.tsx +1 -1
  276. package/src/pages-v2/product-details/bopis/store-card/index.ts +1 -1
  277. package/src/pages-v2/product-details/bopis/store-card/shop-card.tsx +3 -3
  278. package/src/pages-v2/product-details/frequently-bought.tsx +1 -1
  279. package/src/pages-v2/product-details/product-filter-card.tsx +2 -2
  280. package/src/pages-v2/product-details/product-intro/compound/context.ts +1 -4
  281. package/src/pages-v2/product-details/product-intro/compound/product-info.tsx +6 -3
  282. package/src/pages-v2/product-details/product-intro/compound/product-intro-images.tsx +6 -3
  283. package/src/pages-v2/product-details/product-intro/compound/product-intro.tsx +4 -4
  284. package/src/pages-v2/product-details/product-intro/utils.ts +0 -1
  285. package/src/pages-v2/product-details/product-review.tsx +5 -2
  286. package/src/pages-v2/product-details/product-tabs.tsx +1 -1
  287. package/src/pages-v2/quickorder/context.ts +39 -0
  288. package/src/pages-v2/quickorder/index.tsx +31 -0
  289. package/src/pages-v2/quickorder/order-upload.tsx +19 -26
  290. package/src/pages-v2/quickorder/provider.tsx +187 -0
  291. package/src/pages-v2/quickorder/quick-order-actions.tsx +30 -0
  292. package/src/pages-v2/quickorder/quick-order-header.tsx +22 -0
  293. package/src/pages-v2/quickorder/quick-order-row.tsx +8 -17
  294. package/src/pages-v2/quickorder/quick-order-table.tsx +63 -0
  295. package/src/pages-v2/quickorder/quick-order-upload.tsx +20 -0
  296. package/src/providers/nav-provider/index.tsx +1 -1
  297. package/src/providers/notifications/notification-context.tsx +1 -1
  298. package/src/providers/notifications/use-notification.ts +1 -1
  299. package/tsconfig.json +2 -1
  300. package/src/api-manager/lib/get-graphql-client.test.ts +0 -106
  301. package/src/components/_components/header/components/user.test.tsx +0 -200
  302. package/src/components/_components/mini-cart/__tests__/cart-item.test.tsx +0 -174
  303. package/src/components/_components/mini-cart/__tests__/mini-cart.test.tsx +0 -121
  304. package/src/components/_components/mini-cart/__tests__/test-cart-empty.json +0 -84
  305. package/src/components/_components/mini-cart/__tests__/test-cart-with-item.json +0 -244
  306. package/src/components/_components/navbar/mobile-menu/render-levels.test.tsx +0 -71
  307. package/src/components/_components/navbar/nav-list/cms-nav.test.tsx +0 -84
  308. package/src/components/_components/navbar/utils/transform-nav.test.ts +0 -209
  309. package/src/components/_components/search-box/__test__/search-input-category.test.tsx +0 -110
  310. package/src/components/_components/search-box/__test__/search-input.test.tsx +0 -137
  311. package/src/components/_components/search-box/__test__/search-results.json +0 -165
  312. package/src/components/_components/search-box/search-input-category.test.tsx +0 -110
  313. package/src/components/_components/search-box/search-input.test.tsx +0 -41
  314. package/src/components-v2/bazaar-types.ts +0 -84
  315. package/src/pages-v2/account/navigation.tsx +0 -87
  316. package/src/pages-v2/checkout/checkout-alt-form/address-card.tsx +0 -76
  317. package/src/pages-v2/checkout/checkout-alt-form/customer-information.tsx +0 -94
  318. package/src/pages-v2/checkout/checkout-alt-form/delivery-address.tsx +0 -174
  319. package/src/pages-v2/checkout/checkout-alt-form/edit-address-form.tsx +0 -130
  320. package/src/pages-v2/checkout/checkout-alt-form/new-address-form.tsx +0 -299
  321. package/src/pages-v2/quickorder/quick-order-form.tsx +0 -346
  322. /package/src/cms/blocks/{Components/CategoryCard.tsx → components/category-card.tsx} +0 -0
  323. /package/src/cms/blocks/{Components/Footer → components/footer}/data/index.ts +0 -0
  324. /package/src/cms/blocks/{Components/Footer → components/footer}/interfaces.ts +0 -0
  325. /package/src/cms/blocks/{Components/Footer/sections/FooterAppStore.tsx → components/footer/sections/footer-app-store.tsx} +0 -0
  326. /package/src/cms/blocks/{Components/Footer/sections/FooterLogo.tsx → components/footer/sections/footer-logo.tsx} +0 -0
  327. /package/src/cms/blocks/{Components/Footer → components/footer}/styles/index.ts +0 -0
  328. /package/src/cms/blocks/{Components/MediaCard.tsx → components/media-card.tsx} +0 -0
  329. /package/src/cms/blocks/{Components/RichText.tsx → components/rich-text.tsx} +0 -0
  330. /package/src/cms/blocks/{Components → components}/shared/featured-product-card.tsx +0 -0
  331. /package/src/cms/blocks/{Components → components}/shared/product-category-item.tsx +0 -0
  332. /package/src/cms/blocks/{Components → components}/shared/product-grid.tsx +0 -0
  333. /package/src/cms/blocks/{Components → components}/shared/top-categories-card.tsx +0 -0
  334. /package/src/cms/blocks/{Components → components}/shared/top-rating-product-card.tsx +0 -0
  335. /package/src/cms/blocks/{Icons/Components/Category.tsx → icons/components/category.tsx} +0 -0
  336. /package/src/cms/blocks/{Icons/Components/DottedStar.tsx → icons/components/dotted-star.tsx} +0 -0
  337. /package/src/cms/blocks/{Icons/Components/FallbackIcon.tsx → icons/components/fallback-icon.tsx} +0 -0
  338. /package/src/cms/blocks/{Icons/Components/GiftBox.tsx → icons/components/gift-box.tsx} +0 -0
  339. /package/src/cms/blocks/{Icons/Components/Light.tsx → icons/components/light.tsx} +0 -0
  340. /package/src/cms/blocks/{Icons/Components/NewArrival.tsx → icons/components/new-arrival.tsx} +0 -0
  341. /package/src/cms/blocks/{Icons/Components/RankBadge.tsx → icons/components/rank-badge.tsx} +0 -0
  342. /package/src/cms/interfaces/{productData.ts → product-data.ts} +0 -0
  343. /package/src/pages-v2/checkout/checkout-alt-form/{safe-card-preview-data.tsx → steps/payment/safe-card-preview-data.tsx} +0 -0
@@ -1,110 +0,0 @@
1
- import SearchInputWithCategories from "../../../../../../../../../storefront/src/app/_components/search-box/search-input-category";
2
- import { render, screen, waitFor } from "@testing-library/react";
3
- import { expect, describe, it, vi, beforeAll } from "vitest";
4
- import userEvent from "@testing-library/user-event";
5
- import { categories } from "@app/_components/navbar/utils/transform-nav.test";
6
- import NavProvider from "@components/NavProvider";
7
- import { CategoryHierarchy } from "@lib/category-helpers";
8
-
9
- beforeAll(() => {
10
- vi.mock("next/navigation", () => ({
11
- usePathname: vi.fn().mockReturnValue("/"),
12
- }));
13
- vi.mock("@services/product", () => {
14
- return {
15
- searchProducts: vi.fn().mockReturnValue([
16
- {
17
- Name: "Shorts",
18
- ItemCode: 1,
19
- Category: { RecordId: 10, ParentCategory: 11 },
20
- },
21
- {
22
- Name: "Ladies Shorts",
23
- ItemCode: 2,
24
- Category: { RecordId: 2, ParentCategory: 1 },
25
- },
26
- ]),
27
- };
28
- });
29
- vi.mock("next/headers", () => ({
30
- cookies: vi.fn().mockReturnValue(new Map([["storefront", "token"]])),
31
- }));
32
- });
33
-
34
- describe("SearchInputWithCategories", async () => {
35
- it.skip("should render the search input and the category button", () => {
36
- render(<SearchInputWithCategories />);
37
- const input = screen.getByRole("textbox");
38
- const categories = screen.getByText(/all categories/i);
39
-
40
- expect(input).toBeInTheDocument();
41
- expect(categories).toBeInTheDocument();
42
- });
43
-
44
- it.skip("Handles category change and changes the button text to selected.", async () => {
45
- const user = userEvent.setup();
46
-
47
- render(
48
- <NavProvider
49
- categories={categories as unknown as CategoryHierarchy[]}
50
- cmsNav={[]}
51
- >
52
- <SearchInputWithCategories />
53
- </NavProvider>,
54
- );
55
-
56
- const categoriesButton = screen.getByText(/all categories/i);
57
- await user.click(categoriesButton);
58
- const dropdownMenuItem = await screen.findByText("Women");
59
-
60
- screen.debug(undefined, 10000);
61
- await user.click(dropdownMenuItem);
62
- const buttonWithNewText = screen.getByRole("button", {
63
- name: /Women/i,
64
- });
65
-
66
- expect(buttonWithNewText).toBeInTheDocument();
67
- });
68
-
69
- it.skip("should render search results after user types", async () => {
70
- const user = userEvent.setup();
71
-
72
- render(<SearchInputWithCategories />);
73
-
74
- const input = screen.getByRole("textbox");
75
- expect(screen.queryByText("Shorts")).not.toBeInTheDocument();
76
-
77
- await user.click(input);
78
- await user.keyboard("Shorts"); // search term doesn't matter here, mock will return data regardless
79
-
80
- expect(await screen.findByText("Shorts")).toBeInTheDocument();
81
- });
82
-
83
- it.skip("should filter search results by category", async () => {
84
- const user = userEvent.setup();
85
- render(
86
- <NavProvider
87
- categories={categories as unknown as CategoryHierarchy[]}
88
- cmsNav={[]}
89
- >
90
- <SearchInputWithCategories />
91
- </NavProvider>,
92
- );
93
-
94
- const categoriesButton = screen.getByText(/all categories/i);
95
- const input = screen.getByRole("textbox");
96
-
97
- await user.click(input);
98
- await user.keyboard("Shorts");
99
- expect(await screen.findByText("Shorts")).toBeInTheDocument();
100
-
101
- await user.click(categoriesButton);
102
- const dropdownMenuItem = await screen.findByText("Women");
103
- await user.click(dropdownMenuItem);
104
- await user.click(input);
105
- await user.keyboard("Shorts");
106
-
107
- waitFor(() => expect(screen.getByText("Shorts")).not.toBeInTheDocument());
108
- expect(screen.queryByText("Ladies Shorts")).toBeInTheDocument();
109
- });
110
- });
@@ -1,137 +0,0 @@
1
- import { render, screen } from "@testing-library/react";
2
- import { expect, describe, it, vi, beforeAll } from "vitest";
3
- import userEvent from "@testing-library/user-event";
4
- import { NextIntlClientProvider } from "next-intl";
5
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
6
- import ENUS from "../../../../../../../../../storefront/messages/en-US.json";
7
- import { act } from "react";
8
- import searchResultsData from "./search-results.json";
9
- import SearchInput from "../search-input";
10
- import { NotificationProvider } from "@/components/Notifications/notification-context";
11
-
12
- const queryClient = new QueryClient();
13
- const Wrapper = ({ children }: { children: React.ReactNode }) => (
14
- <NextIntlClientProvider locale="en-US" messages={ENUS}>
15
- <NotificationProvider>
16
- <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
17
- </NotificationProvider>
18
- </NextIntlClientProvider>
19
- );
20
-
21
- const searchResults = searchResultsData;
22
- const mockSearchProducts = vi.fn().mockResolvedValue(searchResults);
23
-
24
- function sleep(ms: number) {
25
- return new Promise((resolve) => setTimeout(resolve, ms));
26
- }
27
-
28
- beforeAll(() => {
29
- vi.mock("next/navigation", () => ({
30
- usePathname: vi.fn().mockReturnValue("/"),
31
- }));
32
- // vi.mock("@/api-manager/services/product/mutations/search-products", () => ({
33
- // default: () => ({
34
- // mutateAsync: vi.fn().mockReturnValue([
35
- // {
36
- // Name: "Amber Sports Sunglasses",
37
- // ItemId: "91007",
38
- // Price: 250,
39
- // },
40
- // ]),
41
- // }),
42
- // }));
43
- vi.mock("@/api-manager/services/product/mutations/search-products", () => ({
44
- default: () => ({
45
- mutateAsync: mockSearchProducts,
46
- }),
47
- }));
48
- vi.mock("next/headers", () => ({
49
- cookies: vi.fn().mockReturnValue(new Map([["storefront", "token"]])),
50
- }));
51
- window.matchMedia = vi.fn().mockImplementation((query) => ({
52
- matches: true, // to mock mobile screen
53
- media: query,
54
- onchange: null,
55
- addListener: vi.fn(),
56
- removeListener: vi.fn(),
57
- addEventListener: vi.fn(),
58
- removeEventListener: vi.fn(),
59
- dispatchEvent: vi.fn(),
60
- }));
61
- // vi.mock("@mui/material/useMediaQuery", () => ({
62
- // default: vi.fn().mockReturnValue(true), // to mock mobile screen
63
- // }));
64
- });
65
- const handleCloseDrawer = vi.fn();
66
- describe("SearchInput", () => {
67
- it("should render the search input", () => {
68
- render(
69
- <Wrapper>
70
- <SearchInput handleCloseDrawer={handleCloseDrawer} />
71
- </Wrapper>,
72
- );
73
- const input = screen.getByRole("textbox");
74
- expect(input).toBeInTheDocument();
75
- });
76
-
77
- it("should render search results with item names and prices after user types", async () => {
78
- const user = userEvent.setup();
79
-
80
- render(
81
- <Wrapper>
82
- <SearchInput handleCloseDrawer={handleCloseDrawer} />
83
- </Wrapper>,
84
- );
85
- const input = screen.getAllByRole("textbox")[0];
86
- expect(
87
- screen.queryByText("Three Stone Diamond White Gold Ring"),
88
- ).not.toBeInTheDocument();
89
-
90
- // user.click(input);
91
- // user.keyboard("shorts"); // search term doesn't matter here, mock will return data regardless
92
-
93
- await act(async () => {
94
- await user.type(input, "ring");
95
- });
96
- expect(input).toHaveValue("ring");
97
- await act(async () => await sleep(1000)); // TODO: replace with debounce
98
- expect(mockSearchProducts).toHaveBeenCalledTimes(1);
99
- // make sure its mobile version of search results
100
- expect(
101
- await screen.findByText("Three Stone Diamond White Gold Ring"),
102
- ).toBeInTheDocument();
103
- expect(await screen.findByText("$410.00")).toBeInTheDocument();
104
- });
105
-
106
- it("should have the correct link", async () => {
107
- const user = userEvent.setup();
108
-
109
- render(
110
- <Wrapper>
111
- <SearchInput handleCloseDrawer={handleCloseDrawer} />
112
- </Wrapper>,
113
- );
114
- const input = screen.getAllByRole("textbox")[0];
115
- expect(
116
- screen.queryByText("Three Stone Diamond White Gold Ring"),
117
- ).not.toBeInTheDocument();
118
-
119
- // user.click(input);
120
- // user.keyboard("shorts"); // search term doesn't matter here, mock will return data regardless
121
-
122
- await act(async () => {
123
- await user.type(input, "ring");
124
- });
125
- expect(input).toHaveValue("ring");
126
- await act(async () => await sleep(1000)); // TODO: replace with debounce
127
- // make sure its mobile version of search results
128
- const link = screen.getByRole("link", {
129
- name: "product Three Stone Diamond White Gold Ring $410.00",
130
- });
131
- expect(link).toBeInTheDocument();
132
- expect(link).toHaveAttribute(
133
- "href",
134
- "/product/Three Stone Diamond White Gold Ring/68719492176",
135
- );
136
- });
137
- });
@@ -1,165 +0,0 @@
1
- [
2
- {
3
- "ItemId": "91078",
4
- "Name": "Three Stone Diamond White Gold Ring",
5
- "Price": 410,
6
- "PrimaryImageUrl": "Products/91078_000_001.png",
7
- "RecordId": 68719492176,
8
- "ProductNumber": "91078",
9
- "AverageRating": 4.071428571428571,
10
- "TotalRatings": 14,
11
- "Description": "Three diamonds on a white gold band.",
12
- "BasePrice": 410,
13
- "AttributeValues": [],
14
- "IsMasterProduct": true,
15
- "MasterProductId": 68719492176,
16
- "DefaultUnitOfMeasure": "ea",
17
- "ExtensionProperties": []
18
- },
19
- {
20
- "ItemId": "91079",
21
- "Name": "Three Stone Diamond Trellis Ring",
22
- "Price": 440,
23
- "PrimaryImageUrl": "Products/91079_000_001.png",
24
- "RecordId": 68719492185,
25
- "ProductNumber": "91079",
26
- "TotalRatings": 0,
27
- "Description": "A trellis band complete with three stone diamonds.",
28
- "BasePrice": 440,
29
- "AttributeValues": [],
30
- "IsMasterProduct": true,
31
- "MasterProductId": 68719492185,
32
- "DefaultUnitOfMeasure": "ea",
33
- "ExtensionProperties": []
34
- },
35
- {
36
- "ItemId": "91077",
37
- "Name": "Four Stone Diamond White Gold Ring",
38
- "Price": 360,
39
- "PrimaryImageUrl": "Products/91077_000_001.png",
40
- "RecordId": 68719492166,
41
- "ProductNumber": "91077",
42
- "TotalRatings": 0,
43
- "Description": "A white gold band complete with four stone diamonds.",
44
- "BasePrice": 360,
45
- "AttributeValues": [],
46
- "IsMasterProduct": true,
47
- "MasterProductId": 68719492166,
48
- "DefaultUnitOfMeasure": "ea",
49
- "ExtensionProperties": []
50
- },
51
- {
52
- "ItemId": "93040",
53
- "Name": "Ombre Fringe Skirt",
54
- "Price": 95,
55
- "PrimaryImageUrl": "Products/93040_000_001.png",
56
- "RecordId": 68719494571,
57
- "ProductNumber": "93040",
58
- "AverageRating": 4.235294117647059,
59
- "TotalRatings": 17,
60
- "Description": "This ombre red-to-white fringe skirt is both elegant and fun.",
61
- "BasePrice": 95,
62
- "AttributeValues": [],
63
- "IsMasterProduct": true,
64
- "MasterProductId": 68719494571,
65
- "DefaultUnitOfMeasure": "ea",
66
- "ExtensionProperties": []
67
- },
68
- {
69
- "ItemId": "91085",
70
- "Name": "Gold Wrapped Pearl Earrings",
71
- "Price": 95,
72
- "PrimaryImageUrl": "Products/91085_000_001.png",
73
- "RecordId": 68719492200,
74
- "ProductNumber": "91085",
75
- "AverageRating": 3.9166666666666665,
76
- "TotalRatings": 12,
77
- "Description": "Pearls wrapped in gold held by golden clasps.",
78
- "BasePrice": 95,
79
- "AttributeValues": [],
80
- "IsMasterProduct": false,
81
- "MasterProductId": 0,
82
- "DefaultUnitOfMeasure": "ea",
83
- "ExtensionProperties": []
84
- },
85
- {
86
- "ItemId": "91081",
87
- "Name": "3\" Feather Earrings",
88
- "Price": 55,
89
- "PrimaryImageUrl": "Products/91081_000_001.png",
90
- "RecordId": 68719492196,
91
- "ProductNumber": "91081",
92
- "TotalRatings": 0,
93
- "Description": "Black 3\" feathers held by gold clips.",
94
- "BasePrice": 55,
95
- "AttributeValues": [],
96
- "IsMasterProduct": false,
97
- "MasterProductId": 0,
98
- "DefaultUnitOfMeasure": "ea",
99
- "ExtensionProperties": []
100
- },
101
- {
102
- "ItemId": "91080",
103
- "Name": "4\" Feather Earrings",
104
- "Price": 60,
105
- "PrimaryImageUrl": "Products/91080_000_001.png",
106
- "RecordId": 68719492195,
107
- "ProductNumber": "91080",
108
- "TotalRatings": 0,
109
- "Description": "Dark grey 4\" feathers at the end of gold clips.",
110
- "BasePrice": 60,
111
- "AttributeValues": [],
112
- "IsMasterProduct": false,
113
- "MasterProductId": 0,
114
- "DefaultUnitOfMeasure": "ea",
115
- "ExtensionProperties": []
116
- },
117
- {
118
- "ItemId": "91045",
119
- "Name": "Herringbone Fedora",
120
- "Price": 180,
121
- "PrimaryImageUrl": "Products/91045_000_001.png",
122
- "RecordId": 68719495883,
123
- "ProductNumber": "91045",
124
- "TotalRatings": 0,
125
- "Description": "A grey band circling a fedora complete with a herringbone pattern. \n",
126
- "BasePrice": 180,
127
- "AttributeValues": [],
128
- "IsMasterProduct": true,
129
- "MasterProductId": 68719495883,
130
- "DefaultUnitOfMeasure": "ea",
131
- "ExtensionProperties": []
132
- },
133
- {
134
- "ItemId": "91086",
135
- "Name": "Embedded Pearl Earrings",
136
- "Price": 85,
137
- "PrimaryImageUrl": "Products/91086_000_001.png",
138
- "RecordId": 68719492201,
139
- "ProductNumber": "91086",
140
- "TotalRatings": 0,
141
- "Description": "Pearls embedded in sterling silver earrings.",
142
- "BasePrice": 85,
143
- "AttributeValues": [],
144
- "IsMasterProduct": false,
145
- "MasterProductId": 0,
146
- "DefaultUnitOfMeasure": "ea",
147
- "ExtensionProperties": []
148
- },
149
- {
150
- "ItemId": "91084",
151
- "Name": "Golden Flower Earrings",
152
- "Price": 120,
153
- "PrimaryImageUrl": "Products/91084_000_001.png",
154
- "RecordId": 68719492199,
155
- "ProductNumber": "91084",
156
- "TotalRatings": 0,
157
- "Description": "Golden 1/4\" flowers held by golden clasps.",
158
- "BasePrice": 120,
159
- "AttributeValues": [],
160
- "IsMasterProduct": false,
161
- "MasterProductId": 0,
162
- "DefaultUnitOfMeasure": "ea",
163
- "ExtensionProperties": []
164
- }
165
- ]
@@ -1,110 +0,0 @@
1
- import SearchInputWithCategories from "./search-input-category";
2
- import { render, screen, waitFor } from "@testing-library/react";
3
- import { expect, describe, it, vi, beforeAll } from "vitest";
4
- import userEvent from "@testing-library/user-event";
5
- import { categories } from "@/components/_components/navbar/utils/transform-nav.test";
6
- import NavProvider from "@/components/NavProvider/index";
7
- import { CategoryHierarchy } from "@/lib/category-helpers";
8
-
9
- beforeAll(() => {
10
- vi.mock("next/navigation", () => ({
11
- usePathname: vi.fn().mockReturnValue("/"),
12
- }));
13
- vi.mock("@services/product", () => {
14
- return {
15
- searchProducts: vi.fn().mockReturnValue([
16
- {
17
- Name: "Shorts",
18
- ItemCode: 1,
19
- Category: { RecordId: 10, ParentCategory: 11 },
20
- },
21
- {
22
- Name: "Ladies Shorts",
23
- ItemCode: 2,
24
- Category: { RecordId: 2, ParentCategory: 1 },
25
- },
26
- ]),
27
- };
28
- });
29
- vi.mock("next/headers", () => ({
30
- cookies: vi.fn().mockReturnValue(new Map([["storefront", "token"]])),
31
- }));
32
- });
33
-
34
- describe("SearchInputWithCategories", async () => {
35
- it.skip("should render the search input and the category button", () => {
36
- render(<SearchInputWithCategories />);
37
- const input = screen.getByRole("textbox");
38
- const categories = screen.getByText(/all categories/i);
39
-
40
- expect(input).toBeInTheDocument();
41
- expect(categories).toBeInTheDocument();
42
- });
43
-
44
- it.skip("Handles category change and changes the button text to selected.", async () => {
45
- const user = userEvent.setup();
46
-
47
- render(
48
- <NavProvider
49
- categories={categories as unknown as CategoryHierarchy[]}
50
- cmsNav={[]}
51
- >
52
- <SearchInputWithCategories />
53
- </NavProvider>,
54
- );
55
-
56
- const categoriesButton = screen.getByText(/all categories/i);
57
- await user.click(categoriesButton);
58
- const dropdownMenuItem = await screen.findByText("Women");
59
-
60
- screen.debug(undefined, 10000);
61
- await user.click(dropdownMenuItem);
62
- const buttonWithNewText = screen.getByRole("button", {
63
- name: /Women/i,
64
- });
65
-
66
- expect(buttonWithNewText).toBeInTheDocument();
67
- });
68
-
69
- it.skip("should render search results after user types", async () => {
70
- const user = userEvent.setup();
71
-
72
- render(<SearchInputWithCategories />);
73
-
74
- const input = screen.getByRole("textbox");
75
- expect(screen.queryByText("Shorts")).not.toBeInTheDocument();
76
-
77
- await user.click(input);
78
- await user.keyboard("Shorts"); // search term doesn't matter here, mock will return data regardless
79
-
80
- expect(await screen.findByText("Shorts")).toBeInTheDocument();
81
- });
82
-
83
- it.skip("should filter search results by category", async () => {
84
- const user = userEvent.setup();
85
- render(
86
- <NavProvider
87
- categories={categories as unknown as CategoryHierarchy[]}
88
- cmsNav={[]}
89
- >
90
- <SearchInputWithCategories />
91
- </NavProvider>,
92
- );
93
-
94
- const categoriesButton = screen.getByText(/all categories/i);
95
- const input = screen.getByRole("textbox");
96
-
97
- await user.click(input);
98
- await user.keyboard("Shorts");
99
- expect(await screen.findByText("Shorts")).toBeInTheDocument();
100
-
101
- await user.click(categoriesButton);
102
- const dropdownMenuItem = await screen.findByText("Women");
103
- await user.click(dropdownMenuItem);
104
- await user.click(input);
105
- await user.keyboard("Shorts");
106
-
107
- waitFor(() => expect(screen.getByText("Shorts")).not.toBeInTheDocument());
108
- expect(screen.queryByText("Ladies Shorts")).toBeInTheDocument();
109
- });
110
- });
@@ -1,41 +0,0 @@
1
- import SearchInput from "./search-input";
2
- import { render, screen } from "@testing-library/react";
3
- import { expect, describe, it, vi, beforeAll } from "vitest";
4
- import userEvent from "@testing-library/user-event";
5
-
6
- beforeAll(() => {
7
- vi.mock("next/navigation", () => ({
8
- usePathname: vi.fn().mockReturnValue("/"),
9
- }));
10
- vi.mock("@services/product", () => {
11
- return {
12
- searchProducts: vi
13
- .fn()
14
- .mockReturnValue([{ Name: "shorts", ItemCode: "123" }]),
15
- };
16
- });
17
- vi.mock("next/headers", () => ({
18
- cookies: vi.fn().mockReturnValue(new Map([["storefront", "token"]])),
19
- }));
20
- });
21
- const handleCloseDrawer = vi.fn();
22
- describe("SearchInput", () => {
23
- it.skip("should render the search input", () => {
24
- render(<SearchInput handleCloseDrawer={handleCloseDrawer} />);
25
- const input = screen.getByRole("textbox");
26
- expect(input).toBeInTheDocument();
27
- });
28
-
29
- it.skip("should render search results after user types", async () => {
30
- const user = userEvent.setup();
31
-
32
- render(<SearchInput handleCloseDrawer={handleCloseDrawer} />);
33
- const input = screen.getAllByRole("textbox")[0];
34
- expect(screen.queryByText("shorts")).not.toBeInTheDocument();
35
-
36
- user.click(input);
37
- user.keyboard("shorts"); // search term doesn't matter here, mock will return data regardless
38
-
39
- expect(await screen.findByText("shorts")).toBeInTheDocument();
40
- });
41
- });
@@ -1,84 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
-
3
- // These are custom types used in bazaar template project - should be replaced as we migrate screens to use data source types
4
- // Don't add any data source types here.
5
-
6
- interface Shop {
7
- id: string;
8
- slug: string;
9
- user: any;
10
- email: string;
11
- name: string;
12
- phone: string;
13
- address: string;
14
- rating?: number;
15
- verified: boolean;
16
- products?: any | Product[];
17
- coverPicture: string;
18
- profilePicture: string;
19
- socialLinks: {
20
- facebook?: string;
21
- youtube?: string;
22
- twitter?: string;
23
- instagram?: string;
24
- };
25
- }
26
-
27
- interface User {
28
- id: string;
29
- email: string;
30
- phone: string;
31
- avatar: string;
32
- password: string;
33
- dateOfBirth: Date | string;
34
- verified: boolean;
35
- name: { firstName: string; lastName: string };
36
- }
37
-
38
- interface Review {
39
- id: string;
40
- rating: number;
41
- customer: User;
42
- comment: string;
43
- product: Product;
44
- published?: boolean;
45
- }
46
-
47
- export interface Product {
48
- unit?: any;
49
- slug: string;
50
- price: number;
51
- title: string;
52
- rating: number;
53
- discount: number;
54
- thumbnail: string;
55
- id: string;
56
- shop?: Shop;
57
- brand?: string;
58
- size?: string[];
59
- status?: string;
60
- colors?: string[];
61
- images?: string[];
62
- categories: any[];
63
- reviews?: Review[];
64
- published?: boolean;
65
- }
66
-
67
- export interface Category {
68
- path: string;
69
- name: string;
70
- icon?: string;
71
- children?: Category[];
72
- }
73
-
74
- export type CategoryItem = {
75
- icon: string;
76
- title: string;
77
- href?: string;
78
- child?: { title: string; href: string }[];
79
- };
80
-
81
- export interface CategoryNavList {
82
- category: string;
83
- categoryItem: CategoryItem[];
84
- }