solidus_api 2.4.2 → 2.5.0.beta1
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.
Potentially problematic release.
This version of solidus_api might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/README.md +1 -5
- data/Rakefile +7 -8
- data/app/controllers/spree/api/line_items_controller.rb +1 -3
- data/app/controllers/spree/api/orders_controller.rb +1 -1
- data/app/controllers/spree/api/products_controller.rb +1 -1
- data/app/controllers/spree/api/shipments_controller.rb +21 -7
- data/app/controllers/spree/api/stock_items_controller.rb +4 -4
- data/app/controllers/spree/api/taxonomies_controller.rb +1 -0
- data/app/controllers/spree/api/taxons_controller.rb +1 -0
- data/app/controllers/spree/api/variants_controller.rb +13 -4
- data/app/helpers/spree/api/api_helpers.rb +0 -9
- data/app/views/spree/api/shared/_pagination.json.jbuilder +1 -1
- data/app/views/spree/api/shipments/estimated_rates.json.jbuilder +4 -0
- data/app/views/spree/api/variants/_big.json.jbuilder +0 -1
- data/app/views/spree/api/variants/_small.json.jbuilder +6 -1
- data/config/locales/en.yml +0 -6
- data/config/routes.rb +3 -7
- data/lib/spree/api/engine.rb +0 -10
- data/lib/spree_api.rb +0 -1
- data/solidus_api.gemspec +1 -2
- data/spec/controllers/spree/api/resource_controller_spec.rb +9 -9
- data/spec/features/checkout_spec.rb +8 -8
- data/spec/requests/api/address_books_spec.rb +1 -3
- data/spec/requests/spree/api/checkouts_controller_spec.rb +4 -5
- data/spec/requests/spree/api/config_controller_spec.rb +2 -2
- data/spec/requests/spree/api/orders_controller_spec.rb +27 -11
- data/spec/requests/spree/api/products_controller_spec.rb +1 -1
- data/spec/requests/spree/api/return_authorizations_controller_spec.rb +13 -13
- data/spec/requests/spree/api/shipments_controller_spec.rb +66 -4
- data/spec/requests/spree/api/stock_items_controller_spec.rb +4 -4
- data/spec/requests/spree/api/stock_locations_controller_spec.rb +7 -7
- data/spec/requests/spree/api/taxonomies_controller_spec.rb +1 -0
- data/spec/requests/spree/api/taxons_controller_spec.rb +3 -2
- data/spec/requests/spree/api/variants_controller_spec.rb +26 -0
- data/spec/spec_helper.rb +13 -23
- metadata +11 -41
- data/Gemfile +0 -5
- data/app/controllers/spree/api/stock_transfers_controller.rb +0 -20
- data/app/controllers/spree/api/transfer_items_controller.rb +0 -42
- data/app/views/spree/api/errors/variant_not_in_stock_transfer.json.jbuilder +0 -1
- data/app/views/spree/api/stock_transfers/receive.json.jbuilder +0 -4
- data/app/views/spree/api/transfer_items/_transfer_item.json.jbuilder +0 -5
- data/app/views/spree/api/transfer_items/show.json.jbuilder +0 -1
- data/spec/requests/spree/api/stock_transfers_controller_spec.rb +0 -97
- data/spec/requests/spree/api/transfer_items_controller_spec.rb +0 -150
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 0f786be0873e048ce3be477e79b3e77fea2edc7b831abddcff8910b353ec8180
         | 
| 4 | 
            +
              data.tar.gz: 78a37e6abfb77386b5fac0c0465c590337bb23d6ba930fc146583e8bad473195
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6ba8a8df12bdb893791882ab855ca8912163ce0c9bf750effe7d1b46ab6ff1b0bff0ee64f787fa317c9047db2db89f4d92fa3ef6c403f4c1e1bb989123770d0c
         | 
| 7 | 
            +
              data.tar.gz: 6c2f3890c3dfa009f3d1607b648d3109b26be3a52209a492b7162ca985633e79ff6ad0b3189c72dbcbf3d5ae62cfefcfabfddfb15b39235a637fca596eb7b765
         | 
    
        data/README.md
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    | @@ -2,15 +2,14 @@ require 'rubygems' | |
| 2 2 | 
             
            require 'rake'
         | 
| 3 3 | 
             
            require 'rake/testtask'
         | 
| 4 4 | 
             
            require 'rspec/core/rake_task'
         | 
| 5 | 
            -
            require 'spree/testing_support/ | 
| 6 | 
            -
            require 'rails/all'
         | 
| 5 | 
            +
            require 'spree/testing_support/dummy_app/rake_tasks'
         | 
| 7 6 |  | 
| 8 7 | 
             
            RSpec::Core::RakeTask.new
         | 
