diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index d394019..2763afd 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -1,9 +1,9 @@ -# quickpay_user GET /users/:id/quickpay(.:format) users#quickpay -# edit_dagschotel_user GET /users/:id/dagschotel/edit(.:format) users#edit_dagschotel -# edit_user GET /users/:id/edit(.:format) users#edit -# user GET /users/:id(.:format) users#show -# PATCH /users/:id(.:format) users#update -# PUT /users/:id(.:format) users#update +# quickpay_user GET /users/:id/quickpay(.:format) users#quickpay +# edit_dagschotel_user GET /users/:id/dagschotel/edit(.:format) users#edit_dagschotel +# edit_user GET /users/:id/edit(.:format) users#edit +# user GET /users/:id(.:format) users#show +# PATCH /users/:id(.:format) users#update +# PUT /users/:id(.:format) users#update # describe UsersController, type: :controller do @@ -22,10 +22,13 @@ describe UsersController, type: :controller do end it 'should be successful' do - expect(response).to render_template(:show) expect(response).to have_http_status(200) end + it 'should render the user' do + expect(response).to render_template(:show) + end + it 'should load the correct user' do expect(assigns(:user)).to eq(@user) end @@ -40,6 +43,10 @@ describe UsersController, type: :controller do get :edit, id: @user end + it 'should be successful' do + expect(response).to have_http_status(200) + end + it 'should render the form' do expect(response).to render_template(:edit) end @@ -79,10 +86,73 @@ describe UsersController, type: :controller do ##################### describe 'GET edit_dagschotel' do + it 'should be successful' do + expect(response).to have_http_status(200) + end + it 'should render the page' do get :edit_dagschotel, id: @user expect(response).to render_template(:edit_dagschotel) - expect(response).to have_http_status(200) + end + end + + ############## + # QUICKPAY # + ############## + + describe 'GET quickpay' do + describe 'successful' do + before :each do + @dagschotel = create :product, stock: 20 + @user.update_attribute(:dagschotel, @dagschotel) + end + + it 'should be successful' do + expect(response).to have_http_status(200) + end + + it 'should make an order' do + expect{ + get :quickpay, id: @user + }.to change{ @user.reload.orders_count }.by(1) + end + + describe 'order' do + before :each do + get :quickpay, id: @user + @order = @user.orders.last + end + + it 'should contain 1 orderitem' do + expect(@order.order_items.size).to eq 1 + end + + it 'should have an orderitem with count 1' do + expect(@order.order_items.first.count).to eq 1 + end + + it 'should contain an orderitem for @dagschotel' do + expect(@order.order_items.first.product).to eq @dagschotel + end + end + end + + describe 'failed' do + before :each do + @dagschotel = create :product, stock: 0 + @user.update_attribute(:dagschotel, @dagschotel) + end + + it 'should fail' do + get :quickpay, id: @user + expect(response).to have_http_status(302) + end + + it 'should not make an order' do + expect{ + get :quickpay, id: @user + }.to_not change{ @user.reload.orders_count } + end end end end