Sha256: 36f318dd6bca081cd16c75eed08db5c0be842c73aa469e2b5b282a3f3b3e9893

Contents?: true

Size: 1.79 KB

Versions: 3

Compression:

Stored size: 1.79 KB

Contents

module ShoppyCartus
  describe OrdersController, type: :controller do
    routes { ShoppyCartus::Engine.routes }

    let(:user) { create(:user) }
    let!(:order) { create(:shoppy_cartus_order, user: user, state: 'completed') }

    before { allow(controller).to receive(:current_user).and_return(user) }

    describe 'GET #index' do
      context 'successful load' do
        before do
          get :index, session: { order_id: order.id }
        end

        it 'assigns @items' do
          expect(assigns(:orders)).not_to be_nil
        end

        it 'renders :index template' do
          expect(response).to render_template(:index)
        end

        it 'has a 200 status code' do
          expect(response.status).to eq(200)
        end
      end

      context 'select needful orders' do
        it 'selects user orders' do
          expect(controller).to receive_message_chain(:current_user, :orders, :executed)
          get :index, session: { order_id: order.id }
        end
      end
    end

    describe 'GET #show' do
      before { get :show, params: { id: order.id }, session: { order_id: order.id, user_id: user.id } }

      it 'assigns @items' do
        expect(assigns(:_order)).not_to be_nil
      end

      it 'renders :index template' do
        expect(response).to render_template(:show)
      end

      it 'has a 200 status code' do
        expect(response.status).to eq(200)
      end

      context 'calling needed methods' do
        after { get :show, params: { id: order.id }, session: { order_id: order.id } }
        it 'finds needed order' do
          expect(Order).to receive(:find_by).with(id: order.id.to_s).and_call_original
        end

        it 'calls chain methods' do
          expect(Order).to receive_message_chain(:find_by, :decorate)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
shoppy_cartus-0.1.2 spec/controllers/shoppy_cartus/orders_controller_spec.rb
shoppy_cartus-0.1.1 spec/controllers/shoppy_cartus/orders_controller_spec.rb
shoppy_cartus-0.1.0 spec/controllers/shoppy_cartus/orders_controller_spec.rb