File: declaration_list_spec.rb

package info (click to toggle)
ruby-factory-bot 6.5.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,372 kB
  • sloc: ruby: 7,827; makefile: 6
file content (90 lines) | stat: -rw-r--r-- 3,778 bytes parent folder | download | duplicates (2)
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
86
87
88
89
90
describe FactoryBot::DeclarationList, "#attributes" do
  it "returns an AttributeList" do
    declaration_list = FactoryBot::DeclarationList.new

    expect(declaration_list.attributes).to be_a(FactoryBot::AttributeList)
  end

  it "defines each attribute on the attribute list" do
    attribute1 = double("attribute 1")
    attribute2 = double("attribute 2")
    attribute3 = double("attribute 3")
    declaration1 = double("declaration 1", to_attributes: [attribute1, attribute2])
    declaration2 = double("declaration2", to_attributes: [attribute3])
    attribute_list = double("attribute list", define_attribute: true)
    declaration_list = FactoryBot::DeclarationList.new

    allow(FactoryBot::AttributeList).to receive(:new).and_return attribute_list

    declaration_list.declare_attribute(declaration1)
    declaration_list.declare_attribute(declaration2)

    declaration_list.attributes

    expect(attribute_list).to have_received(:define_attribute).with(attribute1)
    expect(attribute_list).to have_received(:define_attribute).with(attribute2)
    expect(attribute_list).to have_received(:define_attribute).with(attribute3)
  end
end

describe FactoryBot::DeclarationList, "#declare_attribute" do
  it "adds the declaration to the list when not overridable" do
    declaration1 = double("declaration", name: "declaration 1")
    declaration2 = double("declaration", name: "declaration 2")
    declaration_list = FactoryBot::DeclarationList.new

    declaration_list.declare_attribute(declaration1)
    expect(declaration_list.to_a).to eq [declaration1]

    declaration_list.declare_attribute(declaration2)
    expect(declaration_list.to_a).to eq [declaration1, declaration2]
  end

  it "adds the declaration to the list when overridable" do
    declaration1 = double("declaration", name: "declaration 1")
    declaration2 = double("declaration", name: "declaration 2")
    declaration_list = FactoryBot::DeclarationList.new
    declaration_list.overridable

    declaration_list.declare_attribute(declaration1)
    expect(declaration_list.to_a).to eq [declaration1]

    declaration_list.declare_attribute(declaration2)
    expect(declaration_list.to_a).to eq [declaration1, declaration2]
  end

  it "deletes declarations with the same name when overridable" do
    declaration1 = double("declaration", name: "declaration 1")
    declaration2 = double("declaration", name: "declaration 2")
    declaration_with_same_name = double("declaration", name: "declaration 1")
    declaration_list = FactoryBot::DeclarationList.new
    declaration_list.overridable

    declaration_list.declare_attribute(declaration1)
    expect(declaration_list.to_a).to eq [declaration1]

    declaration_list.declare_attribute(declaration2)
    expect(declaration_list.to_a).to eq [declaration1, declaration2]

    declaration_list.declare_attribute(declaration_with_same_name)
    expect(declaration_list.to_a).to eq [declaration2, declaration_with_same_name]
  end

  it "appends declarations with the same name when NOT overridable" do
    declaration1 = double("declaration", name: "declaration 1")
    declaration2 = double("declaration", name: "declaration 2")
    declaration_with_same_name = double("declaration", name: "declaration 1")

    # DeclarationList's `@overridable` attr is set to false by default
    declaration_list = FactoryBot::DeclarationList.new

    declaration_list.declare_attribute(declaration1)
    expect(declaration_list.to_a).to eq [declaration1]

    declaration_list.declare_attribute(declaration2)
    expect(declaration_list.to_a).to eq [declaration1, declaration2]

    declaration_list.declare_attribute(declaration_with_same_name)
    expect(declaration_list.to_a).to eq [declaration1, declaration2, declaration_with_same_name]
  end
end