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,101 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class ProductImagesDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Product Images'
11
+
12
+ def product
13
+ @product ||= create_product
14
+ end
15
+
16
+ def base_64
17
+ 'data:image/jpeg;base64,GEGseg42g3g...'
18
+ end
19
+
20
+ def url
21
+ 'http://dreamatico.com/data_images/kitten/kitten-2.jpg'
22
+ end
23
+
24
+ def sample_attributes
25
+ { image_url: base_64 }
26
+ end
27
+
28
+ def create_image
29
+ product.images.create!(sample_attributes)
30
+ end
31
+
32
+ def test_and_document_index
33
+ description 'Listing product images'
34
+ route admin_api.product_images_path(':product_id')
35
+
36
+ 2.times { create_image }
37
+
38
+ record_request do
39
+ get admin_api.product_images_path(product.id)
40
+ assert_equal(200, response.status)
41
+ end
42
+ end
43
+
44
+ def test_and_document_create_from_url
45
+ description 'Creating a product image from URL'
46
+ route admin_api.product_images_path(':product_id')
47
+
48
+ record_request do
49
+ VCR.use_cassette('product_image_from_url') do
50
+ post admin_api.product_images_path(product.id),
51
+ params: { image: { image_url: url } },
52
+ as: :json
53
+ end
54
+
55
+ assert_equal(201, response.status)
56
+ end
57
+ end
58
+
59
+ def test_and_document_create_from_base_64
60
+ description 'Creating a product image from Base64'
61
+ route admin_api.product_images_path(':product_id')
62
+
63
+ record_request do
64
+ post admin_api.product_images_path(product.id),
65
+ params: { image: sample_attributes },
66
+ as: :json
67
+
68
+ assert_equal(201, response.status)
69
+ end
70
+ end
71
+
72
+ def test_and_document_update
73
+ description 'Updating a product image'
74
+ route admin_api.product_image_path(':product_id', ':id')
75
+
76
+ image = create_image
77
+
78
+ record_request do
79
+ patch admin_api.product_image_path(product.id, image.id),
80
+ params: { image: { name: 'foo' } },
81
+ as: :json
82
+
83
+ assert_equal(204, response.status)
84
+ end
85
+ end
86
+
87
+ def test_and_document_destroy
88
+ description 'Removing a product image'
89
+ route admin_api.product_image_path(':product_id', ':id')
90
+
91
+ image = create_image
92
+
93
+ record_request do
94
+ delete admin_api.product_image_path(product.id, image.id)
95
+ assert_equal(204, response.status)
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,96 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class ProductsDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Products'
11
+
12
+ def sample_attributes
13
+ create_product.as_json.except('_id', 'slug', 'last_indexed_at')
14
+ end
15
+
16
+ def test_and_document_index
17
+ description 'Listing products'
18
+ route admin_api.products_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_product }
24
+
25
+ record_request do
26
+ get admin_api.products_path,
27
+ params: { page: 1, sort_by: 'created_at', sort_direction: 'desc' }
28
+ assert_equal(200, response.status)
29
+ end
30
+ end
31
+
32
+ def test_and_document_create
33
+ description 'Creating a product'
34
+ route admin_api.products_path
35
+
36
+ record_request do
37
+ post admin_api.products_path, params: sample_attributes, as: :json
38
+ assert_equal(201, response.status)
39
+ end
40
+ end
41
+
42
+ def test_and_document_show
43
+ description 'Showing a product'
44
+ route admin_api.product_path(':id')
45
+
46
+ product = create_product
47
+
48
+ record_request do
49
+ get admin_api.product_path(product.id)
50
+ assert_equal(200, response.status)
51
+ end
52
+ end
53
+
54
+ def test_and_document_update
55
+ description 'Updating a product'
56
+ route admin_api.product_path(':id')
57
+
58
+ product = create_product
59
+
60
+ record_request do
61
+ patch admin_api.product_path(product.id),
62
+ params: sample_attributes,
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 products'
71
+ route admin_api.bulk_products_path
72
+
73
+ record_request do
74
+ patch admin_api.bulk_products_path,
75
+ params: { products: [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 product'
84
+ route admin_api.product_path(':id')
85
+
86
+ product = create_product
87
+
88
+ record_request do
89
+ delete admin_api.product_path(product.id), as: :json
90
+ assert_equal(204, response.status)
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
96
+ 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 PromoCodeListsDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Promo Code Lists'
11
+
12
+ def sample_attributes
13
+ create_code_list.as_json.except('_id')
14
+ end
15
+
16
+ def test_and_document_index
17
+ description 'Listing promo code lists'
18
+ route admin_api.promo_code_lists_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_code_list }
24
+
25
+ record_request do
26
+ get admin_api.promo_code_lists_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 promo code list'
35
+ route admin_api.promo_code_lists_path
36
+
37
+ record_request do
38
+ post admin_api.promo_code_lists_path,
39
+ params: { promo_code_list: 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 promo code list'
48
+ route admin_api.promo_code_list_path(':id')
49
+
50
+ record_request do
51
+ get admin_api.promo_code_list_path(create_code_list.id)
52
+ assert_equal(200, response.status)
53
+ end
54
+ end
55
+
56
+ def test_and_document_update
57
+ description 'Updating a promo code list'
58
+ route admin_api.promo_code_list_path(':id')
59
+
60
+ record_request do
61
+ patch admin_api.promo_code_list_path(create_code_list.id),
62
+ params: { promo_code_list: { 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 promo code lists'
71
+ route admin_api.bulk_promo_code_lists_path
72
+
73
+ record_request do
74
+ patch admin_api.bulk_promo_code_lists_path,
75
+ params: { promo_code_lists: [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 promo code list'
84
+ route admin_api.promo_code_list_path(':id')
85
+
86
+ record_request do
87
+ delete admin_api.promo_code_list_path(create_code_list.id)
88
+ assert_equal(204, response.status)
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,37 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class RecommendationSettingsDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Recommendation Settings'
11
+
12
+ def test_and_document_show
13
+ description 'Showing recommendation settings'
14
+ route admin_api.product_recommendation_settings_path(':product_id')
15
+
16
+ record_request do
17
+ get admin_api.product_recommendation_settings_path(create_recommendations.id)
18
+ assert_equal(200, response.status)
19
+ end
20
+ end
21
+
22
+ def test_and_document_update
23
+ description 'Updating recommendation settings'
24
+ route admin_api.product_recommendation_settings_path(':product_id')
25
+
26
+ record_request do
27
+ patch admin_api.product_recommendation_settings_path(create_recommendations.id),
28
+ params: { recommendation_settings: { product_ids: ['foo'] } },
29
+ as: :json
30
+
31
+ assert_equal(204, response.status)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,96 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class RedirectsDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Redirects'
11
+
12
+ def sample_attributes
13
+ @sample_attributes ||= create_redirect.as_json.except('_id')
14
+ end
15
+
16
+ def test_and_document_index
17
+ description 'Listing redirects'
18
+ route admin_api.redirects_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_redirect(path: "/#{i}") }
24
+
25
+ record_request do
26
+ get admin_api.redirects_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 redirect'
35
+ route admin_api.redirects_path
36
+
37
+ record_request do
38
+ post admin_api.redirects_path,
39
+ params: { redirect: sample_attributes.merge('path' => '/foo') },
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 redirect'
48
+ route admin_api.redirect_path(':id')
49
+
50
+ record_request do
51
+ get admin_api.redirect_path(create_redirect.id)
52
+ assert_equal(200, response.status)
53
+ end
54
+ end
55
+
56
+ def test_and_document_update
57
+ description 'Updating a redirects'
58
+ route admin_api.redirect_path(':id')
59
+
60
+ record_request do
61
+ patch admin_api.redirect_path(create_redirect.id),
62
+ params: { redirect: { path: '/foobar' } },
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 redirects'
71
+ route admin_api.bulk_redirects_path
72
+
73
+ data = Array.new(3) do
74
+ count = Navigation::Redirect.count
75
+ sample_attributes.merge('path' => "/foo#{count}")
76
+ end
77
+
78
+ record_request do
79
+ patch admin_api.bulk_redirects_path, params: { redirects: data }, as: :json
80
+ assert_equal(204, response.status)
81
+ end
82
+ end
83
+
84
+ def test_and_document_destroy
85
+ description 'Removing a redirect'
86
+ route admin_api.redirect_path(':id')
87
+
88
+ record_request do
89
+ delete admin_api.redirect_path(create_redirect.id)
90
+ assert_equal(204, response.status)
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class ReleaseChangesDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Release Changes'
11
+
12
+ def test_and_document_create
13
+ description 'Adding changes to a release'
14
+ route admin_api.product_path(':id')
15
+ explanation "release_id can be sent with any patch request \
16
+ to resources that can be changed through releases"
17
+
18
+ record_request do
19
+ patch admin_api.product_path(create_product.id),
20
+ params: {
21
+ product: { name: 'foo' },
22
+ release_id: create_release.id
23
+ },
24
+ as: :json
25
+
26
+ assert_equal(204, response.status)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end