Sha256: 9c1781d03733d405c93f63cbbd2cc85b046aae00f987a93cdeba3587c225b92c

Contents?: true

Size: 1.77 KB

Versions: 17

Compression:

Stored size: 1.77 KB

Contents

require 'spec_helper'

module Spree
  describe Api::AddressesController, type: :request do

    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
          get spree.api_order_address_path(@order, @address.id)
          expect(json_response['address1']).to eq @address.address1
        end

        it "update replaces the readonly Address associated to the Order" do
          put spree.api_order_address_path(@order, @address.id), params: { 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
          put spree.api_order_address_path(@order, @address.id), params: { 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
        get spree.api_order_address_path(@order, @address.id)
        assert_unauthorized!
      end

      it "cannot update address information" do
        get spree.api_order_address_path(@order, @address.id)
        assert_unauthorized!
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
solidus_api-2.5.2 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.5.1 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.5.0 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.5.0.rc1 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.5.0.beta2 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.5.0.beta1 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.4.2 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.4.1 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.3.1 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.4.0 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.4.0.rc1 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.4.0.beta1 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.3.0 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.3.0.rc3 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.3.0.rc2 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.3.0.rc1 spec/requests/spree/api/addresses_controller_spec.rb
solidus_api-2.3.0.beta1 spec/requests/spree/api/addresses_controller_spec.rb