| 9 | 
            -
             | 
| 10 8 | 
             
            task default: :spec
         | 
| 11 9 |  | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
               | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 10 | 
            +
            DummyApp::RakeTasks.new(
         | 
| 11 | 
            +
              gem_root: File.expand_path('../', __FILE__),
         | 
| 12 | 
            +
              lib_name: 'solidus_api'
         | 
| 13 | 
            +
            )
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            task test_app: 'db:reset'
         | 
| @@ -12,9 +12,7 @@ module Spree | |
| 12 12 | 
             
                    @line_item = @order.contents.add(
         | 
| 13 13 | 
             
                      variant,
         | 
| 14 14 | 
             
                      params[:line_item][:quantity] || 1,
         | 
| 15 | 
            -
                       | 
| 16 | 
            -
                        stock_location_quantities: params[:line_item][:stock_location_quantities]
         | 
| 17 | 
            -
                      }.merge({ options: line_item_params[:options].to_h })
         | 
| 15 | 
            +
                      options: line_item_params[:options].to_h
         | 
| 18 16 | 
             
                    )
         | 
| 19 17 |  | 
| 20 18 | 
             
                    if @line_item.errors.empty?
         | 
| @@ -10,7 +10,7 @@ module Spree | |
| 10 10 | 
             
                  skip_before_action :authenticate_user, only: :apply_coupon_code
         | 
| 11 11 |  | 
| 12 12 | 
             
                  before_action :find_order, except: [:create, :mine, :current, :index]
         | 
| 13 | 
            -
                  around_action :lock_order, except: [:create, :mine, :current, :index]
         | 
| 13 | 
            +
                  around_action :lock_order, except: [:create, :mine, :current, :index, :show]
         | 
| 14 14 |  | 
| 15 15 | 
             
                  # Dynamically defines our stores checkout steps to ensure we check authorization on each step.
         | 
| 16 16 | 
             
                  Spree::Order.checkout_steps.keys.each do |step|
         | 
| @@ -2,9 +2,9 @@ module Spree | |
| 2 2 | 
             
              module Api
         | 
| 3 3 | 
             
                class ShipmentsController < Spree::Api::BaseController
         | 
| 4 4 | 
             
                  before_action :find_order_on_create, only: :create
         | 
| 5 | 
            -
                  before_action :find_shipment, only: [:update, :ship, :ready, :add, :remove]
         | 
| 5 | 
            +
                  before_action :find_shipment, only: [:update, :ship, :ready, :add, :remove, :estimated_rates, :select_shipping_method]
         | 
| 6 6 | 
             
                  before_action :load_transfer_params, only: [:transfer_to_location, :transfer_to_shipment]
         | 
| 7 | 
            -
                  around_action :lock_order, except: [:mine]
         | 
| 7 | 
            +
                  around_action :lock_order, except: [:mine, :estimated_rates]
         | 
| 8 8 | 
             
                  before_action :update_shipment, only: [:ship, :ready, :add, :remove]
         | 
| 9 9 |  | 
| 10 10 | 
             
                  def mine
         | 
| @@ -22,6 +22,20 @@ module Spree | |
| 22 22 | 
             
                    end
         | 
| 23 23 | 
             
                  end
         | 
| 24 24 |  | 
| 25 | 
            +
                  def estimated_rates
         | 
| 26 | 
            +
                    authorize! :update, @shipment
         | 
| 27 | 
            +
                    estimator = Spree::Config.stock.estimator_class.new
         | 
| 28 | 
            +
                    @shipping_rates = estimator.shipping_rates(@shipment.to_package, false)
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  def select_shipping_method
         | 
| 32 | 
            +
                    authorize! :update, @shipment
         | 
| 33 | 
            +
                    shipping_method = Spree::ShippingMethod.find(params.require(:shipping_method_id))
         | 
| 34 | 
            +
                    @shipment.select_shipping_method(shipping_method)
         | 
| 35 | 
            +
                    @order.recalculate
         | 
| 36 | 
            +
                    respond_with(@shipment, default_template: :show)
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 25 39 | 
             
                  def create
         | 
| 26 40 | 
             
                    authorize! :create, Shipment
         | 
| 27 41 | 
             
                    quantity = params[:quantity].to_i
         | 
| @@ -70,13 +84,13 @@ module Spree | |
| 70 84 | 
             
                  def remove
         | 
| 71 85 | 
             
                    quantity = params[:quantity].to_i
         | 
| 72 86 |  | 
| 73 | 
            -
                    if @shipment. | 
| 87 | 
            +
                    if @shipment.shipped? || @shipment.canceled?
         | 
| 88 | 
            +
                      @shipment.errors.add(:base, :cannot_remove_items_shipment_state, state: @shipment.state)
         | 
