workarea-api 4.4.7 → 4.5.5

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 (330) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc.json +35 -0
  3. data/.github/workflows/ci.yml +35 -0
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +2 -0
  6. data/.stylelintrc.json +8 -0
  7. data/CHANGELOG.md +97 -7
  8. data/Gemfile +1 -2
  9. data/README.md +14 -1
  10. data/Rakefile +18 -8
  11. data/admin/app/controllers/workarea/api/admin/categories_controller.rb +6 -0
  12. data/admin/app/controllers/workarea/api/admin/content_assets_controller.rb +6 -0
  13. data/admin/app/controllers/workarea/api/admin/content_controller.rb +6 -0
  14. data/admin/app/controllers/workarea/api/admin/discounts_controller.rb +7 -0
  15. data/admin/app/controllers/workarea/api/admin/email_signups_controller.rb +20 -4
  16. data/admin/app/controllers/workarea/api/admin/fulfillments_controller.rb +6 -1
  17. data/admin/app/controllers/workarea/api/admin/inventory_skus_controller.rb +7 -0
  18. data/admin/app/controllers/workarea/api/admin/navigation_menus_controller.rb +7 -0
  19. data/admin/app/controllers/workarea/api/admin/navigation_taxons_controller.rb +7 -0
  20. data/admin/app/controllers/workarea/api/admin/orders_controller.rb +19 -1
  21. data/admin/app/controllers/workarea/api/admin/pages_controller.rb +7 -0
  22. data/admin/app/controllers/workarea/api/admin/payment_profiles_controller.rb +7 -0
  23. data/admin/app/controllers/workarea/api/admin/payment_transactions_controller.rb +7 -0
  24. data/admin/app/controllers/workarea/api/admin/payments_controller.rb +7 -0
  25. data/admin/app/controllers/workarea/api/admin/pricing_skus_controller.rb +7 -0
  26. data/admin/app/controllers/workarea/api/admin/products_controller.rb +11 -4
  27. data/admin/app/controllers/workarea/api/admin/promo_code_lists_controller.rb +7 -0
  28. data/admin/app/controllers/workarea/api/admin/recommendation_settings_controller.rb +1 -1
  29. data/admin/app/controllers/workarea/api/admin/redirects_controller.rb +7 -0
  30. data/admin/app/controllers/workarea/api/admin/releases_controller.rb +7 -0
  31. data/admin/app/controllers/workarea/api/admin/shipping_services_controller.rb +7 -0
  32. data/admin/app/controllers/workarea/api/admin/shippings_controller.rb +7 -0
  33. data/admin/app/controllers/workarea/api/admin/swagger_controller.rb +33 -0
  34. data/admin/app/controllers/workarea/api/admin/tax_categories_controller.rb +2 -0
  35. data/admin/app/controllers/workarea/api/admin/users_controller.rb +28 -14
  36. data/admin/app/models/workarea/api/admin/date_filtering.rb +27 -0
  37. data/admin/lib/workarea/api/admin/engine.rb +11 -0
  38. data/admin/test/documentation/workarea/api/admin/email_signups_documentation_test.rb +14 -2
  39. data/admin/test/documentation/workarea/api/admin/global_functionality_documentation_test.rb +140 -0
  40. data/admin/test/documentation/workarea/api/admin/orders_documentation_test.rb +13 -6
  41. data/admin/test/documentation/workarea/api/admin/users_documentation_test.rb +14 -2
  42. data/admin/test/dummy/config/initializers/session_store.rb +3 -1
  43. data/admin/test/integration/workarea/api/admin/categories_integration_test.rb +32 -0
  44. data/admin/test/integration/workarea/api/admin/content_assets_integration_test.rb +32 -0
  45. data/admin/test/integration/workarea/api/admin/content_integration_test.rb +32 -0
  46. data/admin/test/integration/workarea/api/admin/discounts_integration_test.rb +32 -0
  47. data/admin/test/integration/workarea/api/admin/email_signups_integration_test.rb +38 -1
  48. data/admin/test/integration/workarea/api/admin/fulfillments_integration_test.rb +22 -0
  49. data/admin/test/integration/workarea/api/admin/inventory_skus_integration_test.rb +32 -0
  50. data/admin/test/integration/workarea/api/admin/navigation_menus_integration_test.rb +32 -0
  51. data/admin/test/integration/workarea/api/admin/navigation_taxons_integration_test.rb +32 -0
  52. data/admin/test/integration/workarea/api/admin/orders_integration_test.rb +41 -2
  53. data/admin/test/integration/workarea/api/admin/pages_integration_test.rb +32 -0
  54. data/admin/test/integration/workarea/api/admin/payment_profiles_integration_test.rb +32 -0
  55. data/admin/test/integration/workarea/api/admin/payment_transactions_integration_test.rb +32 -0
  56. data/admin/test/integration/workarea/api/admin/payments_integration_test.rb +32 -0
  57. data/admin/test/integration/workarea/api/admin/pricing_skus_integration_test.rb +32 -0
  58. data/admin/test/integration/workarea/api/admin/products_integration_test.rb +35 -0
  59. data/admin/test/integration/workarea/api/admin/promo_code_lists_integration_test.rb +31 -0
  60. data/admin/test/integration/workarea/api/admin/recommendation_settings_integration_test.rb +14 -0
  61. data/admin/test/integration/workarea/api/admin/redirects_integration_test.rb +31 -0
  62. data/admin/test/integration/workarea/api/admin/releases_integration_test.rb +31 -0
  63. data/admin/test/integration/workarea/api/admin/shipping_services_integration_test.rb +31 -0
  64. data/admin/test/integration/workarea/api/admin/shippings_integration_test.rb +31 -0
  65. data/admin/test/integration/workarea/api/admin/tax_categories_integration_test.rb +31 -0
  66. data/admin/test/integration/workarea/api/admin/users_integration_test.rb +44 -1
  67. data/admin/workarea-api-admin.gemspec +2 -2
  68. data/app/views/workarea/api/docs/nav.haml +12 -0
  69. data/doc/api/admin/categories/bulk_upserting_categories.json +8 -4
  70. data/doc/api/admin/categories/creating_a_category.json +11 -8
  71. data/doc/api/admin/categories/listing_categories.json +8 -5
  72. data/doc/api/admin/categories/removing_a_category.json +8 -4
  73. data/doc/api/admin/categories/showing_a_category.json +10 -7
  74. data/doc/api/admin/categories/updating_a_category.json +9 -5
  75. data/doc/api/admin/category_product_rules/creating_a_category_product_rule.json +11 -8
  76. data/doc/api/admin/category_product_rules/listing_category_product_rules.json +10 -7
  77. data/doc/api/admin/category_product_rules/removing_a_category_product_rule.json +8 -4
  78. data/doc/api/admin/category_product_rules/updating_a_category_product_rule.json +8 -4
  79. data/doc/api/admin/content/bulk_upserting_content.json +8 -4
  80. data/doc/api/admin/content/creating_content.json +11 -8
  81. data/doc/api/admin/content/listing_content.json +8 -5
  82. data/doc/api/admin/content/showing_content.json +10 -7
  83. data/doc/api/admin/content/updating_content.json +8 -4
  84. data/doc/api/admin/content_assets/bulk_upserting_content_assets.json +8 -4
  85. data/doc/api/admin/content_assets/creating_a_content_asset.json +11 -8
  86. data/doc/api/admin/content_assets/listing_content_assets.json +8 -5
  87. data/doc/api/admin/content_assets/removing_a_content_asset.json +8 -4
  88. data/doc/api/admin/content_assets/showing_a_content_asset.json +10 -7
  89. data/doc/api/admin/content_assets/updating_a_content_asset.json +9 -5
  90. data/doc/api/admin/discounts/creating_a_discount.json +11 -8
  91. data/doc/api/admin/discounts/listing_discounts.json +8 -5
  92. data/doc/api/admin/discounts/removing_a_discount.json +8 -4
  93. data/doc/api/admin/discounts/showing_a_discount.json +10 -7
  94. data/doc/api/admin/discounts/updating_discounts.json +8 -4
  95. data/doc/api/admin/email_signups/listing_email_signups.json +7 -4
  96. data/doc/api/admin/email_signups/showing_an_email_signup.json +10 -12
  97. data/doc/api/admin/email_signups/showing_an_email_signup_by_email.json +47 -0
  98. data/doc/api/admin/email_signups/showing_an_email_signup_by_id.json +47 -0
  99. data/doc/api/admin/fulfillment/listing_fulfillments.json +7 -4
  100. data/doc/api/admin/fulfillment/marking_items_as_canceled.json +9 -6
  101. data/doc/api/admin/fulfillment/marking_items_as_shipped.json +9 -6
  102. data/doc/api/admin/fulfillment/showing_fulfillment.json +7 -4
  103. data/doc/api/admin/global_functionality/dealing_with_locales.json +86 -0
  104. data/doc/api/admin/global_functionality/filtering_by_created_at_time_stamp.json +56 -0
  105. data/doc/api/admin/global_functionality/filtering_by_updated_time_stamp.json +56 -0
  106. data/doc/api/admin/global_functionality/paging_results.json +51 -0
  107. data/doc/api/admin/global_functionality/retrieving_addtional_pages_of_results.json +51 -0
  108. data/doc/api/admin/global_functionality/sorting_results.json +56 -0
  109. data/doc/api/admin/index.json +653 -578
  110. data/doc/api/admin/inventory_skus/bulk_upserting_inventory_skus.json +8 -4
  111. data/doc/api/admin/inventory_skus/creating_an_inventory_sku.json +9 -6
  112. data/doc/api/admin/inventory_skus/listing_inventory_skus.json +7 -4
  113. data/doc/api/admin/inventory_skus/removing_an_inventory_sku.json +6 -2
  114. data/doc/api/admin/inventory_skus/showing_an_inventory_sku.json +7 -4
  115. data/doc/api/admin/inventory_skus/updating_an_inventory_sku.json +6 -2
  116. data/doc/api/admin/navigation_menus/creating_a_menu.json +11 -8
  117. data/doc/api/admin/navigation_menus/listing_menus.json +8 -5
  118. data/doc/api/admin/navigation_menus/removing_a_navigation_menu.json +8 -4
  119. data/doc/api/admin/navigation_menus/showing_a_navigation_menu.json +10 -7
  120. data/doc/api/admin/navigation_menus/updating_a_navigation_menus.json +8 -4
  121. data/doc/api/admin/navigation_taxonomy/bulk_upserting_navigation_taxons.json +8 -4
  122. data/doc/api/admin/navigation_taxonomy/creating_a_taxon.json +10 -7
  123. data/doc/api/admin/navigation_taxonomy/listing_taxons.json +7 -4
  124. data/doc/api/admin/navigation_taxonomy/removing_a_navigation_taxon.json +8 -4
  125. data/doc/api/admin/navigation_taxonomy/showing_a_navigation_taxon.json +9 -6
  126. data/doc/api/admin/navigation_taxonomy/updating_a_navigation_taxons.json +8 -4
  127. data/doc/api/admin/orders/listing_orders.json +8 -5
  128. data/doc/api/admin/orders/showing_an_order.json +8 -5
  129. data/doc/api/admin/orders/viewing_orders_by_date_range.json +17 -9
  130. data/doc/api/admin/pages/bulk_upserting_pages.json +8 -4
  131. data/doc/api/admin/pages/creating_a_page.json +11 -8
  132. data/doc/api/admin/pages/listing_pages.json +8 -5
  133. data/doc/api/admin/pages/removing_a_page.json +8 -4
  134. data/doc/api/admin/pages/showing_a_page.json +10 -7
  135. data/doc/api/admin/pages/updating_a_page.json +9 -5
  136. data/doc/api/admin/payment_profiles/bulk_upserting_payment_profiles.json +8 -4
  137. data/doc/api/admin/payment_profiles/creating_a_payment_profile.json +10 -7
  138. data/doc/api/admin/payment_profiles/listing_payment_profiles.json +7 -4
  139. data/doc/api/admin/payment_profiles/removing_a_payment_profile.json +8 -4
  140. data/doc/api/admin/payment_profiles/showing_a_payment_profile.json +9 -6
  141. data/doc/api/admin/payment_profiles/updating_a_payment_profiles.json +8 -4
  142. data/doc/api/admin/payment_transactions/listing_payment_transactions.json +7 -4
  143. data/doc/api/admin/payment_transactions/showing_a_payment_transaction.json +9 -6
  144. data/doc/api/admin/payments/listing_payments.json +7 -4
  145. data/doc/api/admin/payments/showing_an_payment.json +7 -4
  146. data/doc/api/admin/prices/creating_a_pricing_sku_price.json +8 -5
  147. data/doc/api/admin/prices/listing_pricing_sku_prices.json +8 -5
  148. data/doc/api/admin/prices/removing_a_pricing_sku_price.json +8 -4
  149. data/doc/api/admin/prices/updating_a_pricing_sku_price.json +8 -4
  150. data/doc/api/admin/pricing_skus/bulk_upserting_pricing_skus.json +8 -4
  151. data/doc/api/admin/pricing_skus/creating_an_pricing_sku.json +10 -7
  152. data/doc/api/admin/pricing_skus/listing_pricing_skus.json +8 -5
  153. data/doc/api/admin/pricing_skus/removing_an_pricing_sku.json +6 -2
  154. data/doc/api/admin/pricing_skus/showing_an_pricing_sku.json +8 -5
  155. data/doc/api/admin/pricing_skus/updating_an_pricing_sku.json +6 -2
  156. data/doc/api/admin/product_images/creating_a_product_image_from_base64.json +11 -8
  157. data/doc/api/admin/product_images/creating_a_product_image_from_url.json +11 -8
  158. data/doc/api/admin/product_images/listing_product_images.json +10 -7
  159. data/doc/api/admin/product_images/removing_a_product_image.json +8 -4
  160. data/doc/api/admin/product_images/updating_a_product_image.json +8 -4
  161. data/doc/api/admin/products/bulk_upserting_products.json +8 -4
  162. data/doc/api/admin/products/creating_a_product.json +11 -8
  163. data/doc/api/admin/products/listing_products.json +8 -5
  164. data/doc/api/admin/products/removing_a_product.json +8 -4
  165. data/doc/api/admin/products/showing_a_product.json +10 -7
  166. data/doc/api/admin/products/updating_a_product.json +9 -5
  167. data/doc/api/admin/promo_code_lists/bulk_upserting_promo_code_lists.json +8 -4
  168. data/doc/api/admin/promo_code_lists/creating_a_promo_code_list.json +10 -7
  169. data/doc/api/admin/promo_code_lists/listing_promo_code_lists.json +7 -4
  170. data/doc/api/admin/promo_code_lists/removing_a_promo_code_list.json +8 -4
  171. data/doc/api/admin/promo_code_lists/showing_a_promo_code_list.json +9 -6
  172. data/doc/api/admin/promo_code_lists/updating_a_promo_code_list.json +8 -4
  173. data/doc/api/admin/recommendation_settings/showing_recommendation_settings.json +9 -6
  174. data/doc/api/admin/recommendation_settings/updating_recommendation_settings.json +8 -4
  175. data/doc/api/admin/redirects/bulk_upserting_redirects.json +8 -4
  176. data/doc/api/admin/redirects/creating_a_redirect.json +10 -7
  177. data/doc/api/admin/redirects/listing_redirects.json +7 -4
  178. data/doc/api/admin/redirects/removing_a_redirect.json +8 -4
  179. data/doc/api/admin/redirects/showing_a_redirect.json +9 -6
  180. data/doc/api/admin/redirects/updating_a_redirects.json +8 -4
  181. data/doc/api/admin/release_changes/adding_changes_to_a_release.json +10 -6
  182. data/doc/api/admin/releases/bulk_upserting_releases.json +8 -4
  183. data/doc/api/admin/releases/creating_a_release.json +11 -8
  184. data/doc/api/admin/releases/listing_releases.json +8 -5
  185. data/doc/api/admin/releases/removing_a_release.json +8 -4
  186. data/doc/api/admin/releases/showing_a_release.json +10 -7
  187. data/doc/api/admin/releases/updating_a_release.json +9 -5
  188. data/doc/api/admin/saved_addresses/creating_a_saved_address.json +10 -7
  189. data/doc/api/admin/saved_addresses/listing_saved_address.json +9 -6
  190. data/doc/api/admin/saved_addresses/removing_a_saved_address.json +8 -4
  191. data/doc/api/admin/saved_addresses/updating_a_saved_address.json +8 -4
  192. data/doc/api/admin/saved_credit_cards/creating_a_saved_credit_card.json +11 -8
  193. data/doc/api/admin/saved_credit_cards/listing_saved_credit_cards.json +9 -6
  194. data/doc/api/admin/saved_credit_cards/removing_a_saved_credit_card.json +8 -4
  195. data/doc/api/admin/saved_credit_cards/updating_a_saved_credit_card.json +8 -4
  196. data/doc/api/admin/shipping/listing_shipments.json +7 -4
  197. data/doc/api/admin/shipping/showing_a_shipment.json +9 -6
  198. data/doc/api/admin/shipping_rates/creating_a_shipping_rate.json +10 -7
  199. data/doc/api/admin/shipping_rates/listing_shipping_rates.json +9 -6
  200. data/doc/api/admin/shipping_rates/removing_a_shipping_rate.json +8 -4
  201. data/doc/api/admin/shipping_rates/updating_a_shipping_rate.json +8 -4
  202. data/doc/api/admin/shipping_services/bulk_upserting_shipping_services.json +8 -4
  203. data/doc/api/admin/shipping_services/creating_a_shipping_service.json +10 -7
  204. data/doc/api/admin/shipping_services/listing_shipping_services.json +7 -4
  205. data/doc/api/admin/shipping_services/removing_a_shipping_service.json +8 -4
  206. data/doc/api/admin/shipping_services/showing_a_shipping_service.json +10 -7
  207. data/doc/api/admin/shipping_services/updating_a_shipping_service.json +9 -5
  208. data/doc/api/admin/tax_categories/bulk_upserting_tax_categories.json +8 -4
  209. data/doc/api/admin/tax_categories/creating_a_tax_category.json +10 -7
  210. data/doc/api/admin/tax_categories/listing_tax_categories.json +8 -5
  211. data/doc/api/admin/tax_categories/removing_a_tax_category.json +8 -4
  212. data/doc/api/admin/tax_categories/showing_a_tax_category.json +10 -7
  213. data/doc/api/admin/tax_categories/updating_a_tax_categories.json +8 -4
  214. data/doc/api/admin/tax_rates/creating_a_tax_rate.json +12 -9
  215. data/doc/api/admin/tax_rates/listing_tax_rates.json +10 -7
  216. data/doc/api/admin/tax_rates/removing_a_tax_rate.json +8 -4
  217. data/doc/api/admin/tax_rates/updating_a_tax_rate.json +8 -4
  218. data/doc/api/admin/users/bulk_upserting_users.json +8 -4
  219. data/doc/api/admin/users/creating_a_user.json +11 -8
  220. data/doc/api/admin/users/listing_users.json +8 -5
  221. data/doc/api/admin/users/removing_a_user.json +8 -4
  222. data/doc/api/admin/users/showing_a_user.json +10 -12
  223. data/doc/api/admin/users/showing_a_user_by_email.json +47 -0
  224. data/doc/api/admin/users/showing_a_user_by_id.json +47 -0
  225. data/doc/api/admin/users/updating_a_user.json +9 -5
  226. data/doc/api/admin/variants/creating_a_product_variant.json +11 -8
  227. data/doc/api/admin/variants/listing_product_variants.json +10 -7
  228. data/doc/api/admin/variants/removing_a_product_variant.json +8 -4
  229. data/doc/api/admin/variants/updating_a_product_variant.json +8 -4
  230. data/doc/api/storefront/accounts/creating_an_account.json +8 -7
  231. data/doc/api/storefront/accounts/getting_account_details.json +9 -8
  232. data/doc/api/storefront/accounts/updating_an_account.json +9 -8
  233. data/doc/api/storefront/analytics/saving_a_category_view.json +19 -6
  234. data/doc/api/storefront/analytics/saving_a_product_view.json +19 -6
  235. data/doc/api/storefront/analytics/saving_a_search.json +19 -6
  236. data/doc/api/storefront/assets/showing_an_asset.json +10 -9
  237. data/doc/api/storefront/authentication/creating_an_authentication_token.json +10 -9
  238. data/doc/api/storefront/authentication/refreshing_an_authentication_token.json +10 -9
  239. data/doc/api/storefront/authentication/using_an_authentication_token.json +11 -10
  240. data/doc/api/storefront/cart/adding_a_promo_code.json +11 -10
  241. data/doc/api/storefront/cart/adding_an_item.json +11 -10
  242. data/doc/api/storefront/cart/creating_a_new_cart_for_a_user.json +10 -9
  243. data/doc/api/storefront/cart/creating_a_new_guest_cart.json +8 -7
  244. data/doc/api/storefront/cart/delete_an_item.json +11 -10
  245. data/doc/api/storefront/cart/listing_user_s_carts.json +10 -9
  246. data/doc/api/storefront/cart/showing_cart.json +11 -10
  247. data/doc/api/storefront/cart/updating_an_item.json +11 -10
  248. data/doc/api/storefront/categories/showing_a_category.json +9 -8
  249. data/doc/api/storefront/categories/showing_a_listing_of_categories.json +9 -8
  250. data/doc/api/storefront/checkout/completing_a_checkout.json +11 -10
  251. data/doc/api/storefront/checkout/failure_to_update_a_checkout.json +52 -0
  252. data/doc/api/storefront/checkout/showing_a_checkout.json +11 -10
  253. data/doc/api/storefront/checkout/updating_a_checkout.json +10 -9
  254. data/doc/api/storefront/contacts/creating_a_contact.json +8 -7
  255. data/doc/api/storefront/email_signups/creating_an_email_signup.json +8 -7
  256. data/doc/api/storefront/email_signups/showing_an_email_signup_content.json +8 -7
  257. data/doc/api/storefront/index.json +269 -257
  258. data/doc/api/storefront/menus/listing_menus.json +9 -8
  259. data/doc/api/storefront/menus/showing_a_menu.json +11 -10
  260. data/doc/api/storefront/orders/listing_the_user_s_orders.json +10 -9
  261. data/doc/api/storefront/orders/showing_an_order.json +11 -10
  262. data/doc/api/storefront/pages/showing_a_page.json +9 -8
  263. data/doc/api/storefront/password_resets/sending_a_forgot_password_email.json +9 -7
  264. data/doc/api/storefront/personalized_recommendations/showing_recommendations_with_a_session_id.json +11 -11
  265. data/doc/api/storefront/personalized_recommendations/showing_recommendations_with_authentication.json +11 -10
  266. data/doc/api/storefront/products/showing_a_product.json +9 -8
  267. data/doc/api/storefront/products/showing_a_product_with_a_specific_sku_selected.json +9 -8
  268. data/doc/api/storefront/recent_views/showing_recent_views_from_authentication.json +11 -10
  269. data/doc/api/storefront/recent_views/showing_recent_views_with_a_session_id.json +12 -12
  270. data/doc/api/storefront/recent_views/updating_recent_views_with_a_session_id.json +7 -5
  271. data/doc/api/storefront/recent_views/updating_recent_views_with_authentication.json +9 -7
  272. data/doc/api/storefront/saved_addresses/creating_a_saved_address.json +8 -7
  273. data/doc/api/storefront/saved_addresses/deleting_a_saved_address.json +8 -6
  274. data/doc/api/storefront/saved_addresses/listing_the_user_s_saved_addresses.json +10 -9
  275. data/doc/api/storefront/saved_addresses/showing_a_saved_address.json +9 -8
  276. data/doc/api/storefront/saved_addresses/updating_a_saved_address.json +9 -8
  277. data/doc/api/storefront/saved_credit_cards/creating_a_saved_credit_card.json +9 -8
  278. data/doc/api/storefront/saved_credit_cards/deleting_a_saved_credit_card.json +8 -6
  279. data/doc/api/storefront/saved_credit_cards/listing_the_user_s_saved_credit_cards.json +10 -9
  280. data/doc/api/storefront/saved_credit_cards/showing_a_saved_credit_card.json +9 -8
  281. data/doc/api/storefront/saved_credit_cards/updating_a_saved_credit_card.json +10 -9
  282. data/doc/api/storefront/searches/showing_search_autocomplete_suggestions.json +10 -9
  283. data/doc/api/storefront/searches/showing_search_results.json +9 -8
  284. data/doc/api/storefront/segmentation/specifying_session_count_for_segmentation.json +93 -0
  285. data/doc/api/storefront/segmentation/using_session_ids_for_segmenting_non_authenticated_users.json +93 -0
  286. data/doc/api/storefront/system_content/showing_system_content.json +9 -8
  287. data/doc/api/storefront/system_content/showing_the_home_page.json +9 -8
  288. data/doc/api/storefront/taxons/showing_a_taxon.json +11 -10
  289. data/doc/api/storefront/validation_errors/checkout_validation_errors.json +12 -11
  290. data/doc/api/storefront/validation_errors/general_validation_errors.json +5 -4
  291. data/lib/tasks/docs.rake +20 -0
  292. data/lib/workarea/api/documentation_test.rb +10 -1
  293. data/lib/workarea/api/version.rb +1 -1
  294. data/storefront/app/controllers/workarea/api/storefront/analytics_controller.rb +31 -19
  295. data/storefront/app/controllers/workarea/api/storefront/application_controller.rb +15 -2
  296. data/storefront/app/controllers/workarea/api/storefront/authentication.rb +6 -9
  297. data/storefront/app/controllers/workarea/api/storefront/categories_controller.rb +3 -1
  298. data/storefront/app/controllers/workarea/api/storefront/checkouts_controller.rb +0 -1
  299. data/storefront/app/controllers/workarea/api/storefront/menus_controller.rb +3 -1
  300. data/storefront/app/controllers/workarea/api/storefront/pages_controller.rb +3 -1
  301. data/storefront/app/controllers/workarea/api/storefront/products_controller.rb +3 -1
  302. data/storefront/app/controllers/workarea/api/storefront/recent_views_controller.rb +13 -26
  303. data/storefront/app/controllers/workarea/api/storefront/recommendations_controller.rb +2 -8
  304. data/storefront/app/controllers/workarea/api/storefront/searches_controller.rb +0 -12
  305. data/storefront/app/views/workarea/api/storefront/categories/show.json.jbuilder +1 -1
  306. data/storefront/app/views/workarea/api/storefront/email_signups/show.json.jbuilder +1 -1
  307. data/storefront/app/views/workarea/api/storefront/menus/_menu.json.jbuilder +1 -1
  308. data/storefront/app/views/workarea/api/storefront/pages/show.json.jbuilder +1 -1
  309. data/storefront/app/views/workarea/api/storefront/recent_views/show.json.jbuilder +0 -1
  310. data/storefront/app/views/workarea/api/storefront/searches/show.json.jbuilder +1 -1
  311. data/storefront/app/views/workarea/api/storefront/system_content/show.json.jbuilder +1 -1
  312. data/storefront/config/initializers/config.rb +19 -0
  313. data/storefront/lib/workarea/api/storefront.rb +1 -0
  314. data/storefront/lib/workarea/api/storefront/visit.decorator +52 -0
  315. data/storefront/test/documentation/workarea/api/storefront/checkouts_documentation_test.rb +21 -0
  316. data/storefront/test/documentation/workarea/api/storefront/segmentation_documentation_test.rb +104 -0
  317. data/storefront/test/documentation/workarea/api/storefront/validation_documentation_test.rb +1 -1
  318. data/storefront/test/dummy/config/initializers/session_store.rb +3 -1
  319. data/storefront/test/integration/workarea/api/storefront/analytics_integration_test.rb +12 -7
  320. data/storefront/test/integration/workarea/api/storefront/recent_views_integration_test.rb +38 -33
  321. data/storefront/test/integration/workarea/api/storefront/recommendations_integration_test.rb +1 -1
  322. data/storefront/test/integration/workarea/api/storefront/searches_integration_test.rb +0 -36
  323. data/storefront/test/integration/workarea/api/storefront/segments_integration_test.rb +218 -0
  324. data/storefront/workarea-api-storefront.gemspec +2 -2
  325. data/workarea-api.gemspec +1 -1
  326. metadata +32 -13
  327. data/doc/api/storefront/analytics/saving_a_search_abandonment.json +0 -38
  328. data/doc/api/storefront/analytics/saving_filters.json +0 -38
  329. data/storefront/app/controllers/workarea/api/storefront/user_activity.rb +0 -36
  330. data/storefront/app/view_models/workarea/api/storefront/search_suggestion_view_model.rb +0 -21
