Sha256: 0586102981204bb39b4baedb8737b157b8b19e8b6f1fd0714ee582dc3fd5165c

Contents?: true

Size: 1.83 KB

Versions: 20

Compression:

Stored size: 1.83 KB

Contents

require 'spec_helper'

module Spree
  describe Api::AddressesController, type: :controller do
    render_views

    before do
      stub_authentication!
      @address = create(:address)
      @order = create(:order, bill_address: @address)
    end

    context "with order" do
      before do
        allow_any_instance_of(Order).to receive_messages user: current_api_user
      end

      context "with their own address" do
        it "gets an address" do
          api_get :show, id: @address.id, order_id: @order.number
          expect(json_response['address1']).to eq @address.address1
        end

        it "update replaces the readonly Address associated to the Order" do
          api_put :update, id: @address.id, order_id: @order.number,
                           address: { address1: "123 Test Lane" }
          expect(Order.find(@order.id).bill_address_id).not_to eq @address.id
          expect(json_response['address1']).to eq '123 Test Lane'
        end

        it "receives the errors object if address is invalid" do
          api_put :update, id: @address.id, order_id: @order.number,
                           address: { address1: "" }

          expect(json_response['error']).not_to be_nil
          expect(json_response['errors']).not_to be_nil
          expect(json_response['errors']['address1'].first).to eq "can't be blank"
        end
      end
    end

    context "on an address that does not belong to this order" do
      before do
        @order.bill_address_id = nil
        @order.ship_address = nil
      end

      it "cannot retrieve address information" do
        api_get :show, id: @address.id, order_id: @order.number
        assert_unauthorized!
      end

      it "cannot update address information" do
        api_get :update, id: @address.id, order_id: @order.number
        assert_unauthorized!
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
solidus_api-2.2.2 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.1.1 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.0.3 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-1.4.2 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.0.2 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-1.4.1 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.2.1 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.2.0 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.2.0.rc1 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.2.0.beta1 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.1.0 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.1.0.rc1 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.0.1 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.1.0.beta1 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.0.0 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-1.4.0 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.0.0.rc1 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-1.4.0.rc1 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-2.0.0.beta1 spec/controllers/spree/api/addresses_controller_spec.rb
solidus_api-1.4.0.beta1 spec/controllers/spree/api/addresses_controller_spec.rb