| 89 | 
            +
                      invalid_resource!(@shipment)
         | 
| 90 | 
            +
                    else
         | 
| 74 91 | 
             
                      @shipment.order.contents.remove(variant, quantity, { shipment: @shipment })
         | 
| 75 92 | 
             
                      @shipment.reload if @shipment.persisted?
         | 
| 76 93 | 
             
                      respond_with(@shipment, default_template: :show)
         | 
| 77 | 
            -
                    else
         | 
| 78 | 
            -
                      @shipment.errors.add(:base, :cannot_remove_items_shipment_state, state: @shipment.state)
         | 
| 79 | 
            -
                      invalid_resource!(@shipment)
         | 
| 80 94 | 
             
                    end
         | 
| 81 95 | 
             
                  end
         | 
| 82 96 |  | 
| @@ -97,7 +111,7 @@ module Spree | |
| 97 111 | 
             
                    )
         | 
| 98 112 |  | 
| 99 113 | 
             
                    if fulfilment_changer.run!
         | 
| 100 | 
            -
                      render json: { success: true, message:  | 
| 114 | 
            +
                      render json: { success: true, message: t('spree.shipment_transfer_success') }, status: :accepted
         | 
| 101 115 | 
             
                    else
         | 
| 102 116 | 
             
                      render json: { success: false, message: fulfilment_changer.errors.full_messages.to_sentence }, status: :accepted
         | 
| 103 117 | 
             
                    end
         | 
| @@ -3,7 +3,7 @@ module Spree | |
| 3 3 | 
             
                class StockItemsController < Spree::Api::BaseController
         | 
| 4 4 | 
             
                  before_action :load_stock_location, only: [:index, :show, :create]
         | 
| 5 5 |  | 
| 6 | 
            -
                  rescue_from StockLocation::InvalidMovementError, with: :render_stock_items_error
         | 
| 6 | 
            +
                  rescue_from Spree::StockLocation::InvalidMovementError, with: :render_stock_items_error
         | 
| 7 7 |  | 
| 8 8 | 
             
                  def index
         | 
| 9 9 | 
             
                    @stock_items = paginate(scope.ransack(params[:q]).result)
         | 
| @@ -49,7 +49,7 @@ module Spree | |
| 49 49 |  | 
| 50 50 | 
             
                  def destroy
         | 
| 51 51 | 
             
                    @stock_item = Spree::StockItem.accessible_by(current_ability, :destroy).find(params[:id])
         | 
| 52 | 
            -
                    @stock_item. | 
| 52 | 
            +
                    @stock_item.discard
         | 
| 53 53 | 
             
                    respond_with(@stock_item, status: 204)
         | 
| 54 54 | 
             
                  end
         | 
| 55 55 |  | 
| @@ -75,14 +75,14 @@ module Spree | |
| 75 75 |  | 
| 76 76 | 
             
                  def adjust_stock_item_count_on_hand(count_on_hand_adjustment)
         | 
| 77 77 | 
             
                    if @stock_item.count_on_hand + count_on_hand_adjustment < 0
         | 
| 78 | 
            -
                      raise StockLocation::InvalidMovementError.new( | 
| 78 | 
            +
                      raise StockLocation::InvalidMovementError.new(t('spree.stock_not_below_zero'))
         | 
| 79 79 | 
             
                    end
         | 
| 80 80 | 
             
                    @stock_movement = @stock_location.move(@stock_item.variant, count_on_hand_adjustment, current_api_user)
         | 
| 81 81 | 
             
                    @stock_item = @stock_movement.stock_item
         | 
| 82 82 | 
             
                  end
         | 
| 83 83 |  | 
| 84 84 | 
             
                  def render_stock_items_error
         | 
| 85 | 
            -
                    render json: { error:  | 
| 85 | 
            +
                    render json: { error: t('spree.stock_not_below_zero') }, status: 422
         | 
| 86 86 | 
             
                  end
         | 
| 87 87 | 
             
                end
         | 
| 88 88 | 
             
              end
         | 
| @@ -15,6 +15,7 @@ module Spree | |
| 15 15 |  | 
| 16 16 | 
             
                  # Because JSTree wants parameters in a *slightly* different format
         | 
| 17 17 | 
             
                  def jstree
         | 
| 18 | 
            +
                    Spree::Deprecation.warn("Please don't use `/api/taxonomies/:taxonomy_id/jstree` endpoint. It is deprecated and will be removed in the next future.", caller)
         | 
| 18 19 | 
             
                    show
         | 
| 19 20 | 
             
                  end
         | 
| 20 21 |  | 
| @@ -15,7 +15,7 @@ module Spree | |
| 15 15 |  | 
| 16 16 | 
             
                  def destroy
         | 
| 17 17 | 
             
                    @variant = scope.accessible_by(current_ability, :destroy).find(params[:id])
         | 
| 18 | 
            -
                    @variant. | 
| 18 | 
            +
                    @variant.discard
         | 
| 19 19 | 
             
                    respond_with(@variant, status: 204)
         | 
| 20 20 | 
             
                  end
         | 
| 21 21 |  | 
| @@ -23,7 +23,7 @@ module Spree | |
| 23 23 | 
             
                  # we render on the view so we better update it any time a node is included
         | 
| 24 24 | 
             
                  # or removed from the views.
         | 
| 25 25 | 
             
                  def index
         | 
| 26 | 
            -
                    @variants = scope.includes( | 
| 26 | 
            +
                    @variants = scope.includes(include_list)
         | 
| 27 27 | 
             
                      .ransack(params[:q]).result
         | 
| 28 28 |  | 
| 29 29 | 
             
                    @variants = paginate(@variants)
         | 
| @@ -34,7 +34,7 @@ module Spree | |
| 34 34 | 
             
                  end
         | 
| 35 35 |  | 
| 36 36 | 
             
                  def show
         | 
| 37 | 
            -
                    @variant = scope.includes( | 
| 37 | 
            +
                    @variant = scope.includes(include_list)
         | 
| 38 38 | 
             
                      .find(params[:id])
         | 
| 39 39 | 
             
                    respond_with(@variant)
         | 
| 40 40 | 
             
                  end
         | 
| @@ -66,14 +66,23 @@ module Spree | |
| 66 66 | 
             
                    end
         | 
| 67 67 |  | 
| 68 68 | 
             
                    in_stock_only = ActiveRecord::Type::Boolean.new.cast(params[:in_stock_only])
         | 
| 69 | 
            +
                    suppliable_only = ActiveRecord::Type::Boolean.new.cast(params[:suppliable_only])
         | 
| 69 70 | 
             
                    variants = variants.accessible_by(current_ability, :read)
         | 
| 70 | 
            -
                     | 
| 71 | 
            +
                    if in_stock_only || cannot?(:view_out_of_stock, Spree::Variant)
         | 
| 72 | 
            +
                      variants = variants.in_stock
         | 
| 73 | 
            +
                    elsif suppliable_only
         | 
| 74 | 
            +
                      variants = variants.suppliable
         | 
| 75 | 
            +
                    end
         | 
| 71 76 | 
             
                    variants
         | 
| 72 77 | 
             
                  end
         | 
| 73 78 |  | 
| 74 79 | 
             
                  def variant_params
         | 
| 75 80 | 
             
                    params.require(:variant).permit(permitted_variant_attributes)
         | 
| 76 81 | 
             
                  end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                  def include_list
         | 
| 84 | 
            +
                    [{ option_values: :option_type }, :product, :default_price, :images, { stock_items: :stock_location }]
         | 
| 85 | 
            +
                  end
         | 
| 77 86 | 
             
                end
         | 
| 78 87 | 
             
              end
         | 
| 79 88 | 
             
            end
         | 
| @@ -31,9 +31,6 @@ module Spree | |
| 31 31 | 
             
                    :promotion_attributes,
         | 
| 32 32 | 
             
                    :store_attributes,
         | 
| 33 33 | 
             
                    :store_credit_history_attributes,
         | 
| 34 | 
            -
                    :stock_transfer_attributes,
         | 
| 35 | 
            -
                    :transfer_item_attributes,
         | 
| 36 | 
            -
                    :transfer_item_variant_attributes,
         | 
| 37 34 | 
             
                    :variant_property_attributes
         | 
| 38 35 | 
             
                  ]
         | 
| 39 36 |  | 
| @@ -177,12 +174,6 @@ module Spree | |
| 177 174 | 
             
                    :display_event_date
         | 
| 178 175 | 
             
                  ]
         | 
| 179 176 |  | 
| 180 | 
            -
                  @@stock_transfer_attributes = [:id, :number]
         | 
| 181 | 
            -
             | 
| 182 | 
            -
                  @@transfer_item_attributes = [:id, :expected_quantity, :received_quantity]
         | 
| 183 | 
            -
             | 
| 184 | 
            -
                  @@transfer_item_variant_attributes = []
         | 
| 185 | 
            -
             | 
| 186 177 | 
             
                  def variant_attributes
         | 
| 187 178 | 
             
                    if @current_user_roles && @current_user_roles.include?("admin")
         | 
| 188 179 | 
             
                      @@variant_attributes + [:cost_price]
         | 
| @@ -1,7 +1,6 @@ | |
| 1 1 | 
             
            json.cache! [I18n.locale, Spree::StockLocation.accessible_by(current_ability), variant] do
         | 
| 2 2 | 
             
              json.(variant, *variant_attributes)
         | 
| 3 3 | 
             
              json.partial!("spree/api/variants/small", variant: variant)
         | 
| 4 | 
            -
              json.total_on_hand(variant.total_on_hand)
         | 
| 5 4 | 
             
              json.variant_properties(variant.variant_properties) do |variant_property|
         | 
| 6 5 | 
             
                json.(variant_property, *variant_property_attributes)
         | 
| 7 6 | 
             
              end
         | 
| @@ -5,7 +5,12 @@ json.cache! [I18n.locale, variant] do | |
| 5 5 | 
             
              json.track_inventory(variant.should_track_inventory?)
         | 
| 6 6 | 
             
              json.in_stock(variant.in_stock?)
         | 
| 7 7 | 
             
              json.is_backorderable(variant.is_backorderable?)
         | 
| 8 | 
            -
             | 
| 8 | 
            +
             | 
| 9 | 
            +
              # We can't represent Float::INFINITY in JSON
         | 
| 10 | 
            +
              # Under JSON this woulb be NULL
         | 
| 11 | 
            +
              # Under oj this would error
         | 
| 12 | 
            +
              json.total_on_hand(variant.should_track_inventory? ? variant.total_on_hand : nil)
         | 
| 13 | 
            +
             | 
| 9 14 | 
             
              json.is_destroyed(variant.destroyed?)
         | 
| 10 15 | 
             
              json.option_values(variant.option_values) do |option_value|
         | 
| 11 16 | 
             
                json.(option_value, *option_value_attributes)
         | 
    
        data/config/locales/en.yml
    CHANGED
    
    | @@ -8,12 +8,6 @@ en: | |
| 8 8 | 
             
                  resource_not_found: "The resource you were looking for could not be found."
         | 
| 9 9 | 
             
                  gateway_error: "There was a problem with the payment gateway: %{text}"
         | 
| 10 10 | 
             
                  delete_restriction_error: "Cannot delete record."
         | 
| 11 | 
            -
                  access: "API Access"
         | 
| 12 | 
            -
                  key: "Key"
         | 
| 13 | 
            -
                  clear_key: "Clear key"
         | 
| 14 | 
            -
                  regenerate_key: "Regenerate Key"
         | 
| 15 | 
            -
                  no_key: "No key"
         | 
| 16 | 
            -
                  generate_key: "Generate API key"
         | 
| 17 11 | 
             
                  key_generated: "Key generated"
         | 
| 18 12 | 
             
                  key_cleared: "Key cleared"
         | 
| 19 13 | 
             
                  order:
         | 
    
        data/config/routes.rb
    CHANGED
    
    | @@ -82,6 +82,9 @@ Spree::Core::Engine.routes.draw do | |
| 82 82 | 
             
                  end
         | 
| 83 83 |  | 
| 84 84 | 
             
                  member do
         | 
| 85 | 
            +
                    get :estimated_rates
         | 
| 86 | 
            +
                    put :select_shipping_method
         | 
| 87 | 
            +
             | 
| 85 88 | 
             
                    put :ready
         | 
| 86 89 | 
             
                    put :ship
         | 
| 87 90 | 
             
                    put :add
         | 
| @@ -120,13 +123,6 @@ Spree::Core::Engine.routes.draw do | |
| 120 123 |  | 
| 121 124 | 
             
                resources :stock_items, only: [:index, :update, :destroy]
         | 
| 122 125 |  | 
| 123 | 
            -
                resources :stock_transfers, only: [] do
         | 
| 124 | 
            -
                  member do
         | 
| 125 | 
            -
                    post :receive
         | 
| 126 | 
            -
                  end
         | 
| 127 | 
            -
                  resources :transfer_items, only: [:create, :update, :destroy]
         | 
| 128 | 
            -
                end
         | 
| 129 | 
            -
             | 
| 130 126 | 
             
                resources :stores
         | 
| 131 127 |  | 
| 132 128 | 
             
                resources :store_credit_events, only: [] do
         | 
    
        data/lib/spree/api/engine.rb
    CHANGED
    
    | @@ -9,16 +9,6 @@ module Spree | |
| 9 9 | 
             
                  initializer "spree.api.environment", before: :load_config_initializers do |_app|
         | 
| 10 10 | 
             
                    Spree::Api::Config = Spree::ApiConfiguration.new
         | 
| 11 11 | 
             
                  end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                  initializer "spree.api.versioncake" do |_app|
         | 
| 14 | 
            -
                    VersionCake.setup do |config|
         | 
| 15 | 
            -
                      config.resources do |r|
         | 
| 16 | 
            -
                        r.resource %r{.*}, [], [], [1]
         | 
| 17 | 
            -
                      end
         | 
| 18 | 
            -
                      config.missing_version = 1
         | 
| 19 | 
            -
                      config.extraction_strategy = :http_header
         | 
| 20 | 
            -
                    end
         | 
| 21 | 
            -
                  end
         | 
| 22 12 | 
             
                end
         | 
| 23 13 | 
             
              end
         | 
| 24 14 | 
             
            end
         | 
    
        data/lib/spree_api.rb
    CHANGED
    
    
    
        data/solidus_api.gemspec
    CHANGED
    
    | @@ -21,8 +21,7 @@ Gem::Specification.new do |gem| | |
| 21 21 | 
             
              gem.required_rubygems_version = '>= 1.8.23'
         | 
| 22 22 |  | 
| 23 23 | 
             
              gem.add_dependency 'solidus_core', gem.version
         | 
| 24 | 
            -
              gem.add_dependency 'versioncake', '~> 3.0'
         | 
| 25 24 | 
             
              gem.add_dependency 'responders'
         | 
| 26 25 | 
             
              gem.add_dependency 'jbuilder', '~> 2.6'
         | 
| 27 | 
            -
              gem.add_dependency 'kaminari', ' | 
| 26 | 
            +
              gem.add_dependency 'kaminari-activerecord', '~> 1.1'
         | 
| 28 27 | 
             
            end
         | 
| @@ -51,14 +51,14 @@ module Spree | |
| 51 51 |  | 
| 52 52 | 
             
                  it "returns no widgets" do
         | 
| 53 53 | 
             
                    get :index, params: { token: user.spree_api_key }, as: :json
         | 
| 54 | 
            -
                    expect(response).to  | 
| 54 | 
            +
                    expect(response).to be_successful
         | 
| 55 55 | 
             
                    expect(json_response['widgets']).to be_blank
         | 
| 56 56 | 
             
                  end
         | 
| 57 57 |  | 
| 58 58 | 
             
                  context "it has authorization to read widgets" do
         | 
| 59 59 | 
             
                    it "returns widgets" do
         | 
| 60 60 | 
             
                      get :index, params: { token: admin_user.spree_api_key }, as: :json
         | 
| 61 | 
            -
                      expect(response).to  | 
| 61 | 
            +
                      expect(response).to be_successful
         | 
| 62 62 | 
             
                      expect(json_response['widgets']).to include(hash_including(
         | 
| 63 63 | 
             
                        'name' => 'a widget',
         | 
| 64 64 | 
             
                        'position' => 1
         | 
| @@ -70,26 +70,26 @@ module Spree | |
| 70 70 |  | 
| 71 71 | 
             
                      it "returns both widgets from comma separated string" do
         | 
| 72 72 | 
             
                        get :index, params: { ids: [widget.id, widget2.id].join(','), token: admin_user.spree_api_key }, as: :json
         | 
| 73 | 
            -
                        expect(response).to  | 
| 73 | 
            +
                        expect(response).to be_successful
         | 
| 74 74 | 
             
                        expect(json_response['widgets'].size).to eq 2
         | 
| 75 75 | 
             
                      end
         | 
| 76 76 |  | 
| 77 77 | 
             
                      it "returns both widgets from multiple arguments" do
         | 
| 78 78 | 
             
                        get :index, params: { ids: [widget.id, widget2.id], token: admin_user.spree_api_key }, as: :json
         | 
| 79 | 
            -
                        expect(response).to  | 
| 79 | 
            +
                        expect(response).to be_successful
         | 
| 80 80 | 
             
                        expect(json_response['widgets'].size).to eq 2
         | 
| 81 81 | 
             
                      end
         | 
| 82 82 |  | 
| 83 83 | 
             
                      it "returns one requested widgets" do
         | 
| 84 84 | 
             
                        get :index, params: { ids: widget2.id.to_s, token: admin_user.spree_api_key }, as: :json
         | 
| 85 | 
            -
                        expect(response).to  | 
| 85 | 
            +
                        expect(response).to be_successful
         | 
| 86 86 | 
             
                        expect(json_response['widgets'].size).to eq 1
         | 
| 87 87 | 
             
                        expect(json_response['widgets'][0]['id']).to eq widget2.id
         | 
| 88 88 | 
             
                      end
         | 
| 89 89 |  | 
| 90 90 | 
             
                      it "returns no widgets if empty" do
         | 
| 91 91 | 
             
                        get :index, params: { ids: '', token: admin_user.spree_api_key }, as: :json
         | 
| 92 | 
            -
                        expect(response).to  | 
| 92 | 
            +
                        expect(response).to be_successful
         | 
| 93 93 | 
             
                        expect(json_response['widgets']).to be_empty
         | 
| 94 94 | 
             
                      end
         | 
| 95 95 | 
             
                    end
         | 
| @@ -107,7 +107,7 @@ module Spree | |
| 107 107 | 
             
                  context "it has authorization read widgets" do
         | 
| 108 108 | 
             
                    it "returns widget details" do
         | 
| 109 109 | 
             
                      get :show, params: { id: widget.to_param, token: admin_user.spree_api_key }, as: :json
         | 
| 110 | 
            -
                      expect(response).to  | 
| 110 | 
            +
                      expect(response).to be_successful
         | 
| 111 111 | 
             
                      expect(json_response['name']).to eq 'a widget'
         | 
| 112 112 | 
             
                    end
         | 
| 113 113 | 
             
                  end
         | 
| @@ -122,7 +122,7 @@ module Spree | |
| 122 122 | 
             
                  context "it is allowed to view a new widget" do
         | 
| 123 123 | 
             
                    it "can learn how to create a new widget" do
         | 
| 124 124 | 
             
                      get :new, params: { token: admin_user.spree_api_key }, as: :json
         | 
| 125 | 
            -
                      expect(response).to  | 
| 125 | 
            +
                      expect(response).to be_successful
         | 
| 126 126 | 
             
                      expect(json_response["attributes"]).to eq(['name'])
         | 
| 127 127 | 
             
                    end
         | 
| 128 128 | 
             
                  end
         | 
| @@ -159,7 +159,7 @@ module Spree | |
| 159 159 | 
             
                  context "it is authorized to update widgets" do
         | 
| 160 160 | 
             
                    it "can update a widget" do
         | 
| 161 161 | 
             
                      put :update, params: { id: widget.to_param, widget: { name: "another widget" }, token: admin_user.spree_api_key }, as: :json
         | 
| 162 | 
            -
                      expect(response).to  | 
| 162 | 
            +
                      expect(response).to be_successful
         | 
| 163 163 | 
             
                      expect(json_response['name']).to eq 'another widget'
         | 
| 164 164 | 
             
                      expect(widget.reload.name).to eq 'another widget'
         | 
| 165 165 | 
             
                    end
         | 
| @@ -3,16 +3,16 @@ require 'spec_helper' | |
| 3 3 | 
             
            module Spree
         | 
| 4 4 | 
             
              describe 'Api Feature Specs', type: :request do
         | 
| 5 5 | 
             
                before { Spree::Api::Config[:requires_authentication] = false }
         | 
| 6 | 
            -
                let!(:promotion) {  | 
| 6 | 
            +
                let!(:promotion) { FactoryBot.create(:promotion, :with_order_adjustment, code: 'foo', weighted_order_adjustment_amount: 10) }
         | 
| 7 7 | 
             
                let(:promotion_code) { promotion.codes.first }
         | 
| 8 | 
            -
                let!(:store) {  | 
| 9 | 
            -
                let(:bill_address) {  | 
| 10 | 
            -
                let(:ship_address) {  | 
| 11 | 
            -
                let(:variant_1) {  | 
| 12 | 
            -
                let(:variant_2) {  | 
| 13 | 
            -
                let(:payment_method) {  | 
| 8 | 
            +
                let!(:store) { FactoryBot.create(:store) }
         | 
| 9 | 
            +
                let(:bill_address) { FactoryBot.create(:address) }
         | 
| 10 | 
            +
                let(:ship_address) { FactoryBot.create(:address) }
         | 
| 11 | 
            +
                let(:variant_1) { FactoryBot.create(:variant, price: 100.00) }
         | 
| 12 | 
            +
                let(:variant_2) { FactoryBot.create(:variant, price: 200.00) }
         | 
| 13 | 
            +
                let(:payment_method) { FactoryBot.create(:check_payment_method) }
         | 
| 14 14 | 
             
                let!(:shipping_method) do
         | 
| 15 | 
            -
                   | 
| 15 | 
            +
                  FactoryBot.create(:shipping_method).tap do |shipping_method|
         | 
| 16 16 | 
             
                    shipping_method.zones.first.zone_members.create!(zoneable: ship_address.country)
         | 
| 17 17 | 
             
                    shipping_method.calculator.set_preference(:amount, 10.0)
         | 
| 18 18 | 
             
                  end
         | 
| @@ -119,9 +119,7 @@ module Spree | |
| 119 119 | 
             
                context 'on behalf of address book owner' do
         | 
| 120 120 | 
             
                  context 'with ability' do
         | 
| 121 121 | 
             
                    before do
         | 
| 122 | 
            -
                      Spree:: | 
| 123 | 
            -
                        config.assign_permissions 'Prefect', [Spree::PermissionSets::UserManagement]
         | 
| 124 | 
            -
                      end
         | 
| 122 | 
            +
                      Spree::Config.roles.assign_permissions 'Prefect', [Spree::PermissionSets::UserManagement]
         | 
| 125 123 | 
             
                      create(:user, spree_api_key: 'galleon', spree_roles: [build(:role, name: 'Prefect')])
         | 
| 126 124 | 
             
                    end
         | 
| 127 125 |  | 
| @@ -103,7 +103,7 @@ module Spree | |
| 103 103 |  | 
| 104 104 | 
             
                    # Regression Spec for https://github.com/spree/spree/issues/5389 and https://github.com/spree/spree/issues/5880
         | 
| 105 105 | 
             
                    it "can update addresses but not transition to delivery w/o shipping setup" do
         | 
| 106 | 
            -
                      Spree::ShippingMethod. | 
| 106 | 
            +
                      Spree::ShippingMethod.all.each(&:really_destroy!)
         | 
| 107 107 | 
             
                      put spree.api_checkout_path(order),
         | 
| 108 108 | 
             
                        params: { order_token: order.guest_token, order: {
         | 
| 109 109 | 
             
                          bill_address_attributes: address,
         | 
| @@ -166,7 +166,6 @@ module Spree | |
| 166 166 | 
             
                    end
         | 
| 167 167 | 
             
                  end
         | 
| 168 168 |  | 
| 169 | 
            -
             | 
| 170 169 | 
             
                  it "returns errors when source is required and missing" do
         | 
| 171 170 | 
             
                    order.update_column(:state, "payment")
         | 
| 172 171 | 
             
                    put spree.api_checkout_path(order.to_param), params: { order_token: order.guest_token, order: { payments_attributes: [{ payment_method_id: @payment_method.id }] } }
         | 
| @@ -380,7 +379,7 @@ module Spree | |
| 380 379 | 
             
                    order.update_column(:email, "spree@example.com")
         | 
| 381 380 | 
             
                    put spree.next_api_checkout_path(order), params: { order_token: order.guest_token }
         | 
| 382 381 | 
             
                    expect(response.status).to eq(422)
         | 
| 383 | 
            -
                    expect(json_response["errors"]["base"]).to include( | 
| 382 | 
            +
                    expect(json_response["errors"]["base"]).to include(I18n.t('spree.there_are_no_items_for_this_order'))
         | 
| 384 383 | 
             
                  end
         | 
| 385 384 |  | 
| 386 385 | 
             
                  it "can transition an order to the next state" do
         | 
| @@ -426,7 +425,7 @@ module Spree | |
| 426 425 | 
             
                    it "returns a sensible error when no payment method is specified" do
         | 
| 427 426 | 
             
                      # put :complete, id: order.to_param, order_token: order.token, order: {}
         | 
| 428 427 | 
             
                      subject
         | 
| 429 | 
            -
                      expect(json_response["errors"]["base"]).to include( | 
| 428 | 
            +
                      expect(json_response["errors"]["base"]).to include(I18n.t('spree.no_payment_found'))
         | 
| 430 429 | 
             
                    end
         | 
| 431 430 |  | 
| 432 431 | 
             
                    context "with mismatched expected_total" do
         | 
| @@ -436,7 +435,7 @@ module Spree | |
| 436 435 | 
             
                        # put :complete, id: order.to_param, order_token: order.token, expected_total: order.total + 1
         | 
| 437 436 | 
             
                        subject
         | 
| 438 437 | 
             
                        expect(response.status).to eq(400)
         | 
| 439 | 
            -
                        expect(json_response['errors']['expected_total']).to include( | 
| 438 | 
            +
                        expect(json_response['errors']['expected_total']).to include(I18n.t('spree.api.order.expected_total_mismatch'))
         | 
| 440 439 | 
             
                      end
         | 
| 441 440 | 
             
                    end
         | 
| 442 441 | 
             
                  end
         | 
| @@ -10,13 +10,13 @@ module Spree | |
| 10 10 |  | 
| 11 11 | 
             
                it "returns Spree::Money settings" do
         | 
| 12 12 | 
             
                  get '/api/config/money'
         | 
| 13 | 
            -
                  expect(response).to  | 
| 13 | 
            +
                  expect(response).to be_successful
         | 
| 14 14 | 
             
                  expect(json_response["symbol"]).to eq("$")
         | 
| 15 15 | 
             
                end
         | 
| 16 16 |  | 
| 17 17 | 
             
                it "returns some configuration settings" do
         | 
| 18 18 | 
             
                  get '/api/config'
         | 
| 19 | 
            -
                  expect(response).to  | 
| 19 | 
            +
                  expect(response).to be_successful
         | 
| 20 20 | 
             
                  expect(json_response["default_country_iso"]).to eq("US")
         | 
| 21 21 | 
             
                  expect(json_response["default_country_id"]).to eq(default_country.id)
         | 
| 22 22 | 
             
                end
         |