@@ -0,0 +1,27 @@
1
+ module Workarea
2
+ module Api
3
+ module Admin
4
+ module DateFiltering
5
+ extend ActiveSupport::Concern
6
+ included do
7
+ index({ updated_at: 1 })
8
+ index({ created_at: 1 })
9
+
10
+ scope :by_updated_at, ->(starts_at:, ends_at:) do
11
+ query = criteria
12
+ query = query.where(:updated_at.gte => starts_at) unless starts_at.nil?
13
+ query = query.where(:updated_at.lte => ends_at) unless ends_at.nil?
14
+ query
15
+ end
16
+
17
+ scope :by_created_at, ->(starts_at:, ends_at:) do
18
+ query = criteria
19
+ query = query.where(:created_at.gte => starts_at) unless starts_at.nil?
20
+ query = query.where(:created_at.lte => ends_at) unless ends_at.nil?
21
+ query
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -5,9 +5,20 @@ module Workarea
5
5
  include Workarea::Plugin
6
6
  isolate_namespace Workarea::Api::Admin
7
7
 
8
+ # Depending on plugin loading order, to_prepare may cause an autoload of
9
+ # {ApplicationDocument}s so make sure we add this dependency before
10
+ # `config.to_prepare`
11
+ initializer 'workarea.api.admin.date_filtering' do
12
+ Workarea::ApplicationDocument.include(DateFiltering)
13
+ end
14
+
8
15
  config.after_initialize do
