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,76 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Workarea
|
|
4
|
+
module Api
|
|
5
|
+
module Admin
|
|
6
|
+
class SavedCreditCardsIntegrationTest < IntegrationTest
|
|
7
|
+
include Workarea::Admin::IntegrationTest
|
|
8
|
+
|
|
9
|
+
setup :set_sample_attributes
|
|
10
|
+
|
|
11
|
+
def set_sample_attributes
|
|
12
|
+
@profile = create_payment_profile
|
|
13
|
+
@sample_attributes = create_saved_credit_card(profile_id: @profile.id)
|
|
14
|
+
.as_json
|
|
15
|
+
.except('_id')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_lists_credit_cards
|
|
19
|
+
credit_cards = [
|
|
20
|
+
create_saved_credit_card(profile: @profile),
|
|
21
|
+
create_saved_credit_card(profile: @profile)
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
get admin_api.payment_profile_saved_credit_cards_path(@profile)
|
|
25
|
+
result = JSON.parse(response.body)['saved_credit_cards']
|
|
26
|
+
|
|
27
|
+
assert_equal(2, result.length)
|
|
28
|
+
assert_equal(
|
|
29
|
+
credit_cards.first,
|
|
30
|
+
Payment::SavedCreditCard.new(result.first)
|
|
31
|
+
)
|
|
32
|
+
assert_equal(
|
|
33
|
+
credit_cards.second,
|
|
34
|
+
Payment::SavedCreditCard.new(result.second)
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_creates_credit_cards
|
|
39
|
+
assert_difference 'Payment::SavedCreditCard.count', 1 do
|
|
40
|
+
post admin_api.payment_profile_saved_credit_cards_path(@profile),
|
|
41
|
+
params: { saved_credit_card: @sample_attributes }
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_shows_credit_cards
|
|
46
|
+
credit_card = create_saved_credit_card(profile: @profile)
|
|
47
|
+
get admin_api.payment_profile_saved_credit_card_path(@profile, credit_card)
|
|
48
|
+
result = JSON.parse(response.body)['saved_credit_card']
|
|
49
|
+
assert_equal(credit_card, Payment::SavedCreditCard.new(result))
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_updates_credit_cards
|
|
53
|
+
credit_card = create_saved_credit_card(profile: @profile)
|
|
54
|
+
patch admin_api.payment_profile_saved_credit_card_path(@profile, credit_card),
|
|
55
|
+
params: { saved_credit_card: { first_name: 'Ben' } }
|
|
56
|
+
|
|
57
|
+
assert_equal('Ben', credit_card.reload.first_name)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_bulk_upserts_credit_cards
|
|
61
|
+
assert_difference 'Payment::SavedCreditCard.count', 10 do
|
|
62
|
+
patch admin_api.bulk_payment_profile_saved_credit_cards_path(@profile),
|
|
63
|
+
params: { saved_credit_cards: [@sample_attributes] * 10 }
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_destroys_credit_cards
|
|
68
|
+
credit_card = create_saved_credit_card(profile: @profile)
|
|
69
|
+
assert_difference 'Payment::SavedCreditCard.count', -1 do
|
|
70
|
+
delete admin_api.payment_profile_saved_credit_card_path(@profile, credit_card)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Workarea
|
|
4
|
+
module Api
|
|
5
|
+
module Admin
|
|
6
|
+
class ShippingRatesIntegrationTest < IntegrationTest
|
|
7
|
+
include Workarea::Admin::IntegrationTest
|
|
8
|
+
|
|
9
|
+
setup :set_sample_attributes
|
|
10
|
+
|
|
11
|
+
def set_sample_attributes
|
|
12
|
+
@shipping_service = create_shipping_service
|
|
13
|
+
@sample_attributes = @shipping_service.rates.first.as_json.except('_id')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def create_rate
|
|
17
|
+
@shipping_service.rates.create!(@sample_attributes)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_lists_rates
|
|
21
|
+
rates = [create_rate, create_rate]
|
|
22
|
+
get admin_api.shipping_service_rates_path(@shipping_service.id)
|
|
23
|
+
result = JSON.parse(response.body)['rates']
|
|
24
|
+
|
|
25
|
+
assert_equal(3, result.length) # one pre-existing rate
|
|
26
|
+
assert_equal(rates.first, Shipping::Rate.new(result.second))
|
|
27
|
+
assert_equal(rates.second, Shipping::Rate.new(result.third))
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_creates_rates
|
|
31
|
+
assert_difference '@shipping_service.reload.rates.count', 1 do
|
|
32
|
+
post admin_api.shipping_service_rates_path(@shipping_service.id),
|
|
33
|
+
params: { rate: @sample_attributes }
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_updates_rates
|
|
38
|
+
rate = create_rate
|
|
39
|
+
patch admin_api.shipping_service_rate_path(@shipping_service.id, rate.id),
|
|
40
|
+
params: { rate: { price: 21 } }
|
|
41
|
+
|
|
42
|
+
assert_equal(21.to_m, rate.reload.price)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_destroys_rates
|
|
46
|
+
rate = create_rate
|
|
47
|
+
assert_difference '@shipping_service.reload.rates.count', -1 do
|
|
48
|
+
delete admin_api.shipping_service_rate_path(@shipping_service.id, rate.id)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Workarea
|
|
4
|
+
module Api
|
|
5
|
+
module Admin
|
|
6
|
+
class ShippingServicesIntegrationTest < IntegrationTest
|
|
7
|
+
include Workarea::Admin::IntegrationTest
|
|
8
|
+
|
|
9
|
+
setup :set_sample_attributes
|
|
10
|
+
|
|
11
|
+
def set_sample_attributes
|
|
12
|
+
@sample_attributes = create_shipping_service.as_json.except('_id')
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_lists_shipping_services
|
|
16
|
+
shipping_services = [create_shipping_service, create_shipping_service]
|
|
17
|
+
get admin_api.shipping_services_path
|
|
18
|
+
result = JSON.parse(response.body)['shipping_services']
|
|
19
|
+
|
|
20
|
+
assert_equal(3, result.length)
|
|
21
|
+
assert_equal(shipping_services.second, Shipping::Service.new(result.first))
|
|
22
|
+
assert_equal(shipping_services.first, Shipping::Service.new(result.second))
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_creates_shipping_services
|
|
26
|
+
assert_difference 'Shipping::Service.count', 1 do
|
|
27
|
+
post admin_api.shipping_services_path,
|
|
28
|
+
params: { shipping_service: @sample_attributes }
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_shows_shipping_services
|
|
33
|
+
shipping_service = create_shipping_service
|
|
34
|
+
get admin_api.shipping_service_path(shipping_service.id)
|
|
35
|
+
result = JSON.parse(response.body)['shipping_service']
|
|
36
|
+
assert_equal(shipping_service, Shipping::Service.new(result))
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_updates_shipping_services
|
|
40
|
+
shipping_service = create_shipping_service
|
|
41
|
+
patch admin_api.shipping_service_path(shipping_service.id),
|
|
42
|
+
params: { shipping_service: { name: 'foo' } }
|
|
43
|
+
|
|
44
|
+
assert_equal('foo', shipping_service.reload.name)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_bulk_upserts_shipping_services
|
|
48
|
+
assert_difference 'Shipping::Service.count', 10 do
|
|
49
|
+
patch admin_api.bulk_shipping_services_path,
|
|
50
|
+
params: { shipping_services: [@sample_attributes] * 10 }
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_destroys_shipping_services
|
|
55
|
+
shipping_service = create_shipping_service
|
|
56
|
+
|
|
57
|
+
assert_difference 'Shipping::Service.count', -1 do
|
|
58
|
+
delete admin_api.shipping_service_path(shipping_service.id)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Workarea
|
|
4
|
+
module Api
|
|
5
|
+
module Admin
|
|
6
|
+
class ShippingsIntegrationTest < IntegrationTest
|
|
7
|
+
include Workarea::Admin::IntegrationTest
|
|
8
|
+
|
|
9
|
+
setup :set_sample_attributes
|
|
10
|
+
|
|
11
|
+
def set_sample_attributes
|
|
12
|
+
@sample_attributes = create_shipping.as_json.except('_id')
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_lists_shippings
|
|
16
|
+
shippings = [create_shipping, create_shipping]
|
|
17
|
+
get admin_api.shippings_path
|
|
18
|
+
result = JSON.parse(response.body)['shippings']
|
|
19
|
+
|
|
20
|
+
assert_equal(3, result.length)
|
|
21
|
+
assert_equal(shippings.second, Shipping.new(result.first))
|
|
22
|
+
assert_equal(shippings.first, Shipping.new(result.second))
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_shows_shippings
|
|
26
|
+
shipping = create_shipping
|
|
27
|
+
get admin_api.shipping_path(shipping.id)
|
|
28
|
+
result = JSON.parse(response.body)['shipping']
|
|
29
|
+
assert_equal(shipping, Shipping.new(result))
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Workarea
|
|
4
|
+
module Api
|
|
5
|
+
module Admin
|
|
6
|
+
class TaxCategoriesIntegrationTest < IntegrationTest
|
|
7
|
+
include Workarea::Admin::IntegrationTest
|
|
8
|
+
|
|
9
|
+
def sample_attributes
|
|
10
|
+
@count ||= 0
|
|
11
|
+
@count += 1
|
|
12
|
+
|
|
13
|
+
create_tax_category.as_json.except('_id').merge('code' => "00#{@count}")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_lists_tax_categories
|
|
17
|
+
tax_categories = [create_tax_category, create_tax_category]
|
|
18
|
+
get admin_api.tax_categories_path
|
|
19
|
+
result = JSON.parse(response.body)['tax_categories']
|
|
20
|
+
|
|
21
|
+
assert_equal(2, result.length)
|
|
22
|
+
assert_equal(tax_categories.second, Tax::Category.new(result.first))
|
|
23
|
+
assert_equal(tax_categories.first, Tax::Category.new(result.second))
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_creates_tax_categories
|
|
27
|
+
data = sample_attributes
|
|
28
|
+
assert_difference 'Tax::Category.count', 1 do
|
|
29
|
+
post admin_api.tax_categories_path, params: { tax_category: data }
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_shows_tax_categories
|
|
34
|
+
tax_category = create_tax_category
|
|
35
|
+
get admin_api.tax_category_path(tax_category.id)
|
|
36
|
+
result = JSON.parse(response.body)['tax_category']
|
|
37
|
+
assert_equal(tax_category, Tax::Category.new(result))
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_updates_tax_categories
|
|
41
|
+
tax_category = create_tax_category
|
|
42
|
+
patch admin_api.tax_category_path(tax_category.id),
|
|
43
|
+
params: { tax_category: { name: 'foo' } }
|
|
44
|
+
|
|
45
|
+
assert_equal('foo', tax_category.reload.name)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_bulk_upserts_tax_categories
|
|
49
|
+
data = Array.new(10) { sample_attributes }
|
|
50
|
+
assert_difference 'Tax::Category.count', 10 do
|
|
51
|
+
patch admin_api.bulk_tax_categories_path, params: { tax_categories: data }
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_destroys_tax_categories
|
|
56
|
+
tax_category = create_tax_category
|
|
57
|
+
assert_difference 'Tax::Category.count', -1 do
|
|
58
|
+
delete admin_api.tax_category_path(tax_category.id)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Workarea
|
|
4
|
+
module Api
|
|
5
|
+
module Admin
|
|
6
|
+
class TaxRatesIntegrationTest < IntegrationTest
|
|
7
|
+
include Workarea::Admin::IntegrationTest
|
|
8
|
+
|
|
9
|
+
setup :set_sample_attributes
|
|
10
|
+
|
|
11
|
+
def set_sample_attributes
|
|
12
|
+
@tax_category = create_tax_category(rates: [])
|
|
13
|
+
@sample_attributes = { percentage: 0.06, country: 'US', region: 'PA' }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def create_tax_rate
|
|
17
|
+
@tax_category.rates.create!(@sample_attributes)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_lists_tax_rates
|
|
21
|
+
2.times { create_tax_rate }
|
|
22
|
+
get admin_api.tax_category_rates_path(@tax_category)
|
|
23
|
+
result = JSON.parse(response.body)['rates']
|
|
24
|
+
assert_equal(2, result.length)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_creates_tax_rates
|
|
28
|
+
assert_difference 'Tax::Rate.count', 1 do
|
|
29
|
+
post admin_api.tax_category_rates_path(@tax_category),
|
|
30
|
+
params: { rate: @sample_attributes }
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_shows_tax_rates
|
|
35
|
+
tax_rate = create_tax_rate
|
|
36
|
+
get admin_api.tax_category_rate_path(@tax_category, tax_rate)
|
|
37
|
+
result = JSON.parse(response.body)['rate']
|
|
38
|
+
assert_equal(tax_rate, Tax::Rate.new(result))
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_updates_tax_rates
|
|
42
|
+
tax_rate = create_tax_rate
|
|
43
|
+
patch admin_api.tax_category_rate_path(@tax_category, tax_rate),
|
|
44
|
+
params: { rate: { percentage: 0.08 } }
|
|
45
|
+
|
|
46
|
+
assert_equal(0.08, tax_rate.reload.percentage)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_bulk_upserts_tax_rates
|
|
50
|
+
assert_difference 'Tax::Rate.count', 10 do
|
|
51
|
+
patch admin_api.bulk_tax_category_rates_path(@tax_category),
|
|
52
|
+
params: { rates: [@sample_attributes] * 10 }
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_destroys_tax_rates
|
|
57
|
+
tax_rate = create_tax_rate
|
|
58
|
+
|
|
59
|
+
assert_difference 'Tax::Rate.count', -1 do
|
|
60
|
+
delete admin_api.tax_category_rate_path(@tax_category, tax_rate)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Workarea
|
|
4
|
+
module Api
|
|
5
|
+
module Admin
|
|
6
|
+
class UsersIntegrationTest < IntegrationTest
|
|
7
|
+
include Workarea::Admin::IntegrationTest
|
|
8
|
+
|
|
9
|
+
def sample_attributes
|
|
10
|
+
@count ||= 0
|
|
11
|
+
@count += 1
|
|
12
|
+
|
|
13
|
+
create_user
|
|
14
|
+
.as_json
|
|
15
|
+
.except('_id', 'token')
|
|
16
|
+
.merge('email' => "api#{@count}@workarea.com")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_lists_users
|
|
20
|
+
users = [create_user, create_user]
|
|
21
|
+
get admin_api.users_path
|
|
22
|
+
result = JSON.parse(response.body)['users']
|
|
23
|
+
|
|
24
|
+
assert_equal(3, result.length) # plus one for API auth
|
|
25
|
+
assert_equal(users.second, User.new(result.first))
|
|
26
|
+
assert_equal(users.first, User.new(result.second))
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_creates_users
|
|
30
|
+
data = sample_attributes
|
|
31
|
+
assert_difference 'User.count', 1 do
|
|
32
|
+
post admin_api.users_path, params: { user: data }
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_shows_users
|
|
37
|
+
user = create_user
|
|
38
|
+
get admin_api.user_path(user.id)
|
|
39
|
+
result = JSON.parse(response.body)['user']
|
|
40
|
+
assert(result['password_digest'].blank?)
|
|
41
|
+
assert_equal(user, User.new(result))
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_updates_users
|
|
45
|
+
user = create_user
|
|
46
|
+
patch admin_api.user_path(user.id), params: { user: { first_name: 'Foo' } }
|
|
47
|
+
assert_equal('Foo', user.reload.first_name)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_bulk_upserts_users
|
|
51
|
+
data = Array.new(10) { sample_attributes }
|
|
52
|
+
assert_difference 'User.count', 10 do
|
|
53
|
+
patch admin_api.bulk_users_path, params: { users: data }
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def test_destroys_users
|
|
58
|
+
user = create_user
|
|
59
|
+
|
|
60
|
+
assert_difference 'User.count', -1 do
|
|
61
|
+
delete admin_api.user_path(user.id)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Workarea
|
|
4
|
+
module Api
|
|
5
|
+
module Admin
|
|
6
|
+
class VariantsIntegrationTest < IntegrationTest
|
|
7
|
+
include Workarea::Admin::IntegrationTest
|
|
8
|
+
|
|
9
|
+
setup :set_sample_attributes
|
|
10
|
+
|
|
11
|
+
def set_sample_attributes
|
|
12
|
+
@product = create_product
|
|
13
|
+
@sample_attributes = @product.variants.first.as_json.except('_id')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def create_variant
|
|
17
|
+
@product.variants.create!(@sample_attributes)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_lists_variants
|
|
21
|
+
variants = [create_variant, create_variant]
|
|
22
|
+
get admin_api.product_variants_path(@product.id)
|
|
23
|
+
result = JSON.parse(response.body)['variants']
|
|
24
|
+
|
|
25
|
+
assert_equal(3, result.length) # one pre-existing variant
|
|
26
|
+
|
|
27
|
+
attrs = result.detect { |attr| attr['_id'] == variants.first.id.to_s }
|
|
28
|
+
assert_equal(variants.first, Catalog::Variant.new(attrs))
|
|
29
|
+
|
|
30
|
+
attrs = result.detect { |attr| attr['_id'] == variants.second.id.to_s }
|
|
31
|
+
assert_equal(variants.second, Catalog::Variant.new(attrs))
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_creates_variants
|
|
35
|
+
data = @sample_attributes
|
|
36
|
+
assert_difference '@product.reload.variants.count', 1 do
|
|
37
|
+
post admin_api.product_variants_path(@product.id), params: { variant: data }
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_updates_variants
|
|
42
|
+
variant = create_variant
|
|
43
|
+
patch admin_api.product_variant_path(@product.id, variant.id),
|
|
44
|
+
params: { variant: { name: 'foo' } }
|
|
45
|
+
|
|
46
|
+
assert_equal('foo', variant.reload.name)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_destroys_variants
|
|
50
|
+
variant = create_variant
|
|
51
|
+
|
|
52
|
+
assert_difference '@product.reload.variants.count', -1 do
|
|
53
|
+
delete admin_api.product_variant_path(@product.id, variant.id)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|