Sha256: c87888259dae0f3e75770ccf4e638444a539201b76c03bdd0ca7ff5dd676bdcf

Contents?: true

Size: 1.48 KB

Versions: 3

Compression:

Stored size: 1.48 KB

Contents

require 'spec_helper'
require 'pact_broker/models/webhook'

module PactBroker

  module Models

    describe Webhook do

      let(:consumer) { Pacticipant.new(name: 'Consumer')}
      let(:provider) { Pacticipant.new(name: 'Provider')}
      let(:request) { instance_double(PactBroker::Models::WebhookRequest, execute: nil)}
      subject { Webhook.new(request: request, consumer: consumer, provider: provider,) }

      describe "#validate" do
        let(:errors) { ['errors'] }


        context "when the request is not present" do
          let(:request) { nil }

          it "returns an error message" do
            expect(subject.validate).to include "Missing required attribute 'request'"
          end
        end

        context "when the request is present" do

          it "validates the request" do
            expect(request).to receive(:validate).and_return(errors)
            expect(subject.validate).to eq errors
          end
        end
      end

      describe "description" do
        it "returns a description of the webhook" do
          expect(subject.description).to eq "A webhook for the pact between Consumer and Provider"
        end
      end

      describe "execute" do

        it "executes the request" do
          expect(request).to receive(:execute)
          subject.execute
        end

        it "logs before and after" do
          expect(PactBroker.logger).to receive(:info).with(/Executing/)
          subject.execute
        end

      end
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pact_broker-1.3.0 spec/lib/pact_broker/models/webhook_spec.rb
pact_broker-1.2.0 spec/lib/pact_broker/models/webhook_spec.rb
pact_broker-1.1.0 spec/lib/pact_broker/models/webhook_spec.rb