9
16
  Workarea::Api::Admin::Swagger.generate!
10
17
  end
18
+
19
+ config.to_prepare do
20
+ ApplicationDocument.include(DateFiltering)
21
+ end
11
22
  end
12
23
  end
13
24
  end
@@ -26,8 +26,8 @@ module Workarea
26
26
  end
27
27
  end
28
28
 
29
- def test_and_document_show
30
- description 'Showing an email signup'
29
+ def test_and_document_show_by_id
30
+ description 'Showing an email signup by ID'
31
31
  route admin_api.email_signup_path(':id')
32
32
 
33
33
  record_request do
@@ -35,6 +35,18 @@ module Workarea
35
35
  assert_equal(200, response.status)
36
36
  end
37
37
  end
38
+
39
+ def test_and_document_show_by_email
40
+ description 'Showing an email signup by email'
41
+ route admin_api.email_signup_path(':email')
42
+
43
+ signup = create_email_signup(email: 'test@workarea.com')
44
+
45
+ record_request do
46
+ get admin_api.email_signup_path(URI.escape(signup.email, '+@.'))
47
+ assert_equal(200, response.status)
48
+ end
49
+ end
38
50
  end
39
51
  end
40
52
  end
@@ -0,0 +1,140 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class GlobalFunctionalityDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Global Functionality'
11
+
12
+ def test_and_document_locale
13
+ description 'Dealing with locales'
14
+ route admin_api.products_path
15
+ parameter :locale, 'I18n locale key'
16
+
17
+ set_locales(available: [:en, :es], default: :en)
18
+ create_product(name_translations: {
19
+ en: 'Test Product',
20
+ es: 'Producto de prueba'
21
+ }
22
+ )
23
+
24
+ record_request do
25
+ get admin_api.products_path,
26
+ params: {
27
+ locale: 'en'
28
+ }
29
+
30
+ assert_equal(200, response.status)
31
+ end
32
+
33
+ record_request do
34
+ get admin_api.products_path,
35
+ params: {
36
+ locale: 'es'
37
+ }
38
+
39
+ assert_equal(200, response.status)
40
+ end
41
+ end
42
+
43
+ def test_and_document_filtered_by_updated_at
44
+ description 'Filtering by updated time stamp'
45
+ route admin_api.products_path
46
+ parameter :updated_at_starts_at, 'Start of a last updated at date range'
47
+ parameter :updated_at_ends_at, 'End of a last updated at date range'
48
+
49
+ 2.times { create_product }
50
+
51
+ record_request do
52
+ get admin_api.products_path,
53
+ params: {
54
+ updated_at_starts_at: 1.day.ago,
55
+ updated_at_ends_at: 1.day.from_now
56
+ }
57
+
58
+ assert_equal(200, response.status)
59
+ end
60
+ end
61
+
62
+ def test_and_document_filtered_by_created_at
63
+ description 'Filtering by created at time stamp'
64
+ route admin_api.products_path
65
+
66
+ parameter :created_at_starts_at, 'Start of a created at date range'
67
+ parameter :created_at_ends_at, 'End of a created at date range'
68
+
69
+
70
+ 2.times { create_product }
71
+
72
+ record_request do
73
+ get admin_api.products_path,
74
+ params: {
75
+ created_at_starts_at: 1.day.ago,
76
+ created_at_ends_at: 1.day.from_now
77
+ }
78
+ assert_equal(200, response.status)
79
+ end
80
+ end
81
+
82
+ def test_and_document_sorting
83
+ description 'Sorting results'
84
+ route admin_api.products_path
85
+
86
+ parameter :sort_by, 'Field on which to sort (see responses for possible values)'
87
+ parameter :sort_direction, 'Direction to sort (asc or desc)'
88
+
89
+ 2.times { create_product }
90
+
91
+ record_request do
92
+ get admin_api.products_path,
93
+ params: {
94
+ sort_by: 'created_at',
95
+ sort_direction: 'desc',
96
+ }
97
+ assert_equal(200, response.status)
98
+ end
99
+ end
100
+
101
+ def test_and_document_pagination
102
+ description 'Paging results'
103
+ route admin_api.products_path
104
+
105
+ parameter :page, 'Current page'
106
+
107
+ 2.times { create_product }
108
+
109
+ record_request do
110
+ get admin_api.products_path,
111
+ params: {
112
+ page: 1
113
+ }
114
+ assert_equal(200, response.status)
115
+ end
116
+ end
117
+
118
+ def test_and_document_additional_pages
119
+ description 'Retrieving addtional pages of results'
120
+ route admin_api.products_path
121
+
122
+ parameter :page, 'Current page'
123
+
124
+ Workarea.with_config do |config|
125
+ config.per_page = 2
126
+
127
+ 3.times { create_product }
128
+ record_request do
129
+ get admin_api.products_path,
130
+ params: {
131
+ page: 2
132
+ }
133
+ assert_equal(200, response.status)
134
+ end
135
+ end
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
@@ -34,17 +34,24 @@ module Workarea
34
34
  parameter :sort_direction, 'Direction to sort (asc or desc)'
