workarea-api-admin 4.4.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 (178) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/README.md +82 -0
  4. data/Rakefile +10 -0
  5. data/app/assets/images/workarea/api/admin/icons/api.svg +1 -0
  6. data/app/controllers/workarea/api/admin/application_controller.rb +73 -0
  7. data/app/controllers/workarea/api/admin/categories_controller.rb +305 -0
  8. data/app/controllers/workarea/api/admin/category_product_rules_controller.rb +232 -0
  9. data/app/controllers/workarea/api/admin/content_assets_controller.rb +299 -0
  10. data/app/controllers/workarea/api/admin/content_controller.rb +268 -0
  11. data/app/controllers/workarea/api/admin/discounts_controller.rb +271 -0
  12. data/app/controllers/workarea/api/admin/email_signups_controller.rb +108 -0
  13. data/app/controllers/workarea/api/admin/fulfillments_controller.rb +268 -0
  14. data/app/controllers/workarea/api/admin/inventory_skus_controller.rb +305 -0
  15. data/app/controllers/workarea/api/admin/navigation_menus_controller.rb +267 -0
  16. data/app/controllers/workarea/api/admin/navigation_taxons_controller.rb +305 -0
  17. data/app/controllers/workarea/api/admin/orders_controller.rb +160 -0
  18. data/app/controllers/workarea/api/admin/pages_controller.rb +305 -0
  19. data/app/controllers/workarea/api/admin/payment_profiles_controller.rb +305 -0
  20. data/app/controllers/workarea/api/admin/payment_transactions_controller.rb +108 -0
  21. data/app/controllers/workarea/api/admin/payments_controller.rb +115 -0
  22. data/app/controllers/workarea/api/admin/prices_controller.rb +232 -0
  23. data/app/controllers/workarea/api/admin/pricing_skus_controller.rb +305 -0
  24. data/app/controllers/workarea/api/admin/product_images_controller.rb +232 -0
  25. data/app/controllers/workarea/api/admin/products_controller.rb +305 -0
  26. data/app/controllers/workarea/api/admin/promo_code_lists_controller.rb +305 -0
  27. data/app/controllers/workarea/api/admin/recommendation_settings_controller.rb +122 -0
  28. data/app/controllers/workarea/api/admin/redirects_controller.rb +305 -0
  29. data/app/controllers/workarea/api/admin/releases_controller.rb +304 -0
  30. data/app/controllers/workarea/api/admin/saved_addresses_controller.rb +232 -0
  31. data/app/controllers/workarea/api/admin/saved_credit_cards_controller.rb +256 -0
  32. data/app/controllers/workarea/api/admin/shipping_rates_controller.rb +232 -0
  33. data/app/controllers/workarea/api/admin/shipping_services_controller.rb +299 -0
  34. data/app/controllers/workarea/api/admin/shippings_controller.rb +105 -0
  35. data/app/controllers/workarea/api/admin/swagger_controller.rb +41 -0
  36. data/app/controllers/workarea/api/admin/tax_categories_controller.rb +242 -0
  37. data/app/controllers/workarea/api/admin/tax_rates_controller.rb +292 -0
  38. data/app/controllers/workarea/api/admin/users_controller.rb +296 -0
  39. data/app/controllers/workarea/api/admin/variants_controller.rb +232 -0
  40. data/app/models/workarea/api/admin/bulk_upsert.rb +74 -0
  41. data/app/models/workarea/user.decorator +7 -0
  42. data/app/views/workarea/admin/users/_api_permissions.html.haml +6 -0
  43. data/app/workers/workarea/perform_api_bulk_upsert.rb +15 -0
  44. data/bin/rails +18 -0
  45. data/config/initializers/append_points.rb +4 -0
  46. data/config/initializers/config.rb +15 -0
  47. data/config/locales/en.yml +9 -0
  48. data/config/routes.rb +81 -0
  49. data/lib/workarea/api/admin.rb +21 -0
  50. data/lib/workarea/api/admin/engine.rb +14 -0
  51. data/lib/workarea/api/admin/swagger.rb +106 -0
  52. data/test/documentation/workarea/api/admin/categories_documentation_test.rb +106 -0
  53. data/test/documentation/workarea/api/admin/category_product_rules_documentation_test.rb +78 -0
  54. data/test/documentation/workarea/api/admin/content_assets_documentation_test.rb +94 -0
  55. data/test/documentation/workarea/api/admin/content_documentation_test.rb +87 -0
  56. data/test/documentation/workarea/api/admin/discounts_documentation_test.rb +85 -0
  57. data/test/documentation/workarea/api/admin/email_signups_documentation_test.rb +41 -0
  58. data/test/documentation/workarea/api/admin/fulfillment_documentation_test.rb +84 -0
  59. data/test/documentation/workarea/api/admin/inventory_skus_documentation_test.rb +95 -0
  60. data/test/documentation/workarea/api/admin/navigation_menus_documentation_test.rb +81 -0
  61. data/test/documentation/workarea/api/admin/navigation_taxons_documentation_test.rb +94 -0
  62. data/test/documentation/workarea/api/admin/orders_documentation_test.rb +65 -0
  63. data/test/documentation/workarea/api/admin/pages_documentation_test.rb +93 -0
  64. data/test/documentation/workarea/api/admin/payment_profiles_documentation_test.rb +98 -0
  65. data/test/documentation/workarea/api/admin/payment_transactions_documentation_test.rb +43 -0
  66. data/test/documentation/workarea/api/admin/payments_documentation_test.rb +41 -0
  67. data/test/documentation/workarea/api/admin/prices_documentation_test.rb +82 -0
  68. data/test/documentation/workarea/api/admin/pricing_skus_documentation_test.rb +95 -0
  69. data/test/documentation/workarea/api/admin/product_images_documentation_test.rb +101 -0
  70. data/test/documentation/workarea/api/admin/products_documentation_test.rb +96 -0
  71. data/test/documentation/workarea/api/admin/promo_code_lists_documentation_test.rb +94 -0
  72. data/test/documentation/workarea/api/admin/recommendation_settings_documentation_test.rb +37 -0
  73. data/test/documentation/workarea/api/admin/redirects_documentation_test.rb +96 -0
  74. data/test/documentation/workarea/api/admin/release_changes_documentation_test.rb +32 -0
  75. data/test/documentation/workarea/api/admin/releases_documentation_test.rb +93 -0
  76. data/test/documentation/workarea/api/admin/saved_addresses_documentation_test.rb +92 -0
  77. data/test/documentation/workarea/api/admin/saved_credit_cards_documentation_test.rb +86 -0
  78. data/test/documentation/workarea/api/admin/shipping_rates_documentation_test.rb +78 -0
  79. data/test/documentation/workarea/api/admin/shipping_services_documentation_test.rb +93 -0
  80. data/test/documentation/workarea/api/admin/shippings_documentation_test.rb +41 -0
  81. data/test/documentation/workarea/api/admin/tax_categories_documentation_test.rb +95 -0
  82. data/test/documentation/workarea/api/admin/tax_rates_documentation_test.rb +78 -0
  83. data/test/documentation/workarea/api/admin/users_documentation_test.rb +99 -0
  84. data/test/documentation/workarea/api/admin/variants_documentation_test.rb +80 -0
  85. data/test/dummy/Rakefile +7 -0
  86. data/test/dummy/app/assets/config/manifest.js +4 -0
  87. data/test/dummy/app/assets/images/.keep +0 -0
  88. data/test/dummy/app/assets/javascripts/application.js +13 -0
  89. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  90. data/test/dummy/app/controllers/application_controller.rb +3 -0
  91. data/test/dummy/app/controllers/concerns/.keep +0 -0
  92. data/test/dummy/app/helpers/application_helper.rb +2 -0
  93. data/test/dummy/app/jobs/application_job.rb +2 -0
  94. data/test/dummy/app/mailers/.keep +0 -0
  95. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  96. data/test/dummy/app/models/.keep +0 -0
  97. data/test/dummy/app/models/concerns/.keep +0 -0
  98. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  99. data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
  100. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  101. data/test/dummy/bin/bundle +3 -0
  102. data/test/dummy/bin/rails +4 -0
  103. data/test/dummy/bin/rake +4 -0
  104. data/test/dummy/bin/setup +34 -0
  105. data/test/dummy/bin/update +29 -0
  106. data/test/dummy/config.ru +4 -0
  107. data/test/dummy/config/application.rb +25 -0
  108. data/test/dummy/config/boot.rb +5 -0
  109. data/test/dummy/config/cable.yml +9 -0
  110. data/test/dummy/config/environment.rb +5 -0
  111. data/test/dummy/config/environments/development.rb +55 -0
  112. data/test/dummy/config/environments/production.rb +86 -0
  113. data/test/dummy/config/environments/test.rb +43 -0
  114. data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
  115. data/test/dummy/config/initializers/assets.rb +11 -0
  116. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  117. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  118. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  119. data/test/dummy/config/initializers/inflections.rb +16 -0
  120. data/test/dummy/config/initializers/mime_types.rb +4 -0
  121. data/test/dummy/config/initializers/new_framework_defaults.rb +21 -0
  122. data/test/dummy/config/initializers/session_store.rb +3 -0
  123. data/test/dummy/config/initializers/workarea.rb +8 -0
  124. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  125. data/test/dummy/config/locales/en.yml +23 -0
  126. data/test/dummy/config/puma.rb +47 -0
  127. data/test/dummy/config/routes.rb +6 -0
  128. data/test/dummy/config/secrets.yml +22 -0
  129. data/test/dummy/config/spring.rb +6 -0
  130. data/test/dummy/db/seeds.rb +2 -0
  131. data/test/dummy/log/.keep +0 -0
  132. data/test/dummy/public/404.html +67 -0
  133. data/test/dummy/public/422.html +67 -0
  134. data/test/dummy/public/500.html +66 -0
  135. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  136. data/test/dummy/public/apple-touch-icon.png +0 -0
  137. data/test/dummy/public/favicon.ico +1 -0
  138. data/test/integration/workarea/api/admin/audit_log_integration_test.rb +20 -0
  139. data/test/integration/workarea/api/admin/authentication_integration_test.rb +61 -0
  140. data/test/integration/workarea/api/admin/categories_integration_test.rb +64 -0
  141. data/test/integration/workarea/api/admin/category_product_rules_integration_test.rb +58 -0
  142. data/test/integration/workarea/api/admin/content_assets_integration_test.rb +65 -0
  143. data/test/integration/workarea/api/admin/content_integration_test.rb +59 -0
  144. data/test/integration/workarea/api/admin/discounts_integration_test.rb +64 -0
  145. data/test/integration/workarea/api/admin/email_signups_integration_test.rb +32 -0
  146. data/test/integration/workarea/api/admin/error_handling_integration_test.rb +16 -0
  147. data/test/integration/workarea/api/admin/fulfillments_integration_test.rb +62 -0
  148. data/test/integration/workarea/api/admin/inventory_skus_integration_test.rb +70 -0
  149. data/test/integration/workarea/api/admin/navigation_menus_integration_test.rb +54 -0
  150. data/test/integration/workarea/api/admin/navigation_taxons_integration_test.rb +63 -0
  151. data/test/integration/workarea/api/admin/orders_integration_test.rb +53 -0
  152. data/test/integration/workarea/api/admin/pages_integration_test.rb +64 -0
  153. data/test/integration/workarea/api/admin/payment_profiles_integration_test.rb +75 -0
  154. data/test/integration/workarea/api/admin/payment_transactions_integration_test.rb +45 -0
  155. data/test/integration/workarea/api/admin/payments_integration_test.rb +29 -0
  156. data/test/integration/workarea/api/admin/prices_integration_test.rb +55 -0
  157. data/test/integration/workarea/api/admin/pricing_skus_integration_test.rb +72 -0
  158. data/test/integration/workarea/api/admin/product_images_integration_test.rb +56 -0
  159. data/test/integration/workarea/api/admin/products_integration_test.rb +66 -0
  160. data/test/integration/workarea/api/admin/promo_code_lists_integration_test.rb +70 -0
  161. data/test/integration/workarea/api/admin/recommendation_settings_integration_test.rb +41 -0
  162. data/test/integration/workarea/api/admin/redirects_integration_test.rb +69 -0
  163. data/test/integration/workarea/api/admin/release_changes_integration_test.rb +32 -0
  164. data/test/integration/workarea/api/admin/releases_integration_test.rb +60 -0
  165. data/test/integration/workarea/api/admin/saved_addresses_integration_test.rb +70 -0
  166. data/test/integration/workarea/api/admin/saved_credit_cards_integration_test.rb +76 -0
  167. data/test/integration/workarea/api/admin/shipping_rates_integration_test.rb +54 -0
  168. data/test/integration/workarea/api/admin/shipping_services_integration_test.rb +64 -0
  169. data/test/integration/workarea/api/admin/shippings_integration_test.rb +34 -0
  170. data/test/integration/workarea/api/admin/tax_categories_integration_test.rb +64 -0
  171. data/test/integration/workarea/api/admin/tax_rates_integration_test.rb +66 -0
  172. data/test/integration/workarea/api/admin/users_integration_test.rb +67 -0
  173. data/test/integration/workarea/api/admin/variants_integration_test.rb +59 -0
  174. data/test/models/workarea/api/admin/bulk_upsert_test.rb +79 -0
  175. data/test/test_helper.rb +10 -0
  176. data/test/vcr_cassettes/product_image_from_url.yml +43 -0
  177. data/workarea-api-admin.gemspec +18 -0
  178. metadata +252 -0
