Class: Messaging::Fixtures::Message

Inherits:
Object
  • Object
show all
Includes:
Initializer, TestBench::Fixture
Defined in:
lib/messaging/fixtures/message.rb

Constant Summary collapse

Error =
Class.new(RuntimeError)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.build(message, source_message = nil, print_title_context: nil, title_context_name: nil, detail_message_class: nil, &test_block) ⇒ Object



53
54
55
# File 'lib/messaging/fixtures/message.rb', line 53

def self.build(message, source_message=nil, print_title_context: nil, title_context_name: nil, detail_message_class: nil, &test_block)
  new(message, source_message, print_title_context, title_context_name, detail_message_class, test_block)
end

Instance Method Details

#assert_attribute_value(name, value) ⇒ Object



139
140
141
142
143
# File 'lib/messaging/fixtures/message.rb', line 139

def assert_attribute_value(name, value)
  context "Attribute Value" do
    assert_attribute_value!(name, value)
  end
end

#assert_attribute_value!(name, value) ⇒ Object



145
146
147
148
149
150
151
152
153
154
# File 'lib/messaging/fixtures/message.rb', line 145

def assert_attribute_value!(name, value)
  attribute_value = message.public_send(name)

  test "#{name}" do
    detail "Attribute Value: #{attribute_value.inspect}"
    detail "Compare Value: #{value.inspect}"

    assert(attribute_value == value)
  end
end

#assert_attribute_values(attributes) ⇒ Object



156
157
158
159
160
161
162
# File 'lib/messaging/fixtures/message.rb', line 156

def assert_attribute_values(attributes)
  context "Attribute Values" do
    attributes.each do |name, value|
      assert_attribute_value!(name, value)
    end
  end
end

#assert_attributes_assigned(attribute_names = nil) ⇒ Object Also known as: assert_all_attributes_assigned



92
93
94
95
96
97
98
99
100
# File 'lib/messaging/fixtures/message.rb', line 92

def assert_attributes_assigned(attribute_names=nil)
  fixture(
    Schema::Fixtures::Assignment,
    message,
    attribute_names,
    print_title_context: false,
    attributes_context_name: "Attributes Assigned"
  )
end

#assert_attributes_copied(attribute_names = nil) ⇒ Object



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/messaging/fixtures/message.rb', line 103

def assert_attributes_copied(attribute_names=nil)
  if source_message.nil?
    test "Source message not nil" do
      detail "Source Message: nil"
      refute(source_message.nil?)
    end
    return
  end

  fixture(
    Schema::Fixtures::Equality,
    source_message,
    message,
    attribute_names,
    ignore_class: true,
    print_title_context: false,
    attributes_context_name: "Attributes Copied: #{source_message_type} => #{message_type}"
  )
end

#assert_followsObject



132
133
134
135
136
137
# File 'lib/messaging/fixtures/message.rb', line 132

def assert_follows
   = message.
   = source_message&.

  fixture(Follows, , )
end

#assert_metadata(&test_block) ⇒ Object



123
124
125
126
127
128
129
130
# File 'lib/messaging/fixtures/message.rb', line 123

def (&test_block)
  fixture(
    ,
    message.,
    source_message&.,
    &test_block
  )
end

#callObject



57
58
59
60
61
62
63
64
65
# File 'lib/messaging/fixtures/message.rb', line 57

def call
  if print_title_context?
    context "#{title_context_name}" do
      call!
    end
  else
    call!
  end
end

#call!Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/messaging/fixtures/message.rb', line 67

def call!
  if test_block.nil?
    raise Error, "Message fixture must be executed with a block"
  end

  if message.nil?
    test "Not nil" do
      detail "Message: nil"
      detail "Remaining message tests are skipped"
      refute(message.nil?)
    end
    return
  end

  if detail_message_class?
    detail "Message Class: #{message_class.name}"
  end

  if not source_message.nil?
    detail "Source Message Class: #{source_message_class.name}"
  end

  test_block.call(self)
end

#detail_message_class?Boolean



44
45
46
47
48
49
# File 'lib/messaging/fixtures/message.rb', line 44

def detail_message_class?
  if @detail_message_class.nil?
    @detail_message_class = true
  end
  @detail_message_class
end

#message_classObject



9
10
11
# File 'lib/messaging/fixtures/message.rb', line 9

def message_class
  message.class
end

#message_typeObject



13
14
15
# File 'lib/messaging/fixtures/message.rb', line 13

def message_type
  message_class.name.split('::').last
end


25
26
27
28
29
30
# File 'lib/messaging/fixtures/message.rb', line 25

def print_title_context?
  if @print_title_context.nil?
    @print_title_context = true
  end
  @print_title_context
end

#source_message_classObject



17
18
19
# File 'lib/messaging/fixtures/message.rb', line 17

def source_message_class
  source_message.class
end

#source_message_typeObject



21
22
23
# File 'lib/messaging/fixtures/message.rb', line 21

def source_message_type
  source_message_class.name.split('::').last
end

#title_context_nameObject



32
33
34
35
36
37
38
39
40
41
42
# File 'lib/messaging/fixtures/message.rb', line 32

def title_context_name
  if @title_context_name.nil?
    @title_context_name = "Message"

    if not message.nil?
      @title_context_name = "#{@title_context_name}: #{message_type}"
    end
  end

  @title_context_name
end