35
35
  parameter :placed_at_greater_than, 'Start of a placed_at date range'
36
36
  parameter :placed_at_less_than, 'End of a placed_at date range'
37
+ parameter :email, 'Email address on the order'
37
38
 
38
39
  3.times { |i| create_placed_order(id: 1000 + i, placed_at: i.weeks.ago) }
39
40
 
41
+ create_placed_order(email: 'test@workarea.com', id: 10000, placed_at: 0.weeks.ago)
42
+ create_placed_order(email: 'test@workarea.com', id: 10001, placed_at: 1.weeks.ago)
43
+ create_placed_order(email: 'test@workarea.com', id: 10002, placed_at: 2.weeks.ago)
44
+
40
45
  record_request do
41
46
  get admin_api.orders_path,
42
- params:
43
- { page: 1,
44
- sort_by: 'created_at',
45
- sort_direction: 'desc',
46
- placed_at_greater_than: 2.weeks.ago - 1.day,
47
- placed_at_less_than: 2.weeks.ago + 1.day }
47
+ params: {
48
+ page: 1,
49
+ sort_by: 'created_at',
50
+ sort_direction: 'desc',
51
+ placed_at_greater_than: 2.weeks.ago - 1.day,
52
+ placed_at_less_than: 2.weeks.ago + 1.day,
53
+ email: 'test@workarea.com'
54
+ }
48
55
 
