1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
require 'spec_helper'
describe "Faking Factories" do
include Bogus::MockingDSL
class ExampleFactory
def initialize(model_class)
@model_class = model_class
end
def create(y)
@model_class.new(1, y)
end
end
class ExampleModel1
def initialize(x, y)
end
end
it "allows spying on factory classes" do
model_class = fake(:example_model, as: :class) { ExampleModel1 }
factory = ExampleFactory.new(model_class)
factory.create(2)
expect(model_class).to have_received.new(1, 2)
end
class ExampleModel2
def initialize(x, y, z)
end
end
it "retains the arity safety" do
model_class = fake(:example_model, as: :class) { ExampleModel2 }
factory = ExampleFactory.new(model_class)
expect {
factory.create(2)
}.to raise_error(ArgumentError)
end
class ExampleModel3
end
it "works with classes with no explicit constructor" do
model_class = fake(:example_model, as: :class) { ExampleModel3 }
model = model_class.new
expect(model_class).to have_received.new
end
class ExampleModel4
def initialize(y)
end
def foo(x)
end
end
it "allows creating the model instances as usual" do
model = fake(:example_model) { ExampleModel4 }
model.foo(1)
expect(model).to have_received.foo(1)
end
module ExampleModel5
def self.foo(x)
end
end
it "allows creating fakes of modules as usual" do
model = fake(:example_model, as: :class) { ExampleModel5 }
model.foo(1)
expect(model).to have_received.foo(1)
end
end
|