bigcommerce 0.10.0 → 1.0.0.beta
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 +4 -4
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/.rubocop.yml +620 -0
- data/.travis.yml +15 -0
- data/CHANGELOG.md +11 -0
- data/CONTRIBUTING.md +119 -0
- data/DEPENDENCIES.md +7 -0
- data/Gemfile +15 -0
- data/Guardfile +22 -0
- data/LICENSE +15 -15
- data/README.md +61 -70
- data/RELEASING.md +64 -0
- data/Rakefile +8 -6
- data/bigcommerce.gemspec +22 -53
- data/examples/README.md +148 -0
- data/examples/configuration/legacy_auth.rb +12 -0
- data/examples/configuration/oauth.rb +9 -0
- data/examples/content/blog_post.rb +39 -0
- data/examples/content/blog_tag.rb +10 -0
- data/examples/content/redirect.rb +43 -0
- data/examples/customers/customer.rb +36 -0
- data/examples/customers/customer_address.rb +50 -0
- data/examples/customers/customer_group.rb +35 -0
- data/examples/exception_handling.rb +50 -0
- data/examples/geography/country.rb +16 -0
- data/examples/geography/state.rb +19 -0
- data/examples/marketing/coupon.rb +44 -0
- data/examples/orders/order.rb +53 -0
- data/examples/orders/order_coupon.rb +17 -0
- data/examples/orders/order_message.rb +17 -0
- data/examples/orders/order_product.rb +23 -0
- data/examples/orders/order_shipping_address.rb +23 -0
- data/examples/orders/order_status.rb +15 -0
- data/examples/orders/order_tax.rb +17 -0
- data/examples/orders/shipment.rb +57 -0
- data/examples/payments/payment_method.rb +10 -0
- data/examples/products/brand.rb +36 -0
- data/examples/products/bulk_pricing_rule.rb +47 -0
- data/examples/products/category.rb +37 -0
- data/examples/products/configurable_field.rb +29 -0
- data/examples/products/custom_field.rb +44 -0
- data/examples/products/google_product_search_mapping.rb +12 -0
- data/examples/products/option.rb +37 -0
- data/examples/products/option_set.rb +35 -0
- data/examples/products/option_set_option.rb +50 -0
- data/examples/products/option_value.rb +43 -0
- data/examples/products/product.rb +44 -0
- data/examples/products/product_image.rb +42 -0
- data/examples/products/product_option.rb +17 -0
- data/examples/products/product_review.rb +12 -0
- data/examples/products/product_rule.rb +54 -0
- data/examples/products/product_video.rb +45 -0
- data/examples/products/sku.rb +48 -0
- data/examples/shipping/shipping_method.rb +13 -0
- data/examples/store/store_info.rb +10 -0
- data/examples/system/time.rb +10 -0
- data/examples/tax/tax_class.rb +13 -0
- data/examples/webhooks/webhook.rb +29 -0
- data/lib/bigcommerce.rb +50 -8
- data/lib/bigcommerce/exception.rb +51 -0
- data/lib/bigcommerce/middleware/auth.rb +16 -0
- data/lib/bigcommerce/middleware/http_exception.rb +14 -0
- data/lib/bigcommerce/request.rb +89 -0
- data/lib/bigcommerce/resource_actions.rb +51 -0
- data/lib/bigcommerce/resources/content/blog_post.rb +31 -0
- data/lib/bigcommerce/resources/content/blog_tag.rb +17 -0
- data/lib/bigcommerce/resources/content/redirect.rb +21 -0
- data/lib/bigcommerce/resources/customers/customer.rb +30 -0
- data/lib/bigcommerce/resources/customers/customer_address.rb +34 -0
- data/lib/bigcommerce/resources/customers/customer_group.rb +21 -0
- data/lib/bigcommerce/resources/geography/country.rb +22 -0
- data/lib/bigcommerce/resources/geography/state.rb +25 -0
- data/lib/bigcommerce/resources/marketing/coupon.rb +30 -0
- data/lib/bigcommerce/resources/orders/order.rb +73 -0
- data/lib/bigcommerce/resources/orders/order_coupon.rb +20 -0
- data/lib/bigcommerce/resources/orders/order_message.rb +23 -0
- data/lib/bigcommerce/resources/orders/order_product.rb +64 -0
- data/lib/bigcommerce/resources/orders/order_shipping_address.rb +50 -0
- data/lib/bigcommerce/resources/orders/order_status.rb +16 -0
- data/lib/bigcommerce/resources/orders/order_tax.rb +23 -0
- data/lib/bigcommerce/resources/orders/shipment.rb +30 -0
- data/lib/bigcommerce/resources/payments/payment_method.rb +17 -0
- data/lib/bigcommerce/resources/products/brand.rb +23 -0
- data/lib/bigcommerce/resources/products/bulk_pricing_rule.rb +26 -0
- data/lib/bigcommerce/resources/products/category.rb +29 -0
- data/lib/bigcommerce/resources/products/configurable_field.rb +30 -0
- data/lib/bigcommerce/resources/products/custom_field.rb +24 -0
- data/lib/bigcommerce/resources/products/google_product_search_mapping.rb +26 -0
- data/lib/bigcommerce/resources/products/option.rb +20 -0
- data/lib/bigcommerce/resources/products/option_set.rb +18 -0
- data/lib/bigcommerce/resources/products/option_set_option.rb +19 -0
- data/lib/bigcommerce/resources/products/option_value.rb +15 -0
- data/lib/bigcommerce/resources/products/product.rb +97 -0
- data/lib/bigcommerce/resources/products/product_image.rb +31 -0
- data/lib/bigcommerce/resources/products/product_option.rb +17 -0
- data/lib/bigcommerce/resources/products/product_review.rb +22 -0
- data/lib/bigcommerce/resources/products/product_rule.rb +31 -0
- data/lib/bigcommerce/resources/products/product_video.rb +24 -0
- data/lib/bigcommerce/resources/products/sku.rb +29 -0
- data/lib/bigcommerce/resources/resource.rb +10 -0
- data/lib/bigcommerce/resources/shipping/shipping_method.rb +15 -0
- data/lib/bigcommerce/resources/store/store_information.rb +37 -0
- data/lib/bigcommerce/resources/system/time.rb +15 -0
- data/lib/bigcommerce/resources/tax/tax_class.rb +15 -0
- data/lib/bigcommerce/resources/webhooks/webhook.rb +22 -0
- data/lib/bigcommerce/subresource_actions.rb +43 -0
- data/lib/bigcommerce/version.rb +1 -4
- data/spec/bigcommerce/bigcommerce_spec.rb +76 -0
- data/spec/bigcommerce/unit/actions_spec.rb +151 -0
- data/spec/bigcommerce/unit/exception_spec.rb +53 -0
- data/spec/bigcommerce/unit/middleware/auth_spec.rb +18 -0
- data/spec/bigcommerce/unit/middleware/http_exception_spec.rb +40 -0
- data/spec/bigcommerce/unit/request_spec.rb +180 -0
- data/spec/bigcommerce/unit/resources/content/blog_post_spec.rb +12 -0
- data/spec/bigcommerce/unit/resources/content/blog_tag_spec.rb +12 -0
- data/spec/bigcommerce/unit/resources/content/redirect_spec.rb +12 -0
- data/spec/bigcommerce/unit/resources/customers/customer_address_spec.rb +21 -0
- data/spec/bigcommerce/unit/resources/customers/customer_group_spec.rb +12 -0
- data/spec/bigcommerce/unit/resources/customers/customer_spec.rb +12 -0
- data/spec/bigcommerce/unit/resources/geography/country_spec.rb +12 -0
- data/spec/bigcommerce/unit/resources/geography/state_spec.rb +21 -0
- data/spec/bigcommerce/unit/resources/marketing/coupon_spec.rb +12 -0
- data/spec/bigcommerce/unit/resources/orders/order_product_spec.rb +21 -0
- data/spec/bigcommerce/unit/resources/orders/order_shipping_address_spec.rb +21 -0
- data/spec/bigcommerce/unit/resources/orders/order_spec.rb +13 -0
- data/spec/bigcommerce/unit/resources/orders/shipment_spec.rb +21 -0
- data/spec/bigcommerce/unit/resources/payments/payment_method_spec.rb +23 -0
- data/spec/bigcommerce/unit/resources/products/brand_spec.rb +12 -0
- data/spec/bigcommerce/unit/resources/products/bulk_pricing_rule_spec.rb +21 -0
- data/spec/bigcommerce/unit/resources/products/category_spec.rb +12 -0
- data/spec/bigcommerce/unit/resources/products/configurable_field_spec.rb +21 -0
- data/spec/bigcommerce/unit/resources/products/custom_field_spec.rb +21 -0
- data/spec/bigcommerce/unit/resources/products/google_product_search_mapping_spec.rb +14 -0
- data/spec/bigcommerce/unit/resources/products/option_set_spec.rb +12 -0
- data/spec/bigcommerce/unit/resources/products/option_spec.rb +12 -0
- data/spec/bigcommerce/unit/resources/products/product_image_spec.rb +21 -0
- data/spec/bigcommerce/unit/resources/products/product_review_spec.rb +14 -0
- data/spec/bigcommerce/unit/resources/products/product_rule_spec.rb +21 -0
- data/spec/bigcommerce/unit/resources/products/product_spec.rb +13 -0
- data/spec/bigcommerce/unit/resources/products/product_video_spec.rb +21 -0
- data/spec/bigcommerce/unit/resources/products/sku_spec.rb +21 -0
- data/spec/bigcommerce/unit/resources/resource_spec.rb +4 -0
- data/spec/bigcommerce/unit/resources/store_info/store_information_spec.rb +12 -0
- data/spec/bigcommerce/unit/resources/system/time_spec.rb +12 -0
- data/spec/bigcommerce/unit/version_spec.rb +7 -0
- data/spec/spec_helper.rb +9 -25
- metadata +203 -127
- data/lib/big_commerce.rb +0 -1
- data/lib/bigcommerce/api.rb +0 -473
- data/lib/bigcommerce/connection.rb +0 -171
- data/lib/bigcommerce/product.rb +0 -13
- data/lib/bigcommerce/resource.rb +0 -50
- data/spec/big_commerce_spec.rb +0 -9
- data/spec/integration/orders_spec.rb +0 -18
- data/spec/support/integration_context.rb +0 -13
- data/spec/support/mock_api_context.rb +0 -10
- data/spec/unit/api_request_spec.rb +0 -34
- data/spec/unit/api_spec.rb +0 -49
- data/spec/unit/connection_spec.rb +0 -23
- data/spec/unit/date_time_spec.rb +0 -31
- data/spec/unit/version_spec.rb +0 -13
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Product Image
|
|
2
|
+
# Images associated with a product.
|
|
3
|
+
# https://developer.bigcommerce.com/api/stores/v2/products/images
|
|
4
|
+
|
|
5
|
+
module Bigcommerce
|
|
6
|
+
class ProductImage < Resource
|
|
7
|
+
include Bigcommerce::SubresourceActions.new uri: 'products/%d/images/%d'
|
|
8
|
+
|
|
9
|
+
property :id
|
|
10
|
+
property :count
|
|
11
|
+
property :product_id
|
|
12
|
+
property :image_file
|
|
13
|
+
property :is_thumbnail
|
|
14
|
+
property :sort_order
|
|
15
|
+
property :zoom_url
|
|
16
|
+
property :thumbnail_url
|
|
17
|
+
property :standard_url
|
|
18
|
+
property :tiny_url
|
|
19
|
+
property :is_sample
|
|
20
|
+
property :description
|
|
21
|
+
property :date_created
|
|
22
|
+
|
|
23
|
+
def self.count(product_id)
|
|
24
|
+
get "products/#{product_id}/images/count"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.count_all
|
|
28
|
+
get 'products/images/count'
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Product Option
|
|
2
|
+
# Options associated directly with a product.
|
|
3
|
+
# https://developer.bigcommerce.com/api/stores/v2/products/options
|
|
4
|
+
|
|
5
|
+
module Bigcommerce
|
|
6
|
+
class ProductOption < Resource
|
|
7
|
+
include Bigcommerce::SubresourceActions.new(
|
|
8
|
+
uri: 'products/%d/options/%d',
|
|
9
|
+
disable: [:create, :update, :destroy, :destroy_all])
|
|
10
|
+
|
|
11
|
+
property :id
|
|
12
|
+
property :option_id
|
|
13
|
+
property :display_name
|
|
14
|
+
property :sort_order
|
|
15
|
+
property :is_required
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Product Review
|
|
2
|
+
# Options associated directly with a product.
|
|
3
|
+
# https://developer.bigcommerce.com/api/stores/v2/products/reviews
|
|
4
|
+
|
|
5
|
+
module Bigcommerce
|
|
6
|
+
class ProductReview < Resource
|
|
7
|
+
include Bigcommerce::Request.new 'products/%d/reviews'
|
|
8
|
+
|
|
9
|
+
property :id
|
|
10
|
+
property :product_id
|
|
11
|
+
property :author
|
|
12
|
+
property :date_created
|
|
13
|
+
property :rating
|
|
14
|
+
property :title
|
|
15
|
+
property :review
|
|
16
|
+
property :status
|
|
17
|
+
|
|
18
|
+
def self.all(product_id)
|
|
19
|
+
get path.build(product_id)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Product Rule
|
|
2
|
+
# Rules that modify the default behaviour of products.
|
|
3
|
+
# https://developer.bigcommerce.com/api/stores/v2/products/rules
|
|
4
|
+
|
|
5
|
+
module Bigcommerce
|
|
6
|
+
class ProductRule < Resource
|
|
7
|
+
include Bigcommerce::SubresourceActions.new uri: 'products/%d/rules/%d'
|
|
8
|
+
|
|
9
|
+
property :id
|
|
10
|
+
property :count
|
|
11
|
+
property :product_id
|
|
12
|
+
property :sort_order
|
|
13
|
+
property :is_enabled
|
|
14
|
+
property :is_stop
|
|
15
|
+
property :price_adjuster
|
|
16
|
+
property :weight_adjuster
|
|
17
|
+
property :is_purchasing_disabled
|
|
18
|
+
property :purchasing_disabled_message
|
|
19
|
+
property :is_purchasing_hidden
|
|
20
|
+
property :image_file
|
|
21
|
+
property :conditions
|
|
22
|
+
|
|
23
|
+
def self.count(product_id)
|
|
24
|
+
get "products/#{product_id}/rules/count"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.count_all
|
|
28
|
+
get 'products/rules/count'
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Product Video
|
|
2
|
+
# Embedded videos displayed on product listings.
|
|
3
|
+
# https://developer.bigcommerce.com/api/stores/v2/products/videos
|
|
4
|
+
|
|
5
|
+
module Bigcommerce
|
|
6
|
+
class ProductVideo < Resource
|
|
7
|
+
include Bigcommerce::SubresourceActions.new uri: 'products/%d/videos/%s'
|
|
8
|
+
|
|
9
|
+
property :id
|
|
10
|
+
property :product_id
|
|
11
|
+
property :count
|
|
12
|
+
property :url
|
|
13
|
+
property :sort_order
|
|
14
|
+
property :name
|
|
15
|
+
|
|
16
|
+
def self.count(product_id)
|
|
17
|
+
get "products/#{product_id}/videos/count"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.count_all
|
|
21
|
+
get 'products/videos/count'
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# SKU
|
|
2
|
+
# Stock Keeping Unit identifiers associated with products.
|
|
3
|
+
# https://developer.bigcommerce.com/api/stores/v2/products/skus
|
|
4
|
+
|
|
5
|
+
module Bigcommerce
|
|
6
|
+
class Sku < Resource
|
|
7
|
+
include Bigcommerce::SubresourceActions.new uri: 'products/%d/skus/%d'
|
|
8
|
+
|
|
9
|
+
property :id
|
|
10
|
+
property :product_id
|
|
11
|
+
property :sku
|
|
12
|
+
property :cost_price
|
|
13
|
+
property :count
|
|
14
|
+
property :upc
|
|
15
|
+
property :inventory_level
|
|
16
|
+
property :intentory_warning_level
|
|
17
|
+
property :bin_picking_number
|
|
18
|
+
property :options
|
|
19
|
+
property :inventory_warning_level
|
|
20
|
+
|
|
21
|
+
def self.count_all
|
|
22
|
+
get 'products/skus/count'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.count(product_id)
|
|
26
|
+
get "products/#{product_id}/skus/count"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
require 'bigcommerce/request'
|
|
2
|
+
require 'bigcommerce/resource_actions'
|
|
3
|
+
require 'bigcommerce/subresource_actions'
|
|
4
|
+
|
|
5
|
+
module Bigcommerce
|
|
6
|
+
class Resource < Hashie::Trash
|
|
7
|
+
include Hashie::Extensions::MethodAccess
|
|
8
|
+
include Hashie::Extensions::IgnoreUndeclared
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Shipping Method
|
|
2
|
+
# List of enabled shipping methods.
|
|
3
|
+
# https://developer.bigcommerce.com/api/stores/v2/shipping/methods
|
|
4
|
+
|
|
5
|
+
module Bigcommerce
|
|
6
|
+
class ShippingMethod < Resource
|
|
7
|
+
include Bigcommerce::ResourceActions.new(
|
|
8
|
+
uri: 'shipping/methods/%d',
|
|
9
|
+
disable: [:create, :update, :destroy, :destroy_all])
|
|
10
|
+
|
|
11
|
+
property :id
|
|
12
|
+
property :name
|
|
13
|
+
property :method_name
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Store Information
|
|
2
|
+
# Metadata that describes the store.
|
|
3
|
+
# https://developer.bigcommerce.com/api/stores/v2/store_information
|
|
4
|
+
|
|
5
|
+
module Bigcommerce
|
|
6
|
+
class StoreInfo < Resource
|
|
7
|
+
include Bigcommerce::Request.new 'store'
|
|
8
|
+
|
|
9
|
+
property :id
|
|
10
|
+
property :domain
|
|
11
|
+
property :name
|
|
12
|
+
property :address
|
|
13
|
+
property :phone
|
|
14
|
+
property :admin_email
|
|
15
|
+
property :order_email
|
|
16
|
+
property :language
|
|
17
|
+
property :currency
|
|
18
|
+
property :currency_symbol
|
|
19
|
+
property :decimal_separator
|
|
20
|
+
property :thousands_separator
|
|
21
|
+
property :decimal_places
|
|
22
|
+
property :dimension_decimal_places
|
|
23
|
+
property :dimension_decimal_token
|
|
24
|
+
property :dimension_thousands_token
|
|
25
|
+
property :currency_symbol_location
|
|
26
|
+
property :is_price_entered_with_tax
|
|
27
|
+
property :active_comparison_modules
|
|
28
|
+
property :weight_units
|
|
29
|
+
property :dimension_units
|
|
30
|
+
property :plan_name
|
|
31
|
+
property :logo
|
|
32
|
+
|
|
33
|
+
def self.info
|
|
34
|
+
get path.build
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Time
|
|
2
|
+
# Timestamp ping to check the system status.
|
|
3
|
+
# https://developer.bigcommerce.com/api/stores/v2/time
|
|
4
|
+
|
|
5
|
+
module Bigcommerce
|
|
6
|
+
class System < Resource
|
|
7
|
+
include Bigcommerce::Request.new 'time'
|
|
8
|
+
|
|
9
|
+
property :time
|
|
10
|
+
|
|
11
|
+
def self.time
|
|
12
|
+
get path.build
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Tax Class
|
|
2
|
+
# Tax classes are used to apply different tax rates for specific types
|
|
3
|
+
# of products and orders.
|
|
4
|
+
# https://developer.bigcommerce.com/api/stores/v2/tax_classes
|
|
5
|
+
|
|
6
|
+
module Bigcommerce
|
|
7
|
+
class TaxClass < Resource
|
|
8
|
+
include Bigcommerce::ResourceActions.new(
|
|
9
|
+
uri: 'tax_classes/%d',
|
|
10
|
+
disable: [:create, :update, :destroy, :destroy_all])
|
|
11
|
+
|
|
12
|
+
property :id
|
|
13
|
+
property :name
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Webhook
|
|
2
|
+
# Register and manage webhooks that connect events from a store to
|
|
3
|
+
# external URLs.
|
|
4
|
+
# https://developer.bigcommerce.com/api/stores/v2/webhooks
|
|
5
|
+
|
|
6
|
+
module Bigcommerce
|
|
7
|
+
class Webhook < Resource
|
|
8
|
+
include Bigcommerce::ResourceActions.new(
|
|
9
|
+
uri: 'hooks/%d',
|
|
10
|
+
disable: [:destroy_all])
|
|
11
|
+
|
|
12
|
+
property :id
|
|
13
|
+
property :client_id
|
|
14
|
+
property :store_hash
|
|
15
|
+
property :scope
|
|
16
|
+
property :destination
|
|
17
|
+
property :headers
|
|
18
|
+
property :is_active
|
|
19
|
+
property :created_at
|
|
20
|
+
property :update_at
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module Bigcommerce
|
|
2
|
+
class SubresourceActions < ResourceActions
|
|
3
|
+
def included(base)
|
|
4
|
+
base.send(:include, Request.new(options[:uri]))
|
|
5
|
+
base.extend(ClassMethods)
|
|
6
|
+
options[:disable_methods] ||= []
|
|
7
|
+
methods = ClassMethods.public_instance_methods & options[:disable_methods]
|
|
8
|
+
methods.each { |name| base.send(:remove_method, name) }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
module ClassMethods
|
|
12
|
+
def all(parent_id, params = {})
|
|
13
|
+
fail ArgumentError if parent_id.nil?
|
|
14
|
+
get path.build(parent_id), params
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def find(parent_id, resource_id)
|
|
18
|
+
fail ArgumentError if [parent_id, resource_id].any?(&:nil?)
|
|
19
|
+
get path.build([parent_id, resource_id])
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def create(parent_id, params)
|
|
23
|
+
fail ArgumentError if parent_id.nil?
|
|
24
|
+
post path.build(parent_id), params
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def update(parent_id, resource_id, params)
|
|
28
|
+
fail ArgumentError if [parent_id, resource_id].any?(&:nil?)
|
|
29
|
+
put path.build([parent_id, resource_id]), params
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def destroy(parent_id, resource_id)
|
|
33
|
+
fail ArgumentError if [parent_id, resource_id].any?(&:nil?)
|
|
34
|
+
delete path.build([parent_id, resource_id])
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def destroy_all(parent_id)
|
|
38
|
+
fail ArgumentError if parent_id.nil?
|
|
39
|
+
delete path.build(parent_id)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
data/lib/bigcommerce/version.rb
CHANGED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Bigcommerce do
|
|
4
|
+
let(:middleware) do
|
|
5
|
+
api.instance_variable_get('@builder').instance_variable_get('@handlers')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'should return a faraday object when configured' do
|
|
9
|
+
Bigcommerce.configure do |config|
|
|
10
|
+
config.url = 'http://foobar.com'
|
|
11
|
+
config.auth = 'legacy'
|
|
12
|
+
config.api_key = '214789175'
|
|
13
|
+
config.username = 'admin'
|
|
14
|
+
end
|
|
15
|
+
expect(Bigcommerce.api).to be_a_kind_of(Faraday::Connection)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '.build_connection' do
|
|
19
|
+
context 'when using legacy' do
|
|
20
|
+
let(:api) do
|
|
21
|
+
Bigcommerce.configure do |config|
|
|
22
|
+
config.url = 'http://foobar.com'
|
|
23
|
+
config.auth = 'legacy'
|
|
24
|
+
config.api_key = '214789175'
|
|
25
|
+
config.username = 'admin'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it 'should have the correct auth middleware' do
|
|
30
|
+
expect(middleware).to include(Faraday::Request::BasicAuthentication)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context 'when not using legacy' do
|
|
35
|
+
let(:api) do
|
|
36
|
+
Bigcommerce.configure do |config|
|
|
37
|
+
config.access_token = 'jksdgkjbhksjdb'
|
|
38
|
+
config.client_id = 'negskjgdjkbg'
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it 'should have the correct auth middleware' do
|
|
43
|
+
expect(middleware).to include(Bigcommerce::Middleware::Auth)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe 'multiple configurations' do
|
|
49
|
+
it 'should use the configuration for the most recently defined' do
|
|
50
|
+
Bigcommerce.configure do |config|
|
|
51
|
+
config.access_token = 'jksdgkjbhksjdb'
|
|
52
|
+
config.client_id = 'negskjgdjkbg'
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
Bigcommerce.configure do |config|
|
|
56
|
+
config.url = 'http://foobar.com'
|
|
57
|
+
config.auth = 'legacy'
|
|
58
|
+
config.api_key = '214789175'
|
|
59
|
+
config.username = 'admin'
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
expect(Bigcommerce.api.instance_variable_get('@builder')
|
|
63
|
+
.instance_variable_get('@handlers'))
|
|
64
|
+
.to include(Faraday::Request::BasicAuthentication)
|
|
65
|
+
|
|
66
|
+
Bigcommerce.configure do |config|
|
|
67
|
+
config.access_token = 'jksdgkjbhksjdb'
|
|
68
|
+
config.client_id = 'negskjgdjkbg'
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
expect(Bigcommerce.api.instance_variable_get('@builder')
|
|
72
|
+
.instance_variable_get('@handlers'))
|
|
73
|
+
.to include(Bigcommerce::Middleware::Auth)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Bigcommerce::ResourceActions do
|
|
4
|
+
before do
|
|
5
|
+
module Bigcommerce
|
|
6
|
+
class DummyClass
|
|
7
|
+
include ResourceActions.new(uri: 'http://foo.bar/%d')
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
@klass = Bigcommerce::DummyClass
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
let(:params) do
|
|
14
|
+
{ page: 1 }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'should have options' do
|
|
18
|
+
mod = Bigcommerce::ResourceActions.new(
|
|
19
|
+
uri: 'http://foo.bar',
|
|
20
|
+
disable: [:find,:all]
|
|
21
|
+
)
|
|
22
|
+
options = {
|
|
23
|
+
uri: 'http://foo.bar',
|
|
24
|
+
disable: [:find,:all]
|
|
25
|
+
}
|
|
26
|
+
expect(mod._options).to eq options
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe '.all' do
|
|
30
|
+
it 'should make a get request to the correct route with query params' do
|
|
31
|
+
expect(@klass).to receive(:get).with('http://foo.bar', page: 1)
|
|
32
|
+
@klass.all(params)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'should make a get request to the correct route' do
|
|
36
|
+
expect(@klass).to receive(:get).with('http://foo.bar', {})
|
|
37
|
+
params.delete(:params)
|
|
38
|
+
@klass.all
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe '.find' do
|
|
43
|
+
it 'should make a get request to the correct route' do
|
|
44
|
+
expect(@klass).to receive(:get).with('http://foo.bar/1')
|
|
45
|
+
@klass.find(1)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe '.create' do
|
|
50
|
+
it 'should make a post request to the correct route with params' do
|
|
51
|
+
expect(@klass).to receive(:post).with('http://foo.bar', page: 1)
|
|
52
|
+
@klass.create(params)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
describe '.update' do
|
|
57
|
+
it 'should make a put request to the correct route with params' do
|
|
58
|
+
expect(@klass).to receive(:put).with('http://foo.bar/1', page: 1)
|
|
59
|
+
@klass.update(1, params)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe '.destroy' do
|
|
64
|
+
it 'should make a delete request to the correct route with params' do
|
|
65
|
+
expect(@klass).to receive(:delete).with('http://foo.bar/1')
|
|
66
|
+
@klass.destroy(1)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe '.destroy_all' do
|
|
71
|
+
it 'should make a delete request to the correct route with params' do
|
|
72
|
+
expect(@klass).to receive(:delete).with('http://foo.bar')
|
|
73
|
+
@klass.destroy_all
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
describe Bigcommerce::SubresourceActions do
|
|
79
|
+
before do
|
|
80
|
+
module Bigcommerce
|
|
81
|
+
class DummyClass
|
|
82
|
+
include SubresourceActions.new(uri: 'http://foo.bar/%d/%d')
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
@klass = Bigcommerce::DummyClass
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
let(:params) do
|
|
89
|
+
{ page: 1 }
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it 'should have options' do
|
|
93
|
+
mod = Bigcommerce::SubresourceActions.new(
|
|
94
|
+
uri: 'http://foo.bar',
|
|
95
|
+
disable: [:find,:all]
|
|
96
|
+
)
|
|
97
|
+
options = {
|
|
98
|
+
uri: 'http://foo.bar',
|
|
99
|
+
disable: [:find,:all]
|
|
100
|
+
}
|
|
101
|
+
expect(mod._options).to eq options
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
describe '.all' do
|
|
105
|
+
it 'should make a get request to the correct route with query params' do
|
|
106
|
+
expect(@klass).to receive(:get).with('http://foo.bar/1', page: 1)
|
|
107
|
+
@klass.all(1, params)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it 'should make a get request to the correct route' do
|
|
111
|
+
expect(@klass).to receive(:get).with('http://foo.bar/1', {})
|
|
112
|
+
params.delete(:params)
|
|
113
|
+
@klass.all(1)
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
describe '.find' do
|
|
118
|
+
it 'should make a get request to the correct route' do
|
|
119
|
+
expect(@klass).to receive(:get).with('http://foo.bar/1/2')
|
|
120
|
+
@klass.find(1,2)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
describe '.create' do
|
|
125
|
+
it 'should make a post request to the correct route with params' do
|
|
126
|
+
expect(@klass).to receive(:post).with('http://foo.bar/1', page: 1)
|
|
127
|
+
@klass.create(1, params)
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
describe '.update' do
|
|
132
|
+
it 'should make a put request to the correct route with params' do
|
|
133
|
+
expect(@klass).to receive(:put).with('http://foo.bar/1/2', page: 1)
|
|
134
|
+
@klass.update(1, 2, params)
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
describe '.destroy' do
|
|
139
|
+
it 'should make a delete request to the correct route with params' do
|
|
140
|
+
expect(@klass).to receive(:delete).with('http://foo.bar/1/2')
|
|
141
|
+
@klass.destroy(1, 2)
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
describe '.destroy_all' do
|
|
146
|
+
it 'should make a delete request to the correct route with params' do
|
|
147
|
+
expect(@klass).to receive(:delete).with('http://foo.bar/1')
|
|
148
|
+
@klass.destroy_all(1)
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|