49
56
  assert_equal(200, response.status)
50
57
  end
@@ -46,8 +46,8 @@ module Workarea
46
46
  end
47
47
  end
48
48
 
49
- def test_and_document_show
50
- description 'Showing a user'
49
+ def test_and_document_show_by_id
50
+ description 'Showing a user by ID'
51
51
  route admin_api.user_path(':id')
52
52
 
53
53
  record_request do
@@ -56,6 +56,18 @@ module Workarea
56
56
  end
57
57
  end
58
58
 
59
+ def test_and_document_show_by_email
60
+ description 'Showing a user by email'
61
+ route admin_api.user_path(':email')
62
+
63
+ user = create_user(email: 'test@workarea.com')
64
+
65
+ record_request do
66
+ get admin_api.user_path(URI.escape(user.email, '+@.'))
67
+ assert_equal(200, response.status)
68
+ end
69
+ end
70
+
59
71
  def test_and_document_update
60
72
  description 'Updating a user'
61
73
  route admin_api.user_path(':id')
@@ -1,3 +1,5 @@
1
1
  # Be sure to restart your server when you modify this file.
2
2
 
3
- Rails.application.config.session_store :cookie_store, key: '_dummy_session'
3
+ Rails.application.config.session_store :cookie_store,
4
+ key: '_dummy_session',
5
+ expire_after: 30.minutes
@@ -20,6 +20,38 @@ module Workarea
20
20
  assert_equal(3, result.length)
