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 84 85
|
describe FactoryBot::Definition do
it "delegates :declare_attribute to declarations" do
definition = described_class.new(:name)
expect(definition).to delegate(:declare_attribute).to(:declarations)
end
it "creates a new attribute list with the name passed when given a name" do
name = "great name"
allow(FactoryBot::DeclarationList).to receive(:new)
FactoryBot::Definition.new(name)
expect(FactoryBot::DeclarationList).to have_received(:new).with(name)
end
it "has a name" do
name = "factory name"
definition = described_class.new(name)
expect(definition.name).to eq(name)
end
it "has an overridable declaration list" do
list = double("declaration list", overridable: true)
allow(FactoryBot::DeclarationList).to receive(:new).and_return list
definition = described_class.new(:name)
expect(definition.overridable).to eq definition
expect(list).to have_received(:overridable).once
end
it "maintains a list of traits" do
trait1 = double(:trait)
trait2 = double(:trait)
definition = described_class.new(:name)
definition.define_trait(trait1)
definition.define_trait(trait2)
expect(definition.defined_traits).to include(trait1, trait2)
end
it "adds only unique traits" do
trait1 = double(:trait)
definition = described_class.new(:name)
definition.define_trait(trait1)
definition.define_trait(trait1)
expect(definition.defined_traits.size).to eq 1
end
it "maintains a list of callbacks" do
callback1 = "callback1"
callback2 = "callback2"
definition = described_class.new(:name)
definition.add_callback(callback1)
definition.add_callback(callback2)
expect(definition.callbacks).to eq [callback1, callback2]
end
it "doesn't expose a separate create strategy when none is specified" do
definition = described_class.new(:name)
expect(definition.to_create).to be_nil
end
it "exposes a non-default create strategy when one is provided by the user" do
definition = described_class.new(:name)
block = proc {}
definition.to_create(&block)
expect(definition.to_create).to eq block
end
it "maintains a list of enum fields" do
definition = described_class.new(:name)
enum_field = double("enum_field")
definition.register_enum(enum_field)
expect(definition.registered_enums).to include(enum_field)
end
end
|