Sha256: 296e0e983a78e90e87fec9ddf009374348206954db06062e1dc1d8cf83a06b87

Contents?: true

Size: 1.35 KB

Versions: 3

Compression:

Stored size: 1.35 KB

Contents

RSpec.describe Message::Command do
  let(:type_code) { Message::Command::TYPE_CODE }

  let(:sender) { SecureRandom.uuid }
  let(:commandee_id) { SecureRandom.uuid }

  let(:args) { { thing: 'puppy' } }
  let(:details) { { name: 'TestCommand', args: args } }
  let(:binary_details) { Marshal.dump(details) }
  let(:string) { type_code + sender + commandee_id + binary_details }

  let(:message) { Message::Command.new(sender, commandee_id, details) }

  describe '.parse' do
    it 'should parse correctly' do
      message = Message::Command.parse string

      expect(message).to be_a Message::Command
      expect(message.sender).to eq sender
      expect(message.commandee_id).to eq commandee_id
      expect(message.details).to eq details
    end
  end

  describe '#name' do
    it 'should return the correct name' do
      expect(message.name).to eq 'TestCommand'
    end
  end

  describe '#to_command' do
    let(:command_instance) { double }
    let(:command_klass) { spy(new: command_instance) }

    it 'should build a Command object' do
      stub_const 'TestCommand', command_klass

      expect(message.to_command).to eq command_instance
      expect(command_klass).to have_received(:new).with args
    end
  end

  describe '#to_s' do
    it 'should serialize correctly' do
      serialized = message.to_s

      expect(serialized).to eq string
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
aggro-0.0.4 spec/lib/aggro/message/command_spec.rb
aggro-0.0.3 spec/lib/aggro/message/command_spec.rb
aggro-0.0.2 spec/lib/aggro/message/command_spec.rb