21
21
  assert_equal(categories.second, Catalog::Category.new(result.first))
22
22
  assert_equal(categories.first, Catalog::Category.new(result.second))
23
+
24
+ travel_to 1.week.from_now
25
+
26
+ get admin_api.categories_path(
27
+ updated_at_starts_at: 5.days.ago,
28
+ updated_at_ends_at: 4.days.ago
29
+ )
30
+ result = JSON.parse(response.body)['categories']
31
+
32
+ assert_equal(0, result.length)
33
+
34
+ get admin_api.categories_path(
35
+ created_at_starts_at: 5.days.ago,
36
+ created_at_ends_at: 4.days.ago
37
+ )
38
+ result = JSON.parse(response.body)['categories']
39
+
40
+ assert_equal(0, result.length)
41
+
42
+ get admin_api.categories_path(
43
+ updated_at_starts_at: 8.days.ago,
44
+ updated_at_ends_at: 6.days.ago
45
+ )
46
+ result = JSON.parse(response.body)['categories']
47
+ assert_equal(3, result.length)
48
+
49
+ get admin_api.categories_path(
50
+ created_at_starts_at: 8.days.ago,
51
+ created_at_ends_at: 6.days.ago
52
+ )
53
+ result = JSON.parse(response.body)['categories']
54
+ assert_equal(3, result.length)
23
55
  end
