[rspec-users] How To Spec Controllers with Finders
s.ross
cwdinfo at gmail.com
Sat Jan 6 01:35:22 EST 2007
What I came up with was:
context "The cart controller" do
controller_name "carts"
integrate_views
setup do
@cart = mock("cart")
@cart.stub!(:new_record).and_return(false)
@cart.stub!(:new).and_return(@cart)
@cart.stub!(:total_price).and_return(35.00)
@cart.stub!(:total_quantity).and_return(1)
@cart.stub!(:empty?).and_return(false)
@line_item = mock("line_item")
LineItem.stub!(:find_by_id).and_return(@line_item)
@line_item.should_receive(:update_attribute).with(:quantity,
"1").and_return(true)
@line_item.stub!(:extension).and_return(25.00)
end
specify "should allow change of quantity" do
post :change_quantity, {:id => 1, :quantity => 1}
response.should_be_success
assigns[:extension_id].should == "extension1"
assigns[:line_item].should_be(@line_item)
controller.should_render_rjs :replace_html, 'cartstatus',
"(1 item, $35.00)"
end
end
but somehow it seems a bit brittle. This is really what should happen
if a user changes quantity, but the mocks seem like they won't flex
or bend easily for further reuse. Any thoughts on this?
On Jan 5, 2007, at 2:14 PM, Courtenay wrote:
> try this:
>
>
> @line_item = mock("line_item")
> LineItem.should_receive(:find_by_id).with(3).and_return(@line_item)
> @line_item.should_receive(:update_attribute).with(:quantity, 1)
>
> get :change_quantity, :id => 3, :quantity => 1
>
>
> On 1/5/07, s.ross <cwdinfo at gmail.com> wrote:
>> Given this code (which renders rjs), I'm faced with the fixture-
>> driven way of spec-ing or mocking. How the heck to you mock this so
>> the code at line (2) and (4) work right? I'm still struggling with
>> mocks but it seems like this can be done. Forgive the naivety of this
>> question.
>>
>> 1. def change_quantity
>> 2. @line_item = LineItem.find_by_id(params[:id])
>> 3. unless @line_item.nil?
>> 4. @line_item.update_attribute(:quantity, params[:quantity])
>> 5. @extension_id = "extension#{params[:id]}"
>> 6. end
>> 7. end
>>
>> Thanks
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
More information about the rspec-users
mailing list