Sha256: 17c45f9d82e8ec4061de2f70a86430748343b0a7368ccce93803ff4b852d8076

Contents?: true

Size: 1.46 KB

Versions: 23

Compression:

Stored size: 1.46 KB

Contents

require 'cucumber/messages'

module Cucumber
  module Messages
    describe 'messages' do
      let(:outgoing_messages) do
        [
          Envelope.new(
            source: Source.new(data: 'Feature: Hello')
          ),
          Envelope.new(
            attachment: Attachment.new(body: 'Hello', content_encoding: AttachmentContentEncoding::IDENTITY)
          )
        ]
      end

      it "can be serialised over an ndjson stream" do
        io = StringIO.new
        write_outgoing_messages(outgoing_messages, io)

        io.rewind
        incoming_messages = NdjsonToMessageEnumerator.new(io)

        expect(incoming_messages.to_a.map(&:to_h)).to(eq(outgoing_messages.map(&:to_h)))
      end

      it "ignores empty lines" do
        io = StringIO.new
        write_outgoing_messages(outgoing_messages, io)
        io.write("\n\n")

        io.rewind
        incoming_messages = NdjsonToMessageEnumerator.new(io)

        expect(incoming_messages.to_a.map(&:to_h)).to(eq(outgoing_messages.map(&:to_h)))
      end

      it "includes offending line in error message" do
        io = StringIO.new
        io.puts('BLA BLA')

        io.rewind
        incoming_messages = NdjsonToMessageEnumerator.new(io)

        expect { incoming_messages.to_a }.to(raise_error('Not JSON: BLA BLA'))
      end

      def write_outgoing_messages(messages, out)
        messages.each do |message|
          out.write(message.to_json)
          out.write("\n")
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 4 rubygems

Version Path
honeybadger-5.4.0 vendor/bundle/ruby/3.2.0/gems/cucumber-messages-22.0.0/spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-23.0.0 spec/cucumber/messages/ndjson_serialization_spec.rb
honeybadger-5.3.0 vendor/bundle/ruby/3.2.0/gems/cucumber-messages-21.0.1/spec/cucumber/messages/ndjson_serialization_spec.rb
rubypitaya-3.12.5 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-messages-18.0.0/spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-22.0.0 spec/cucumber/messages/ndjson_serialization_spec.rb
rubypitaya-3.12.4 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-messages-18.0.0/spec/cucumber/messages/ndjson_serialization_spec.rb
rubypitaya-3.12.3 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-messages-18.0.0/spec/cucumber/messages/ndjson_serialization_spec.rb
rubypitaya-3.12.2 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-messages-18.0.0/spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-21.0.1 spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-21.0.0 spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-20.0.0 spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-19.1.4 spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-19.1.3 spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-19.1.2 spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-19.1.1 spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-19.1.0 spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-19.0.0 spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-18.0.0 spec/cucumber/messages/ndjson_serialization_spec.rb
phillipug-foodie-0.1.0 .vendor/ruby/3.0.0/gems/cucumber-messages-17.1.1/spec/cucumber/messages/ndjson_serialization_spec.rb
cucumber-messages-17.1.1 spec/cucumber/messages/ndjson_serialization_spec.rb