24
56
 
25
57
  def test_creates_categories
@@ -20,6 +20,38 @@ module Workarea
20
20
  assert_equal(3, result.length)
21
21
  assert_equal(assets.second, Content::Asset.new(result.first))
22
22
  assert_equal(assets.first, Content::Asset.new(result.second))
23
+
24
+ travel_to 1.week.from_now
25
+
26
+ get admin_api.content_assets_path(
27
+ updated_at_starts_at: 5.days.ago,
28
+ updated_at_ends_at: 4.days.ago
29
+ )
30
+ result = JSON.parse(response.body)['assets']
31
+
32
+ assert_equal(0, result.length)
33
+
34
+ get admin_api.content_assets_path(
35
+ created_at_starts_at: 5.days.ago,
36
+ created_at_ends_at: 4.days.ago
37
+ )
38
+ result = JSON.parse(response.body)['assets']
39
+
40
+ assert_equal(0, result.length)
41
+
42
+ get admin_api.content_assets_path(
43
+ updated_at_starts_at: 8.days.ago,
44
+ updated_at_ends_at: 6.days.ago
45
+ )
46
+ result = JSON.parse(response.body)['assets']
47
+ assert_equal(3, result.length)
48
+
49
+ get admin_api.content_assets_path(
50
+ created_at_starts_at: 8.days.ago,
51
+ created_at_ends_at: 6.days.ago
52
+ )
53
+ result = JSON.parse(response.body)['assets']
54
+ assert_equal(3, result.length)
23
55
  end
