Module: Julewire::Core::Testing::Contracts::Component
- Included in:
- Julewire::Core::Testing::Contracts
- Defined in:
- lib/julewire/core/testing/contracts/component.rb
Instance Method Summary collapse
- #assert_julewire_destination_contract(destination, record: build_julewire_contract_record) ⇒ Object
- #assert_julewire_formatter_contract(formatter, record: build_julewire_contract_record) ⇒ Object
- #assert_julewire_processor_contract(processor, draft: build_julewire_contract_draft) ⇒ Object
- #assert_julewire_record_shape_contract(record: build_julewire_shape_contract_record) ⇒ Object
- #build_julewire_contract_draft(fields = {}) ⇒ Object
- #build_julewire_contract_record(fields = {}) ⇒ Object
Instance Method Details
#assert_julewire_destination_contract(destination, record: build_julewire_contract_record) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/julewire/core/testing/contracts/component.rb', line 31 def assert_julewire_destination_contract(destination, record: build_julewire_contract_record) %i[name emit flush close health].each do |method_name| assert_respond_to destination, method_name end assert_nil destination.emit(record) assert destination.flush(timeout: 0) assert destination.close(timeout: 0) assert_kind_of Hash, destination.health destination end |
#assert_julewire_formatter_contract(formatter, record: build_julewire_contract_record) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/julewire/core/testing/contracts/component.rb', line 21 def assert_julewire_formatter_contract(formatter, record: build_julewire_contract_record) assert_respond_to formatter, :call formatted = formatter.call(record) encoded = Julewire::Core::Serialization::JsonEncoder.new.call(formatted) assert_kind_of String, encoded formatted end |
#assert_julewire_processor_contract(processor, draft: build_julewire_contract_draft) ⇒ Object
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/julewire/core/testing/contracts/component.rb', line 10 def assert_julewire_processor_contract(processor, draft: build_julewire_contract_draft) assert_respond_to processor, :call result = processor.call(draft) return :drop if result == :drop result = draft unless result.is_a?(Julewire::Core::Records::Draft) result.to_record result end |
#assert_julewire_record_shape_contract(record: build_julewire_shape_contract_record) ⇒ Object
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/julewire/core/testing/contracts/component.rb', line 43 def assert_julewire_record_shape_contract(record: build_julewire_shape_contract_record) Julewire::Core::Records::Record.validate_normalized!(record) data = record.to_h assert_julewire_record_data_shape!(record, data) assert_julewire_record_formatter_shape!(record) assert_julewire_record_serializer_shape!(record) record end |
#build_julewire_contract_draft(fields = {}) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/julewire/core/testing/contracts/component.rb', line 58 def build_julewire_contract_draft(fields = {}) Julewire::Core::Records::Draft.build( { severity: :info, kind: :point, event: "test.event", source: "test", message: "test message", attributes: { "test.attribute" => "value" }, payload: { value: 1 } }.merge(fields), context: {}, scope: nil, freeze_sections: false ) end |
#build_julewire_contract_record(fields = {}) ⇒ Object
54 55 56 |
# File 'lib/julewire/core/testing/contracts/component.rb', line 54 def build_julewire_contract_record(fields = {}) build_julewire_contract_draft(fields).to_record end |