Files
growstuff/spec/controllers/order_items_controller_spec.rb
Skud 669b4234f9 Marked failing order_item test as pending
These are failing because we set CanCan to not allow these actions.  We
might want to delete them entirely, actually, but I'm not quite sure
yet, so for now I'm just marking as pending.
2013-05-17 15:36:02 +10:00

165 lines
5.3 KiB
Ruby

require 'spec_helper'
describe OrderItemsController do
login_member(:admin_member)
before(:each) do
@member = FactoryGirl.create(:member)
sign_in @member
@product = FactoryGirl.create(:product)
@order = FactoryGirl.create(:order, :member => @member)
@order_item = FactoryGirl.create(:order_item,
:order => @order,
:product => @product,
:price => @product.min_price
)
end
describe "GET new" do
it "assigns a new order_item as @order_item" do
get :new, {}
assigns(:order_item).should be_a_new(OrderItem)
end
end
describe "GET edit" do
it "assigns the requested order_item as @order_item" do
get :edit, {:id => @order_item.to_param}
assigns(:order_item).should eq(@order_item)
end
end
describe "POST create" do
describe "with valid params" do
it "creates a new OrderItem" do
expect {
post :create, {:order_item => {
:order_id => @order.id,
:product_id => @product.id,
:price => @product.min_price
}}
}.to change(OrderItem, :count).by(1)
end
it "assigns a newly created order_item as @order_item" do
post :create, {:order_item => {
:order_id => @order.id,
:product_id => @product.id,
:price => @product.min_price
}}
assigns(:order_item).should be_a(OrderItem)
assigns(:order_item).should be_persisted
end
it "redirects to the created order_item" do
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 = FactoryGirl.create(:member)
sign_in @member
@product = FactoryGirl.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
end
describe "with invalid params" do
it "assigns a newly created but unsaved order_item as @order_item" do
# Trigger the behavior that occurs when invalid params are submitted
OrderItem.any_instance.stub(:save).and_return(false)
post :create, {:order_item => { "order_id" => "invalid value" }}
assigns(:order_item).should be_a_new(OrderItem)
end
it "re-renders the 'new' template" do
# Trigger the behavior that occurs when invalid params are submitted
OrderItem.any_instance.stub(:save).and_return(false)
post :create, {:order_item => { "order_id" => "invalid value" }}
response.should render_template("new")
end
end
end
describe "PUT update" do
# we've said nobody can update an OrderItem; in future, we might
# want to delete all this code, but I wanted to wait just in case we
# needed it.
before(:each) { pending("we don't permit this (see app/model/ability.rb") }
describe "with valid params" do
it "updates the requested order_item" do
OrderItem.any_instance.should_receive(:update_attributes).with({ "order_id" => "1" })
put :update, {:id => @order_item.to_param, :order_item => { "order_id" => "1" }}
end
it "assigns the requested order_item as @order_item" do
put :update, {:id => @order_item.to_param, :order_item => {
:order_id => @order.id,
:product_id => @product.id,
:price => @product.min_price
}}
assigns(:order_item).should eq(@order_item)
end
it "redirects to the order_item" do
put :update, {:id => @order_item.to_param, :order_item => {
:order_id => @order.id,
:product_id => @product.id,
:price => @product.min_price
}}
response.should redirect_to(@order_item.order)
end
end
describe "with invalid params" do
it "assigns the order_item as @order_item" do
# Trigger the behavior that occurs when invalid params are submitted
OrderItem.any_instance.stub(:save).and_return(false)
put :update, {:id => @order_item.to_param, :order_item => { "order_id" => "invalid value" }}
assigns(:order_item).should eq(@order_item)
end
it "re-renders the 'edit' template" do
# Trigger the behavior that occurs when invalid params are submitted
OrderItem.any_instance.stub(:save).and_return(false)
put :update, {:id => @order_item.to_param, :order_item => { "order_id" => "invalid value" }}
response.should render_template("edit")
end
end
end
describe "DELETE destroy" do
# we've said nobody can update an OrderItem; in future, we might
# want to delete all this code, but I wanted to wait just in case we
# needed it.
before(:each) { pending("we don't permit this (see app/model/ability.rb") }
it "destroys the requested order_item" do
expect {
delete :destroy, {:id => @order_item.to_param}
}.to change(OrderItem, :count).by(-1)
end
it "redirects to the order_items list" do
delete :destroy, {:id => @order_item.to_param}
response.should redirect_to(order_items_url)
end
end
end