Sha256: f483609c945d8d339c332ad1651c5a40584974513d76fd8f5f8e9dbda5e9070a

Contents?: true

Size: 1.43 KB

Versions: 4

Compression:

Stored size: 1.43 KB

Contents

# encoding: utf-8
require "spec_helper"

module Uuids::Services
  describe Add do

    # Models dependency injection
    let(:uuids_class) { Uuids::Models::Uuid }

    # Parameters by default
    let!(:record) { create :record }
    let!(:params) do
      {
        "record" => record,
        "value"  => SecureRandom.uuid
      }
    end

    # The service and its listener
    let(:listener) { spy "listener" }
    subject do
      service = described_class.new params
      service.subscribe listener
      service
    end

    describe "#run" do

      context "with valid params" do

        it "adds a uuid to the record" do
          expect { subject.run }.to change { uuids_class.count }.by 1
          expect(uuids_class.last).to correspond_to params
        end

        it "publishes :created" do
          subject.run
          expect(listener).to have_received(:created) do |uuid, messages|
            expect(uuid).to eq uuids_class.last
            expect(messages).to be_present
          end
        end
      end

      context "with a wrong value" do

        before { params.merge! "value" => "wrong" }

        it "doesn't create a uuid" do
          expect { subject.run }.not_to change { uuids_class.all }
        end

        it "publishes :error" do
          subject.run
          expect(listener).to have_received(:error) do |messages|
            expect(messages).to be_present
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
uuids-5.0.0 spec/tests/services/add_spec.rb
uuids-4.1.8 spec/uuids/services/add_spec.rb
uuids-4.1.7 spec/uuids/services/add_spec.rb
uuids-4.1.6 spec/uuids/services/add_spec.rb