require "spec_helper" require "pact_broker/pacts/diff" require "pact_broker/pacts/pact_params" module PactBroker module Pacts describe Diff do describe "#process" do let(:pact_content_version_1) do hash = load_json_fixture("consumer-provider.json") hash["interactions"].first["request"]["method"] = "post" hash.to_json end let(:pact_content_version_2) { load_fixture("consumer-provider.json") } let(:pact_content_version_3) { pact_content_version_2 } let(:pact_content_version_4) do hash = load_json_fixture("consumer-provider.json") hash["interactions"].first["request"]["method"] = "delete" hash.to_json end let(:pact_params) do PactBroker::Pacts::PactParams.new( consumer_name: "Consumer", provider_name: "Provider", consumer_version_number: "3" ) end before do TestDataBuilder.new .create_consumer("Consumer") .create_provider("Provider") .create_consumer_version("1") .create_pact(json_content: pact_content_version_1) .create_consumer_version("2") .create_pact(json_content: pact_content_version_2) .create_consumer_version("3") .create_pact(json_content: pact_content_version_3) .create_consumer_version("4") .create_pact(json_content: pact_content_version_4) allow(DateHelper).to receive(:local_date_in_words).and_return("a date") end subject { Diff.new.process(pact_params.merge(base_url: "http://example.org"), nil, raw: true) } context "when a comparison version is specified" do let(:comparison_pact_params) do PactBroker::Pacts::PactParams.new( consumer_name: "Consumer", provider_name: "Provider", consumer_version_number: "4" ).merge(base_url: "http://example.org") end subject { Diff.new.process(pact_params.merge(base_url: "http://example.org"), comparison_pact_params) } it "compares the two pacts" do expect(subject).to include "Pact between Consumer (3) and Provider" expect(subject).to include "Pact between Consumer (4) and Provider" end it "includes a link to the comparison pact", pending: true do expect(subject).to include "comparision-pact-version:" end end context "when there is a previous distinct version" do it "indicates when the previous change was made" do expect(subject).to include "The following changes were made less than a minute ago (a date)" end it "returns the formatted diff" do expect(subject).to include "interactions" expect(subject).to include "post" expect(subject).to include "get" end end context "when there is not a previous distinct version (this needs to be moved into the resource)" do let(:pact_params) do PactBroker::Pacts::PactParams.new( consumer_name: "Consumer", provider_name: "Provider", consumer_version_number: "1" ) end it "returns a message indicating there was no previous distinct version found" do expect(subject).to include("No previous distinct version was found") end end end end end end