Blob of rspec_on_rails/spec/rails/mocks/stub_model_spec.rb (raw blob data)

1 require File.dirname(__FILE__) + '/../../spec_helper'
2 require File.dirname(__FILE__) + '/ar_classes'
3
4 describe "stub_model" do
5 describe "defaults" do
6 it "should have an id" do
7 stub_model(MockableModel).id.should be > 0
8 end
9
10 it "should say it is not a new record" do
11 stub_model(MockableModel).should_not be_new_record
12 end
13 end
14
15 it "should accept a stub id" do
16 stub_model(MockableModel, :id => 37).id.should == 37
17 end
18
19 it "should say it is a new record when id is set to nil" do
20 stub_model(MockableModel, :id => nil).should be_new_record
21 end
22
23 it "should accept any arbitrary stub" do
24 stub_model(MockableModel, :foo => "bar").foo.should == "bar"
25 end
26
27 it "should accept a stub for save" do
28 stub_model(MockableModel, :save => false).save.should be(false)
29 end
30
31 describe "#as_new_record" do
32 it "should say it is a new record" do
33 stub_model(MockableModel).as_new_record.should be_new_record
34 end
35
36 it "should have a nil id" do
37 stub_model(MockableModel).as_new_record.id.should be(nil)
38 end
39 end
40
41 it "should raise when hitting the db" do
42 lambda do
43 stub_model(MockableModel).save
44 end.should raise_error(Spec::Rails::IllegalDataAccessException, /stubbed models are not allowed to access the database/)
45 end
46
47 it "should increment the id" do
48 first = stub_model(MockableModel)
49 second = stub_model(MockableModel)
50 second.id.should == (first.id + 1)
51 end
52
53 end
54
55 describe "stub_model as association" do
56 before(:each) do
57 @real = AssociatedModel.create!
58 @stub_model = stub_model(MockableModel)
59 @real.mockable_model = @stub_model
60 end
61
62 it "should pass associated_model == mock" do
63 @stub_model.should == @real.mockable_model
64 end
65
66 it "should pass mock == associated_model" do
67 @real.mockable_model.should == @stub_model
68 end
69 end
70
71 describe "stub_model with a block" do
72 it "should yield the model" do
73 model = stub_model(MockableModel) do |block_arg|
74 @block_arg = block_arg
75 end
76 model.should be(@block_arg)
77 end
78 end