mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-02-01 13:10:58 -05:00
We deprecated controller and view specs on the grounds that they were brittle, and were a poorer measure of user experience than feature specs. However, feature specs have their own problems: they're much slower to run, and flakier (see #901). We also ran into a few cases where feature specs erroneously passed because they were checking for the presence of a string that occurred in the error page! Hence, we're cautiously un-deprecating controller and view specs. Fixes #1132
57 lines
1.5 KiB
Ruby
57 lines
1.5 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe OrderItemsController do
|
|
login_member(:admin_member)
|
|
|
|
before(:each) do
|
|
@member = FactoryBot.create(:member)
|
|
sign_in @member
|
|
@product = FactoryBot.create(:product)
|
|
@order = FactoryBot.create(:order, member: @member)
|
|
@order_item = FactoryBot.create(:order_item,
|
|
order: @order,
|
|
product: @product,
|
|
price: @product.min_price)
|
|
end
|
|
|
|
describe "POST create" do
|
|
it "redirects to order" do
|
|
@order = FactoryBot.create(:order, member: @member)
|
|
post :create, order_item: {
|
|
order_id: @order.id,
|
|
product_id: @product.id,
|
|
price: @product.min_price
|
|
}
|
|
response.should redirect_to(OrderItem.last.order)
|
|
end
|
|
|
|
it 'creates an order for you' do
|
|
@member = FactoryBot.create(:member)
|
|
sign_in @member
|
|
@product = FactoryBot.create(:product)
|
|
expect {
|
|
post :create, order_item: {
|
|
product_id: @product.id,
|
|
price: @product.min_price
|
|
}
|
|
}.to change(Order, :count).by(1)
|
|
OrderItem.last.order.should be_an_instance_of Order
|
|
end
|
|
|
|
describe "with non-int price" do
|
|
it "converts 3.33 to 333 cents" do
|
|
@order = FactoryBot.create(:order, member: @member)
|
|
@product = FactoryBot.create(:product, min_price: 1)
|
|
expect {
|
|
post :create, order_item: {
|
|
order_id: @order.id,
|
|
product_id: @product.id,
|
|
price: 3.33
|
|
}
|
|
}.to change(OrderItem, :count).by(1)
|
|
OrderItem.last.price.should eq 333
|
|
end
|
|
end
|
|
end
|
|
end
|