24
56
 
25
57
  def test_creates_assets
@@ -20,6 +20,38 @@ module Workarea
20
20
  assert_equal(3, result.length)
21
21
  assert_equal(content.second, Content.new(result.first))
22
22
  assert_equal(content.first, Content.new(result.second))
23
+
24
+ travel_to 1.week.from_now
25
+
26
+ get admin_api.content_index_path(
27
+ updated_at_starts_at: 5.days.ago,
28
+ updated_at_ends_at: 4.days.ago
29
+ )
30
+ result = JSON.parse(response.body)['content']
31
+
32
+ assert_equal(0, result.length)
33
+
34
+ get admin_api.content_index_path(
35
+ created_at_starts_at: 5.days.ago,
36
+ created_at_ends_at: 4.days.ago
37
+ )
38
+ result = JSON.parse(response.body)['content']
39
+
40
+ assert_equal(0, result.length)
41
+
42
+ get admin_api.content_index_path(
43
+ updated_at_starts_at: 8.days.ago,
44
+ updated_at_ends_at: 6.days.ago
45
+ )
46
+ result = JSON.parse(response.body)['content']
47
+ assert_equal(3, result.length)
48
+
49
+ get admin_api.content_index_path(
50
+ created_at_starts_at: 8.days.ago,
51
+ created_at_ends_at: 6.days.ago
52
+ )
53
+ result = JSON.parse(response.body)['content']
54
+ assert_equal(3, result.length)
23
55
  end
24
56
 
25
57
  def test_creates_content
@@ -24,6 +24,38 @@ module Workarea
24
24
  assert_equal(3, result.length)
25
25
  assert_equal(discounts.second, Pricing::Discount::Product.new(result.first))
26
26
  assert_equal(discounts.first, Pricing::Discount::Product.new(result.second))
27
+
28
+ travel_to 1.week.from_now
29
+
30
+ get admin_api.discounts_path(
31
+ updated_at_starts_at: 5.days.ago,
32
+ updated_at_ends_at: 4.days.ago
33
+ )
34
+ result = JSON.parse(response.body)['discounts']
35
+
36
+ assert_equal(0, result.length)
37
+
38
+ get admin_api.discounts_path(
39
+ created_at_starts_at: 5.days.ago,
40
+ created_at_ends_at: 4.days.ago
41
+ )
42
+ result = JSON.parse(response.body)['discounts']
43
+
44
+ assert_equal(0, result.length)
45
+
46
+ get admin_api.discounts_path(
47
+ updated_at_starts_at: 8.days.ago,
48
+ updated_at_ends_at: 6.days.ago
49
+ )
50
+ result = JSON.parse(response.body)['discounts']
51
+ assert_equal(3, result.length)
52
+
53
+ get admin_api.discounts_path(
54
+ created_at_starts_at: 8.days.ago,
55
+ created_at_ends_at: 6.days.ago
56
+ )
57
+ result = JSON.parse(response.body)['discounts']
58
+ assert_equal(3, result.length)
27
59
  end
28
60
 
29
61
  def test_creates_discounts