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,65 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class OrdersDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Orders'
11
+
12
+ def test_and_document_index
13
+ description 'Listing orders'
14
+ route admin_api.orders_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_placed_order(id: 1000 + i) }
20
+
21
+ record_request do
22
+ get admin_api.orders_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_filtered_index
30
+ description 'Viewing orders by date range'
31
+ route admin_api.orders_path
32
+ parameter :page, 'Current page'
33
+ parameter :sort_by, 'Field on which to sort (see responses for possible values)'
34
+ parameter :sort_direction, 'Direction to sort (asc or desc)'
35
+ parameter :placed_at_greater_than, 'Start of a placed_at date range'
36
+ parameter :placed_at_less_than, 'End of a placed_at date range'
37
+
38
+ 3.times { |i| create_placed_order(id: 1000 + i, placed_at: i.weeks.ago) }
39
+
40
+ record_request do
41
+ 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 }
48
+
49
+ assert_equal(200, response.status)
50
+ end
51
+ end
52
+
53
+ def test_and_document_show
54
+ description 'Showing an order'
55
+ route admin_api.order_path(':id')
56
+
57
+ record_request do
58
+ get admin_api.order_path(create_placed_order.id)
59
+ assert_equal(200, response.status)
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,93 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class PagesDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Pages'
11
+
12
+ def sample_attributes
13
+ create_page.as_json.except('_id', 'slug')
14
+ end
15
+
16
+ def test_and_document_index
17
+ description 'Listing pages'
18
+ route admin_api.pages_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_page }
24
+
25
+ record_request do
26
+ get admin_api.pages_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 page'
35
+ route admin_api.pages_path
36
+
37
+ record_request do
38
+ post admin_api.pages_path, params: sample_attributes, as: :json
39
+ assert_equal(201, response.status)
40
+ end
41
+ end
42
+
43
+ def test_and_document_show
44
+ description 'Showing a page'
45
+ route admin_api.page_path(':id')
46
+
47
+ record_request do
48
+ get admin_api.page_path(create_page.id)
49
+ assert_equal(200, response.status)
50
+ end
51
+ end
52
+
53
+ def test_and_document_update
54
+ description 'Updating a page'
55
+ route admin_api.page_path(':id')
56
+
57
+ record_request do
58
+ patch admin_api.page_path(create_page.id),
59
+ params: sample_attributes,
60
+ as: :json
61
+
62
+ assert_equal(204, response.status)
63
+ end
64
+ end
65
+
66
+ def test_and_document_bulk_upsert
67
+ description 'Bulk upserting pages'
68
+ route admin_api.bulk_pages_path
69
+
70
+ record_request do
71
+ patch admin_api.bulk_pages_path,
72
+ params: { pages: [sample_attributes] * 3 },
73
+ as: :json
74
+
75
+ assert_equal(204, response.status)
76
+ end
77
+ end
78
+
79
+ def test_and_document_destroy
80
+ description 'Removing a page'
81
+ route admin_api.page_path(':id')
82
+
83
+ page = create_page
84
+
85
+ record_request do
86
+ delete admin_api.page_path(page.id), as: :json
87
+ assert_equal(204, response.status)
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,98 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class PaymentProfilesDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Payment Profiles'
11
+
12
+ def sample_attributes
13
+ @sample_attributes ||= create_payment_profile.as_json.except('_id')
14
+ end
15
+
16
+ def test_and_document_index
17
+ description 'Listing payment profiles'
18
+ route admin_api.payment_profiles_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_payment_profile(reference: i) }
24
+
25
+ record_request do
26
+ get admin_api.payment_profiles_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 payment profile'
35
+ route admin_api.payment_profiles_path
36
+
37
+ record_request do
38
+ data = sample_attributes.merge('reference' => Payment::Profile.count + 1)
39
+ post admin_api.payment_profiles_path,
40
+ params: { payment_profile: data },
41
+ as: :json
42
+
43
+ assert_equal(201, response.status)
44
+ end
45
+ end
46
+
47
+ def test_and_document_show
48
+ description 'Showing a payment profile'
49
+ route admin_api.payment_profile_path(':id')
50
+
51
+ record_request do
52
+ get admin_api.payment_profile_path(create_payment_profile.id)
53
+ assert_equal(200, response.status)
54
+ end
55
+ end
56
+
57
+ def test_and_document_update
58
+ description 'Updating a payment profiles'
59
+ route admin_api.payment_profile_path(':id')
60
+
61
+ record_request do
62
+ patch admin_api.payment_profile_path(create_payment_profile.id),
63
+ params: { payment_profile: { store_credit: 29 } },
64
+ as: :json
65
+
66
+ assert_equal(204, response.status)
67
+ end
68
+ end
69
+
70
+ def test_and_document_bulk_upsert
71
+ description 'Bulk upserting payment profiles'
72
+ route admin_api.bulk_payment_profiles_path
73
+
74
+ count = Payment::Profile.count + 1
75
+ data = Array.new(3) { sample_attributes.merge('reference' => count) }
76
+
77
+ record_request do
78
+ patch admin_api.bulk_payment_profiles_path,
79
+ params: { payment_profiles: data },
80
+ as: :json
81
+
82
+ assert_equal(204, response.status)
83
+ end
84
+ end
85
+
86
+ def test_and_document_destroy
87
+ description 'Removing a payment profile'
88
+ route admin_api.payment_profile_path(':id')
89
+
90
+ record_request do
91
+ delete admin_api.payment_profile_path(create_payment_profile.id)
92
+ assert_equal(204, response.status)
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,43 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class PaymentTransactionsDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Payment transactions'
11
+
12
+ def test_and_document_index
13
+ description 'Listing payment transactions'
14
+ route admin_api.payment_transactions_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_placed_order(id: 1000 + i) }
20
+
21
+ record_request do
22
+ get admin_api.payment_transactions_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 a payment transaction'
31
+ route admin_api.payment_transaction_path(':id')
32
+
33
+ create_placed_order
34
+
35
+ record_request do
36
+ get admin_api.payment_transaction_path(Payment::Transaction.first.id)
37
+ assert_equal(200, response.status)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ 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 PaymentsDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Payments'
11
+
12
+ def test_and_document_index
13
+ description 'Listing payments'
14
+ route admin_api.payments_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_placed_order(id: 1000 + i) }
20
+
21
+ record_request do
22
+ get admin_api.payments_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 payment'
31
+ route admin_api.payment_path(':id')
32
+
33
+ record_request do
34
+ get admin_api.payment_path(create_placed_order.id)
35
+ assert_equal(200, response.status)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,82 @@
1
+ require 'test_helper'
2
+ require 'workarea/api/documentation_test'
3
+
4
+ module Workarea
5
+ module Api
6
+ module Admin
7
+ class PricesDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Prices'
11
+
12
+ def pricing_sku
13
+ @pricing_sku ||= create_pricing_sku
14
+ end
15
+
16
+ def sample_attributes
17
+ { regular: 15 }
18
+ end
19
+
20
+ def create_price
21
+ pricing_sku.prices.create!(sample_attributes)
22
+ end
23
+
24
+ def test_and_document_index
25
+ description 'Listing pricing sku prices'
26
+ route admin_api.pricing_sku_prices_path(':pricing_sku_id')
27
+ parameter :page, 'Current page'
28
+ parameter :sort_by, 'Field on which to sort (see responses for possible values)'
29
+ parameter :sort_direction, 'Direction to sort (asc or desc)'
30
+
31
+ 2.times { create_price }
32
+
33
+ record_request do
34
+ get admin_api.pricing_sku_prices_path(pricing_sku.id),
35
+ params: { page: 1, sort_by: 'created_at', sort_direction: 'desc' }
36
+
37
+ assert_equal(200, response.status)
38
+ end
39
+ end
40
+
41
+ def test_and_document_create
42
+ description 'Creating a pricing sku price'
43
+ route admin_api.pricing_sku_prices_path(':pricing_sku_id')
44
+
45
+ record_request do
46
+ post admin_api.pricing_sku_prices_path(pricing_sku.id),
47
+ params: { price: sample_attributes },
48
+ as: :json
49
+
50
+ assert_equal(201, response.status)
51
+ end
52
+ end
53
+
54
+ def test_and_document_update
55
+ description 'Updating a pricing sku price'
56
+ route admin_api.pricing_sku_price_path(':pricing_sku_id', ':id')
57
+
58
+ price = create_price
59
+
60
+ record_request do
61
+ patch admin_api.pricing_sku_price_path(pricing_sku.id, price.id),
62
+ params: { price: { regular: 15 } }
63
+
64
+ assert_equal(204, response.status)
65
+ end
66
+ end
67
+
68
+ def test_and_document_destroy
69
+ description 'Removing a pricing sku price'
70
+ route admin_api.pricing_sku_price_path(':pricing_sku_id', ':id')
71
+
72
+ price = create_price
73
+
74
+ record_request do
75
+ delete admin_api.pricing_sku_price_path(pricing_sku.id, price.id)
76
+ assert_equal(204, response.status)
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ 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 PricingSkusDocumentationTest < DocumentationTest
8
+ include Workarea::Admin::IntegrationTest
9
+
10
+ resource 'Pricing SKUs'
11
+
12
+ def sample_attributes
13
+ @sample_attributes ||= create_pricing_sku.as_json.except('_id')
14
+ end
15
+
16
+ def test_and_document_index
17
+ description 'Listing pricing SKUs'
18
+ route admin_api.pricing_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_pricing_sku(id: "SKU#{i}") }
24
+
25
+ record_request do
26
+ get admin_api.pricing_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 pricing SKU'
35
+ route admin_api.pricing_skus_path
36
+
37
+ record_request do
38
+ post admin_api.pricing_skus_path,
39
+ params: { pricing_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 pricing SKU'
48
+ route admin_api.pricing_sku_path(':id')
49
+
50
+ record_request do
51
+ get admin_api.pricing_sku_path(create_pricing_sku.id)
52
+ assert_equal(200, response.status)
53
+ end
54
+ end
55
+
56
+ def test_and_document_update
57
+ description 'Updating an pricing SKU'
58
+ route admin_api.pricing_sku_path(':id')
59
+
60
+ record_request do
61
+ patch admin_api.pricing_sku_path(create_pricing_sku.id),
62
+ params: { pricing_sku: { discountable: false } },
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 pricing SKUs'
71
+ route admin_api.bulk_pricing_skus_path
72
+
73
+ record_request do
74
+ data = Array.new(3) { sample_attributes.merge('_id' => Pricing::Sku.count) }
75
+ patch admin_api.bulk_pricing_skus_path,
76
+ params: { pricing_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 pricing SKU'
85
+ route admin_api.pricing_sku_path(':id')
86
+
87
+ record_request do
88
+ delete admin_api.pricing_sku_path(create_pricing_sku.id)
89
+ assert_equal(204, response.status)
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end