Sha256: d96d123918f3259c91d008023d2780dd481f0b200fccb115fa635bf5a5b44476

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

# encoding: utf-8

describe Informator::Subscriber do

  let(:callback)   { "foo"                                    }
  let(:event)      { double                                   }
  let(:listener)   { double callback => callback, freeze: nil }
  let(:subscriber) { described_class.new listener, callback   }

  describe ".new" do

    subject { subscriber }
    it { is_expected.to be_frozen }

  end # describe .new

  describe "#listener" do

    subject { subscriber.listener }
    it { is_expected.to eql listener }

  end # describe #listener

  describe "#callback" do

    subject { subscriber.callback }
    it { is_expected.to eql callback.to_sym }

  end # describe #callback

  describe "#==" do

    subject { subscriber == other }

    context "with the same listeners and callbacks" do

      let(:other) { described_class.new listener, callback }
      it { is_expected.to eql true }

    end # context

    context "with different listeners" do

      let(:other) { described_class.new double(freeze: nil), callback }
      it { is_expected.to eql false }

    end # context

    context "with different callbacks" do

      let(:other) { described_class.new listener, "other" }
      it { is_expected.to eql false }

    end # context

  end # describe #==

  describe "#notify" do

    subject { subscriber.notify event }

    it "sends event to listener via callback" do
      expect(listener).to receive(callback).with(event)
      subject
    end

    it { is_expected.to eql event }

  end # describe #notify

end # describe Informator::Subscriber

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
informator-1.0.0 spec/unit/informator/subscriber_spec.rb