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.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/README.md +82 -0
- data/Rakefile +10 -0
- data/app/assets/images/workarea/api/admin/icons/api.svg +1 -0
- data/app/controllers/workarea/api/admin/application_controller.rb +73 -0
- data/app/controllers/workarea/api/admin/categories_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/category_product_rules_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/content_assets_controller.rb +299 -0
- data/app/controllers/workarea/api/admin/content_controller.rb +268 -0
- data/app/controllers/workarea/api/admin/discounts_controller.rb +271 -0
- data/app/controllers/workarea/api/admin/email_signups_controller.rb +108 -0
- data/app/controllers/workarea/api/admin/fulfillments_controller.rb +268 -0
- data/app/controllers/workarea/api/admin/inventory_skus_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/navigation_menus_controller.rb +267 -0
- data/app/controllers/workarea/api/admin/navigation_taxons_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/orders_controller.rb +160 -0
- data/app/controllers/workarea/api/admin/pages_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/payment_profiles_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/payment_transactions_controller.rb +108 -0
- data/app/controllers/workarea/api/admin/payments_controller.rb +115 -0
- data/app/controllers/workarea/api/admin/prices_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/pricing_skus_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/product_images_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/products_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/promo_code_lists_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/recommendation_settings_controller.rb +122 -0
- data/app/controllers/workarea/api/admin/redirects_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/releases_controller.rb +304 -0
- data/app/controllers/workarea/api/admin/saved_addresses_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/saved_credit_cards_controller.rb +256 -0
- data/app/controllers/workarea/api/admin/shipping_rates_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/shipping_services_controller.rb +299 -0
- data/app/controllers/workarea/api/admin/shippings_controller.rb +105 -0
- data/app/controllers/workarea/api/admin/swagger_controller.rb +41 -0
- data/app/controllers/workarea/api/admin/tax_categories_controller.rb +242 -0
- data/app/controllers/workarea/api/admin/tax_rates_controller.rb +292 -0
- data/app/controllers/workarea/api/admin/users_controller.rb +296 -0
- data/app/controllers/workarea/api/admin/variants_controller.rb +232 -0
- data/app/models/workarea/api/admin/bulk_upsert.rb +74 -0
- data/app/models/workarea/user.decorator +7 -0
- data/app/views/workarea/admin/users/_api_permissions.html.haml +6 -0
- data/app/workers/workarea/perform_api_bulk_upsert.rb +15 -0
- data/bin/rails +18 -0
- data/config/initializers/append_points.rb +4 -0
- data/config/initializers/config.rb +15 -0
- data/config/locales/en.yml +9 -0
- data/config/routes.rb +81 -0
- data/lib/workarea/api/admin.rb +21 -0
- data/lib/workarea/api/admin/engine.rb +14 -0
- data/lib/workarea/api/admin/swagger.rb +106 -0
- data/test/documentation/workarea/api/admin/categories_documentation_test.rb +106 -0
- data/test/documentation/workarea/api/admin/category_product_rules_documentation_test.rb +78 -0
- data/test/documentation/workarea/api/admin/content_assets_documentation_test.rb +94 -0
- data/test/documentation/workarea/api/admin/content_documentation_test.rb +87 -0
- data/test/documentation/workarea/api/admin/discounts_documentation_test.rb +85 -0
- data/test/documentation/workarea/api/admin/email_signups_documentation_test.rb +41 -0
- data/test/documentation/workarea/api/admin/fulfillment_documentation_test.rb +84 -0
- data/test/documentation/workarea/api/admin/inventory_skus_documentation_test.rb +95 -0
- data/test/documentation/workarea/api/admin/navigation_menus_documentation_test.rb +81 -0
- data/test/documentation/workarea/api/admin/navigation_taxons_documentation_test.rb +94 -0
- data/test/documentation/workarea/api/admin/orders_documentation_test.rb +65 -0
- data/test/documentation/workarea/api/admin/pages_documentation_test.rb +93 -0
- data/test/documentation/workarea/api/admin/payment_profiles_documentation_test.rb +98 -0
- data/test/documentation/workarea/api/admin/payment_transactions_documentation_test.rb +43 -0
- data/test/documentation/workarea/api/admin/payments_documentation_test.rb +41 -0
- data/test/documentation/workarea/api/admin/prices_documentation_test.rb +82 -0
- data/test/documentation/workarea/api/admin/pricing_skus_documentation_test.rb +95 -0
- data/test/documentation/workarea/api/admin/product_images_documentation_test.rb +101 -0
- data/test/documentation/workarea/api/admin/products_documentation_test.rb +96 -0
- data/test/documentation/workarea/api/admin/promo_code_lists_documentation_test.rb +94 -0
- data/test/documentation/workarea/api/admin/recommendation_settings_documentation_test.rb +37 -0
- data/test/documentation/workarea/api/admin/redirects_documentation_test.rb +96 -0
- data/test/documentation/workarea/api/admin/release_changes_documentation_test.rb +32 -0
- data/test/documentation/workarea/api/admin/releases_documentation_test.rb +93 -0
- data/test/documentation/workarea/api/admin/saved_addresses_documentation_test.rb +92 -0
- data/test/documentation/workarea/api/admin/saved_credit_cards_documentation_test.rb +86 -0
- data/test/documentation/workarea/api/admin/shipping_rates_documentation_test.rb +78 -0
- data/test/documentation/workarea/api/admin/shipping_services_documentation_test.rb +93 -0
- data/test/documentation/workarea/api/admin/shippings_documentation_test.rb +41 -0
- data/test/documentation/workarea/api/admin/tax_categories_documentation_test.rb +95 -0
- data/test/documentation/workarea/api/admin/tax_rates_documentation_test.rb +78 -0
- data/test/documentation/workarea/api/admin/users_documentation_test.rb +99 -0
- data/test/documentation/workarea/api/admin/variants_documentation_test.rb +80 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/config/manifest.js +4 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/jobs/application_job.rb +2 -0
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/mailers/application_mailer.rb +4 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +34 -0
- data/test/dummy/bin/update +29 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +25 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/cable.yml +9 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +55 -0
- data/test/dummy/config/environments/production.rb +86 -0
- data/test/dummy/config/environments/test.rb +43 -0
- data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/new_framework_defaults.rb +21 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/workarea.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/puma.rb +47 -0
- data/test/dummy/config/routes.rb +6 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config/spring.rb +6 -0
- data/test/dummy/db/seeds.rb +2 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
- data/test/dummy/public/apple-touch-icon.png +0 -0
- data/test/dummy/public/favicon.ico +1 -0
- data/test/integration/workarea/api/admin/audit_log_integration_test.rb +20 -0
- data/test/integration/workarea/api/admin/authentication_integration_test.rb +61 -0
- data/test/integration/workarea/api/admin/categories_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/category_product_rules_integration_test.rb +58 -0
- data/test/integration/workarea/api/admin/content_assets_integration_test.rb +65 -0
- data/test/integration/workarea/api/admin/content_integration_test.rb +59 -0
- data/test/integration/workarea/api/admin/discounts_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/email_signups_integration_test.rb +32 -0
- data/test/integration/workarea/api/admin/error_handling_integration_test.rb +16 -0
- data/test/integration/workarea/api/admin/fulfillments_integration_test.rb +62 -0
- data/test/integration/workarea/api/admin/inventory_skus_integration_test.rb +70 -0
- data/test/integration/workarea/api/admin/navigation_menus_integration_test.rb +54 -0
- data/test/integration/workarea/api/admin/navigation_taxons_integration_test.rb +63 -0
- data/test/integration/workarea/api/admin/orders_integration_test.rb +53 -0
- data/test/integration/workarea/api/admin/pages_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/payment_profiles_integration_test.rb +75 -0
- data/test/integration/workarea/api/admin/payment_transactions_integration_test.rb +45 -0
- data/test/integration/workarea/api/admin/payments_integration_test.rb +29 -0
- data/test/integration/workarea/api/admin/prices_integration_test.rb +55 -0
- data/test/integration/workarea/api/admin/pricing_skus_integration_test.rb +72 -0
- data/test/integration/workarea/api/admin/product_images_integration_test.rb +56 -0
- data/test/integration/workarea/api/admin/products_integration_test.rb +66 -0
- data/test/integration/workarea/api/admin/promo_code_lists_integration_test.rb +70 -0
- data/test/integration/workarea/api/admin/recommendation_settings_integration_test.rb +41 -0
- data/test/integration/workarea/api/admin/redirects_integration_test.rb +69 -0
- data/test/integration/workarea/api/admin/release_changes_integration_test.rb +32 -0
- data/test/integration/workarea/api/admin/releases_integration_test.rb +60 -0
- data/test/integration/workarea/api/admin/saved_addresses_integration_test.rb +70 -0
- data/test/integration/workarea/api/admin/saved_credit_cards_integration_test.rb +76 -0
- data/test/integration/workarea/api/admin/shipping_rates_integration_test.rb +54 -0
- data/test/integration/workarea/api/admin/shipping_services_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/shippings_integration_test.rb +34 -0
- data/test/integration/workarea/api/admin/tax_categories_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/tax_rates_integration_test.rb +66 -0
- data/test/integration/workarea/api/admin/users_integration_test.rb +67 -0
- data/test/integration/workarea/api/admin/variants_integration_test.rb +59 -0
- data/test/models/workarea/api/admin/bulk_upsert_test.rb +79 -0
- data/test/test_helper.rb +10 -0
- data/test/vcr_cassettes/product_image_from_url.yml +43 -0
- data/workarea-api-admin.gemspec +18 -0
- metadata +252 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'responders'
|
|
2
|
+
require 'raddocs'
|
|
3
|
+
require 'swagger/blocks'
|
|
4
|
+
|
|
5
|
+
require 'workarea'
|
|
6
|
+
require 'workarea/admin'
|
|
7
|
+
|
|
8
|
+
module Workarea
|
|
9
|
+
module Api
|
|
10
|
+
module Admin
|
|
11
|
+
def self.authenticate(email, password)
|
|
12
|
+
user = User.find_for_login(email, password)
|
|
13
|
+
user.try(:api_access?) || user.try(:super_admin?) ? user : nil
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
require 'workarea/api/version'
|
|
20
|
+
require 'workarea/api/admin/engine'
|
|
21
|
+
require 'workarea/api/admin/swagger'
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module Api
|
|
3
|
+
module Admin
|
|
4
|
+
module Swagger
|
|
5
|
+
extend self
|
|
6
|
+
|
|
7
|
+
def models
|
|
8
|
+
@models ||= begin
|
|
9
|
+
result = Mongoid.models.select { |k| k.name.starts_with?('Workarea') }
|
|
10
|
+
|
|
11
|
+
result.reject! do |klass|
|
|
12
|
+
Workarea.config.api_admin_ignore_definitions.any? { |d| klass.name =~ d }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
result += result.flat_map(&:subclasses)
|
|
16
|
+
result += [Mongoid::DocumentPath::Node]
|
|
17
|
+
result
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def klasses
|
|
22
|
+
models + Workarea::Api::Admin::ApplicationController.subclasses
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def add_fields(klass, dsl)
|
|
26
|
+
klass.fields.each do |name, metadata|
|
|
27
|
+
next if name == '_type'
|
|
28
|
+
default_value = if metadata.default_val.is_a?(Proc)
|
|
29
|
+
nil
|
|
30
|
+
else
|
|
31
|
+
metadata.default_val
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
dsl.property name do
|
|
35
|
+
case metadata.type.to_s
|
|
36
|
+
when 'BSON::ObjectId'
|
|
37
|
+
key :type, :string
|
|
38
|
+
when 'Date'
|
|
39
|
+
key :type, :string
|
|
40
|
+
key :format, :date
|
|
41
|
+
key :default, default_value.as_json if default_value.present?
|
|
42
|
+
when 'Time'
|
|
43
|
+
key :type, :string
|
|
44
|
+
key :format, 'date-time'
|
|
45
|
+
key :default, default_value.as_json if default_value.present?
|
|
46
|
+
when 'Array'
|
|
47
|
+
key :type, :array
|
|
48
|
+
key :default, default_value.to_a if default_value.present?
|
|
49
|
+
items { key :type, :string }
|
|
50
|
+
when 'Hash'
|
|
51
|
+
key :type, :object
|
|
52
|
+
key :additionalProperties, true
|
|
53
|
+
key :default, default_value.to_h if default_value.present?
|
|
54
|
+
when 'Boolean', 'Mongoid::Boolean'
|
|
55
|
+
key :type, :boolean
|
|
56
|
+
key :default, !!default_value if default_value.present?
|
|
57
|
+
when 'Integer'
|
|
58
|
+
key :type, :integer
|
|
59
|
+
key :default, default_value.to_i if default_value.present?
|
|
60
|
+
else
|
|
61
|
+
key :type, :string
|
|
62
|
+
key :default, default_value.to_s if default_value.present?
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def add_relations(klass, dsl)
|
|
69
|
+
klass.relations.values.select(&:embedded?).each do |metadata|
|
|
70
|
+
dsl.property metadata.name do
|
|
71
|
+
if metadata.many?
|
|
72
|
+
key :type, :array
|
|
73
|
+
items { key :'$ref', metadata.klass.name }
|
|
74
|
+
else
|
|
75
|
+
key :'$ref', metadata.klass.name
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def add_validators(klass, dsl)
|
|
82
|
+
required_attributes = klass
|
|
83
|
+
.validators
|
|
84
|
+
.select { |v| v.is_a?(Mongoid::Validatable::PresenceValidator) }
|
|
85
|
+
.flat_map(&:attributes)
|
|
86
|
+
.select { |a| klass.fields.key?(a) }
|
|
87
|
+
|
|
88
|
+
dsl.key :required, required_attributes if required_attributes.any?
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def generate!
|
|
92
|
+
models.each do |klass|
|
|
93
|
+
klass.include(::Swagger::Blocks)
|
|
94
|
+
klass.instance_eval do
|
|
95
|
+
swagger_schema klass.name do
|
|
96
|
+
Swagger.add_validators(klass, self)
|
|
97
|
+
Swagger.add_fields(klass, self)
|
|
98
|
+
Swagger.add_relations(klass, self)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'workarea/api/documentation_test'
|
|
3
|
+
|
|
4
|
+
module Workarea
|
|
5
|
+
module Api
|
|
6
|
+
module Admin
|
|
7
|
+
class CategoriesDocumentationTest < DocumentationTest
|
|
8
|
+
include Workarea::Admin::IntegrationTest
|
|
9
|
+
|
|
10
|
+
resource 'Categories'
|
|
11
|
+
|
|
12
|
+
def sample_attributes
|
|
13
|
+
create_category(
|
|
14
|
+
product_rules: [{ name: 'search', operator: 'equals', value: '*' }]
|
|
15
|
+
).as_json.except('_id', 'slug')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_and_document_index
|
|
19
|
+
description 'Listing categories'
|
|
20
|
+
route admin_api.categories_path
|
|
21
|
+
parameter :page, 'Current page'
|
|
22
|
+
parameter :sort_by, 'Field on which to sort (see responses for possible values)'
|
|
23
|
+
parameter :sort_direction, 'Direction to sort (asc or desc)'
|
|
24
|
+
|
|
25
|
+
2.times do
|
|
26
|
+
create_category(
|
|
27
|
+
product_rules: [{ name: 'search', operator: 'equals', value: '*' }]
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
record_request do
|
|
32
|
+
get admin_api.categories_path,
|
|
33
|
+
params: { page: 1, sort_by: 'created_at', sort_direction: 'desc' }
|
|
34
|
+
assert_equal(200, response.status)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_and_document_create
|
|
39
|
+
description 'Creating a category'
|
|
40
|
+
route admin_api.categories_path
|
|
41
|
+
|
|
42
|
+
record_request do
|
|
43
|
+
post admin_api.categories_path, params: sample_attributes, as: :json
|
|
44
|
+
assert_equal(201, response.status)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_and_document_show
|
|
49
|
+
description 'Showing a category'
|
|
50
|
+
route admin_api.category_path(':id')
|
|
51
|
+
|
|
52
|
+
category = create_category(
|
|
53
|
+
product_rules: [{ name: 'search', operator: 'equals', value: '*' }]
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
record_request do
|
|
57
|
+
get admin_api.category_path(category.id)
|
|
58
|
+
assert_equal(200, response.status)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_and_document_update
|
|
63
|
+
description 'Updating a category'
|
|
64
|
+
route admin_api.category_path(':id')
|
|
65
|
+
|
|
66
|
+
category = create_category(
|
|
67
|
+
product_rules: [{ name: 'search', operator: 'equals', value: '*' }]
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
record_request do
|
|
71
|
+
patch admin_api.category_path(category.id),
|
|
72
|
+
params: sample_attributes,
|
|
73
|
+
as: :json
|
|
74
|
+
|
|
75
|
+
assert_equal(204, response.status)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_and_document_bulk_upsert
|
|
80
|
+
description 'Bulk upserting categories'
|
|
81
|
+
route admin_api.bulk_categories_path
|
|
82
|
+
|
|
83
|
+
record_request do
|
|
84
|
+
patch admin_api.bulk_categories_path,
|
|
85
|
+
params: { categories: [sample_attributes] * 3 },
|
|
86
|
+
as: :json
|
|
87
|
+
|
|
88
|
+
assert_equal(204, response.status)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_and_document_destroy
|
|
93
|
+
description 'Removing a category'
|
|
94
|
+
route admin_api.category_path(':id')
|
|
95
|
+
|
|
96
|
+
category = create_category
|
|
97
|
+
|
|
98
|
+
record_request do
|
|
99
|
+
delete admin_api.category_path(category.id), as: :json
|
|
100
|
+
assert_equal(204, response.status)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'workarea/api/documentation_test'
|
|
3
|
+
|
|
4
|
+
module Workarea
|
|
5
|
+
module Api
|
|
6
|
+
module Admin
|
|
7
|
+
class CategoryProductRulesDocumentationTest < DocumentationTest
|
|
8
|
+
include Workarea::Admin::IntegrationTest
|
|
9
|
+
|
|
10
|
+
resource 'Category Product Rules'
|
|
11
|
+
|
|
12
|
+
def category
|
|
13
|
+
@category ||= create_category
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def sample_attributes
|
|
17
|
+
{ name: 'search', operator: 'equals', value: '*' }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def create_rule
|
|
21
|
+
category.product_rules.create!(sample_attributes)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_and_document_index
|
|
25
|
+
description 'Listing category product rules'
|
|
26
|
+
route admin_api.category_product_rules_path(':category_id')
|
|
27
|
+
|
|
28
|
+
2.times { create_rule }
|
|
29
|
+
|
|
30
|
+
record_request do
|
|
31
|
+
get admin_api.category_product_rules_path(category.id)
|
|
32
|
+
assert_equal(200, response.status)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_and_document_create
|
|
37
|
+
description 'Creating a category product rule'
|
|
38
|
+
route admin_api.category_product_rules_path(':category_id')
|
|
39
|
+
|
|
40
|
+
record_request do
|
|
41
|
+
post admin_api.category_product_rules_path(category.id),
|
|
42
|
+
params: { product_rule: sample_attributes },
|
|
43
|
+
as: :json
|
|
44
|
+
|
|
45
|
+
assert_equal(201, response.status)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_and_document_update
|
|
50
|
+
description 'Updating a category product rule'
|
|
51
|
+
route admin_api.category_product_rule_path(':category_id', ':id')
|
|
52
|
+
|
|
53
|
+
rule = create_rule
|
|
54
|
+
|
|
55
|
+
record_request do
|
|
56
|
+
patch admin_api.category_product_rule_path(category.id, rule.id),
|
|
57
|
+
params: { product_rule: { value: 'foo' } },
|
|
58
|
+
as: :json
|
|
59
|
+
|
|
60
|
+
assert_equal(204, response.status)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_and_document_destroy
|
|
65
|
+
description 'Removing a category product rule'
|
|
66
|
+
route admin_api.category_product_rule_path(':category_id', ':id')
|
|
67
|
+
|
|
68
|
+
rule = create_rule
|
|
69
|
+
|
|
70
|
+
record_request do
|
|
71
|
+
delete admin_api.category_product_rule_path(category.id, rule.id)
|
|
72
|
+
assert_equal(204, response.status)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
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 ContentAssetsDocumentationTest < DocumentationTest
|
|
8
|
+
include Workarea::Admin::IntegrationTest
|
|
9
|
+
|
|
10
|
+
resource 'Content Assets'
|
|
11
|
+
|
|
12
|
+
def sample_attributes
|
|
13
|
+
create_asset.as_json.except('_id')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_and_document_index
|
|
17
|
+
description 'Listing content assets'
|
|
18
|
+
route admin_api.content_assets_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_asset }
|
|
24
|
+
|
|
25
|
+
record_request do
|
|
26
|
+
get admin_api.content_assets_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 content asset'
|
|
35
|
+
route admin_api.content_assets_path
|
|
36
|
+
|
|
37
|
+
record_request do
|
|
38
|
+
post admin_api.content_assets_path,
|
|
39
|
+
params: { asset: 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 content asset'
|
|
48
|
+
route admin_api.content_asset_path(':id')
|
|
49
|
+
|
|
50
|
+
record_request do
|
|
51
|
+
get admin_api.content_asset_path(create_asset.id)
|
|
52
|
+
assert_equal(200, response.status)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_and_document_update
|
|
57
|
+
description 'Updating a content asset'
|
|
58
|
+
route admin_api.content_asset_path(':id')
|
|
59
|
+
|
|
60
|
+
record_request do
|
|
61
|
+
patch admin_api.content_asset_path(create_asset.id),
|
|
62
|
+
params: { asset: 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 content assets'
|
|
71
|
+
route admin_api.bulk_content_assets_path
|
|
72
|
+
|
|
73
|
+
record_request do
|
|
74
|
+
patch admin_api.bulk_content_assets_path,
|
|
75
|
+
params: { assets: [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 content asset'
|
|
84
|
+
route admin_api.content_asset_path(':id')
|
|
85
|
+
|
|
86
|
+
record_request do
|
|
87
|
+
delete admin_api.content_asset_path(create_asset.id)
|
|
88
|
+
assert_equal(204, response.status)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'workarea/api/documentation_test'
|
|
3
|
+
|
|
4
|
+
module Workarea
|
|
5
|
+
module Api
|
|
6
|
+
module Admin
|
|
7
|
+
class ContentDocumentationTest < DocumentationTest
|
|
8
|
+
include Workarea::Admin::IntegrationTest
|
|
9
|
+
|
|
10
|
+
resource 'Content'
|
|
11
|
+
|
|
12
|
+
def sample_attributes
|
|
13
|
+
create_content
|
|
14
|
+
.as_json
|
|
15
|
+
.except('_id', 'slug', 'last_indexed_at')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_and_document_index
|
|
19
|
+
description 'Listing content'
|
|
20
|
+
route admin_api.content_index_path
|
|
21
|
+
parameter :page, 'Current page'
|
|
22
|
+
parameter :sort_by, 'Field on which to sort (see responses for possible values)'
|
|
23
|
+
parameter :sort_direction, 'Direction to sort (asc or desc)'
|
|
24
|
+
|
|
25
|
+
2.times { create_content }
|
|
26
|
+
|
|
27
|
+
record_request do
|
|
28
|
+
get admin_api.content_index_path,
|
|
29
|
+
params: { page: 1, sort_by: 'created_at', sort_direction: 'desc' },
|
|
30
|
+
as: :json
|
|
31
|
+
|
|
32
|
+
assert_equal(200, response.status)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_and_document_create
|
|
37
|
+
description 'Creating content'
|
|
38
|
+
route admin_api.content_index_path
|
|
39
|
+
|
|
40
|
+
record_request do
|
|
41
|
+
post admin_api.content_index_path,
|
|
42
|
+
params: { content: sample_attributes },
|
|
43
|
+
as: :json
|
|
44
|
+
|
|
45
|
+
assert_equal(201, response.status)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_and_document_show
|
|
50
|
+
description 'Showing content'
|
|
51
|
+
route admin_api.content_path(':id')
|
|
52
|
+
|
|
53
|
+
record_request do
|
|
54
|
+
get admin_api.content_path(create_content.id)
|
|
55
|
+
assert_equal(200, response.status)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_and_document_update
|
|
60
|
+
description 'Updating content'
|
|
61
|
+
route admin_api.content_path(':id')
|
|
62
|
+
|
|
63
|
+
record_request do
|
|
64
|
+
patch admin_api.content_path(create_content.id),
|
|
65
|
+
params: { content: { browser_title: 'foo' } },
|
|
66
|
+
as: :json
|
|
67
|
+
|
|
68
|
+
assert_equal(204, response.status)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def test_and_document_bulk_upsert
|
|
73
|
+
description 'Bulk upserting content'
|
|
74
|
+
route admin_api.bulk_content_index_path
|
|
75
|
+
|
|
76
|
+
record_request do
|
|
77
|
+
patch admin_api.bulk_content_index_path,
|
|
78
|
+
params: { content: [sample_attributes] * 3 },
|
|
79
|
+
as: :json
|
|
80
|
+
|
|
81
|
+
assert_equal(204, response.status)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|