| 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 |