@@ -0,0 +1,85 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class DiscountsDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Discounts'
11
+ alias create_discount create_product_discount
12
+
13
+ def sample_attributes
14
+ create_discount
15
+ .as_json
16
+ .except('_id')
17
+ .merge('type' => 'product', 'promo_codes' => ['SALE'])
18
+ end
19
+
20
+ def test_and_document_index
21
+ description 'Listing discounts'
22
+ route admin_api.discounts_path
23
+ parameter :page, 'Current page'
24
+ parameter :sort_by, 'Field on which to sort (see responses for possible values)'
25
+ parameter :sort_direction, 'Direction to sort (asc or desc)'
26
+
27
+ 2.times { create_discount }
28
+
29
+ record_request do
30
+ get admin_api.discounts_path,
31
+ params: { page: 1, sort_by: 'created_at', sort_direction: 'desc' }
32
+
33
+ assert_equal(200, response.status)
34
+ end
35
+ end
36
+
37
+ def test_and_document_create
38
+ description 'Creating a discount'
39
+ route admin_api.discounts_path
40
+
41
+ record_request do
42
+ post admin_api.discounts_path,
43
+ params: { discount: sample_attributes },
44
+ as: :json
45
+
46
+ assert_equal(201, response.status)
47
+ end
48
+ end
49
+
50
+ def test_and_document_show
51
+ description 'Showing a discount'
52
+ route admin_api.discount_path(':id')
53
+
54
+ record_request do
55
+ get admin_api.discount_path(create_discount.id)
56
+ assert_equal(200, response.status)
57
+ end
58
+ end
59
+
60
+ def test_and_document_update
61
+ description 'Updating discounts'
62
+ route admin_api.discount_path(':id')
63
+
64
+ record_request do
65
+ patch admin_api.discount_path(create_discount.id),
66
+ params: { discount: { name: 'foo' } },
67
+ as: :json
68
+
69
+ assert_equal(204, response.status)
70
+ end
71
+ end
72
+
73
+ def test_and_document_destroy
74
+ description 'Removing a discount'
75
+ route admin_api.discount_path(':id')
76
+
77
+ record_request do
78
+ delete admin_api.discount_path(create_discount.id)
79
+ assert_equal(204, response.status)
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,41 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class EmailSignupsDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Email Signups'
11
+
12
+ def test_and_document_index
13
+ description 'Listing email signups'
14
+ route admin_api.email_signups_path
15
+ parameter :page, 'Current page'
16
+ parameter :sort_by, 'Field on which to sort (see responses for possible values)'
17
+ parameter :sort_direction, 'Direction to sort (asc or desc)'
18
+
19
+ 2.times { |i| create_email_signup(email: "#{i}@workarea.com") }
20
+
21
+ record_request do
22
+ get admin_api.email_signups_path,
23
+ params: { page: 1, sort_by: 'created_at', sort_direction: 'desc' }
24
+
25
+ assert_equal(200, response.status)
26
+ end
27
+ end
28
+
29
+ def test_and_document_show
30
+ description 'Showing an email signup'
31
+ route admin_api.email_signup_path(':id')
32
+
33
+ record_request do
34
+ get admin_api.email_signup_path(create_email_signup.id)
35
+ assert_equal(200, response.status)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,84 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class FulfillmentDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Fulfillment'
11
+
12
+ def create_fulfillment(*args)
13
+ order = create_placed_order(*args)
14
+ Fulfillment.find(order.id)
15
+ end
16
+
17
+ def fulfillment
18
+ @fulfillment ||= create_fulfillment
19
+ end
20
+
21
+ def test_and_document_index
22
+ description 'Listing fulfillments'
23
+ route admin_api.fulfillments_path
24
+ parameter :page, 'Current page'
25
+ parameter :sort_by, 'Field on which to sort (see responses for possible values)'
26
+ parameter :sort_direction, 'Direction to sort (asc or desc)'
27
+
28
+ create_fulfillment(id: '1')
29
+ create_fulfillment(id: '2')
30
+
31
+ record_request do
32
+ get admin_api.fulfillments_path
33
+ assert_equal(200, response.status)
34
+ end
35
+ end
36
+
37
+ def test_and_document_show
38
+ description 'Showing fulfillment'
39
+ route admin_api.fulfillment_path(':order_id')
40
+
41
+ record_request do
42
+ get admin_api.fulfillment_path(create_fulfillment.id)
43
+ assert_equal(200, response.status)
44
+ end
45
+ end
46
+
47
+ def test_and_document_ship_items
48
+ description 'Marking items as shipped'
49
+ route admin_api.ship_items_fulfillment_path(':order_id')
50
+
51
+ record_request do
52
+ post admin_api.ship_items_fulfillment_path(fulfillment.id),
53
+ params: {
54
+ tracking_number: '1Z',
55
+ items: [
56
+ { id: fulfillment.items.first.order_item_id, quantity: 1 }
57
+ ]
58
+ },
59
+ as: :json
60
+
61
+ assert_equal(201, response.status)
62
+ end
63
+ end
64
+
65
+ def test_and_document_cancel_items
66
+ description 'Marking items as canceled'
67
+ route admin_api.cancel_items_fulfillment_path(':order_id')
68
+
69
+ record_request do
70
+ post admin_api.cancel_items_fulfillment_path(fulfillment.id),
71
+ params: {
72
+ items: [
73
+ { id: fulfillment.items.first.order_item_id, quantity: 1 }
74
+ ]
75
+ },
76
+ as: :json
77
+
78
+ assert_equal(201, response.status)
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,95 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class InventorySkusDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Inventory SKUs'
11
+
12
+ def sample_attributes
13
+ @sample_attributes ||= create_inventory.as_json.except('_id')
14
+ end
15
+
16
+ def test_and_document_index
17
+ description 'Listing inventory SKUs'
18
+ route admin_api.inventory_skus_path
19
+ parameter :page, 'Current page'
20
+ parameter :sort_by, 'Field on which to sort (see responses for possible values)'
21
+ parameter :sort_direction, 'Direction to sort (asc or desc)'
22
+
23
+ 2.times { |i| create_inventory(id: "SKU#{i}") }
24
+
25
+ record_request do
26
+ get admin_api.inventory_skus_path,
27
+ params: { page: 1, sort_by: 'created_at', sort_direction: 'desc' }
28
+
29
+ assert_equal(200, response.status)
30
+ end
31
+ end
32
+
33
+ def test_and_document_create
34
+ description 'Creating an inventory SKU'
35
+ route admin_api.inventory_skus_path
36
+
37
+ record_request do
38
+ post admin_api.inventory_skus_path,
39
+ params: { inventory_sku: sample_attributes.merge('_id' => 'SKU2') },
40
+ as: :json
41
+
42
+ assert_equal(201, response.status)
43
+ end
44
+ end
45
+
46
+ def test_and_document_show
47
+ description 'Showing an inventory SKU'
48
+ route admin_api.inventory_sku_path(':id')
49
+
50
+ record_request do
51
+ get admin_api.inventory_sku_path(create_inventory.id)
52
+ assert_equal(200, response.status)
53
+ end
54
+ end
55
+
56
+ def test_and_document_update
57
+ description 'Updating an inventory SKU'
58
+ route admin_api.inventory_sku_path(':id')
59
+
60
+ record_request do
61
+ patch admin_api.inventory_sku_path(create_inventory.id),
62
+ params: { inventory_sku: { policy: 'ignore' } },
63
+ as: :json
64
+
65
+ assert_equal(204, response.status)
66
+ end
67
+ end
68
+
69
+ def test_and_document_bulk_upsert
70
+ description 'Bulk upserting inventory SKUs'
71
+ route admin_api.bulk_inventory_skus_path
72
+
73
+ record_request do
74
+ data = Array.new(3) { sample_attributes.merge('_id' => Inventory::Sku.count) }
75
+ patch admin_api.bulk_inventory_skus_path,
76
+ params: { inventory_skus: data },
77
+ as: :json
78
+
79
+ assert_equal(204, response.status)
80
+ end
81
+ end
82
+
83
+ def test_and_document_destroy
84
+ description 'Removing an inventory SKU'
85
+ route admin_api.inventory_sku_path(':id')
86
+
87
+ record_request do
88
+ delete admin_api.inventory_sku_path(create_inventory.id)
89
+ assert_equal(204, response.status)
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,81 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class NavigationMenusDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Navigation menus'
11
+
12
+ def sample_attributes
13
+ create_menu.as_json.except('_id', 'slug')
14
+ end
15
+
16
+ def test_and_document_index
17
+ description 'Listing menus'
18
+ route admin_api.navigation_menus_path
19
+ parameter :page, 'Current page'
20
+ parameter :sort_by, 'Field on which to sort (see responses for possible values)'
21
+ parameter :sort_direction, 'Direction to sort (asc or desc)'
22
+
23
+ 2.times { create_menu }
24
+
25
+ record_request do
26
+ get admin_api.navigation_menus_path,
27
+ params: { page: 1, sort_by: 'created_at', sort_direction: 'desc' }
28
+
29
+ assert_equal(200, response.status)
30
+ end
31
+ end
32
+
33
+ def test_and_document_create
34
+ description 'Creating a menu'
35
+ route admin_api.navigation_menus_path
36
+
37
+ record_request do
38
+ post admin_api.navigation_menus_path,
39
+ params: { navigation_menu: sample_attributes },
40
+ as: :json
41
+
42
+ assert_equal(201, response.status)
43
+ end
44
+ end
45
+
46
+ def test_and_document_show
47
+ description 'Showing a navigation menu'
48
+ route admin_api.navigation_menu_path(':id')
49
+
50
+ record_request do
51
+ get admin_api.navigation_menu_path(create_menu.id)
52
+ assert_equal(200, response.status)
53
+ end
54
+ end
55
+
56
+ def test_and_document_update
57
+ description 'Updating a navigation menus'
58
+ route admin_api.navigation_menu_path(':id')
59
+
60
+ record_request do
61
+ patch admin_api.navigation_menu_path(create_menu.id),
62
+ params: { navigation_menu: { name: 'foo' } },
63
+ as: :json
64
+
65
+ assert_equal(204, response.status)
66
+ end
67
+ end
68
+
69
+ def test_and_document_destroy
70
+ description 'Removing a navigation menu'
71
+ route admin_api.navigation_menu_path(':id')
72
+
73
+ record_request do
74
+ delete admin_api.navigation_menu_path(create_menu.id)
75
+ assert_equal(204, response.status)
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,94 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class NavigationTaxonsDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Navigation taxonomy'
11
+
12
+ def sample_attributes
13
+ create_taxon.as_json.except('_id', 'slug')
14
+ end
15
+
16
+ def test_and_document_index
17
+ description 'Listing taxons'
18
+ route admin_api.navigation_taxons_path
19
+ parameter :page, 'Current page'
20
+ parameter :sort_by, 'Field on which to sort (see responses for possible values)'
21
+ parameter :sort_direction, 'Direction to sort (asc or desc)'
22
+
23
+ 2.times { create_taxon }
24
+
25
+ record_request do
26
+ get admin_api.navigation_taxons_path,
27
+ params: { page: 1, sort_by: 'created_at', sort_direction: 'desc' }
28
+
29
+ assert_equal(200, response.status)
30
+ end
31
+ end
32
+
33
+ def test_and_document_create
34
+ description 'Creating a taxon'
35
+ route admin_api.navigation_taxons_path
36
+
37
+ record_request do
38
+ post admin_api.navigation_taxons_path,
39
+ params: { navigation_taxon: sample_attributes },
40
+ as: :json
41
+
42
+ assert_equal(201, response.status)
43
+ end
44
+ end
45
+
46
+ def test_and_document_show
47
+ description 'Showing a navigation taxon'
48
+ route admin_api.navigation_taxon_path(':id')
49
+
50
+ record_request do
51
+ get admin_api.navigation_taxon_path(create_taxon.id)
52
+ assert_equal(200, response.status)
53
+ end
54
+ end
55
+
56
+ def test_and_document_update
57
+ description 'Updating a navigation taxons'
58
+ route admin_api.navigation_taxon_path(':id')
59
+
60
+ record_request do
61
+ patch admin_api.navigation_taxon_path(create_taxon.id),
62
+ params: { navigation_taxon: { name: 'foo' } },
63
+ as: :json
64
+
65
+ assert_equal(204, response.status)
66
+ end
67
+ end
68
+
69
+ def test_and_document_bulk_upsert
70
+ description 'Bulk upserting navigation taxons'
71
+ route admin_api.bulk_navigation_taxons_path
72
+
73
+ record_request do
74
+ patch admin_api.bulk_navigation_taxons_path,
75
+ params: { navigation_taxons: [sample_attributes] * 3 },
76
+ as: :json
77
+
78
+ assert_equal(204, response.status)
79
+ end
80
+ end
81
+
82
+ def test_and_document_destroy
83
+ description 'Removing a navigation taxon'
84
+ route admin_api.navigation_taxon_path(':id')
85
+
86
+ record_request do
87
+ delete admin_api.navigation_taxon_path(create_taxon.id)
88
+ assert_equal(204, response.status)
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end