require "spec_helper" module Omnibus describe ManifestDiff do def manifest_entry_for(name, dv, lv) Omnibus::ManifestEntry.new(name, { described_version: dv, locked_version: lv, locked_source: { git: "git://#{name}@example.com" }, source_type: :git, }) end let(:manifest_one) do m = Omnibus::Manifest.new m.add("foo", manifest_entry_for("foo", "1.2.4", "deadbeef")) m.add("bar", manifest_entry_for("bar", "1.2.4", "deadbeef")) m.add("baz", manifest_entry_for("baz", "1.2.4", "deadbeef")) m end let(:manifest_two) do m = Omnibus::Manifest.new m.add("foo", manifest_entry_for("foo", "1.2.5", "deadbea0")) m.add("baz", manifest_entry_for("baz", "1.2.4", "deadbeef")) m.add("quux", manifest_entry_for("quux", "1.2.4", "deadbeef")) m end subject { described_class.new(manifest_one, manifest_two) } describe "#updated" do it "returns items that existed in the first manifest but have been changed" do expect(subject.updated).to eq([{ name: "foo", old_version: "deadbeef", new_version: "deadbea0", source_type: :git, source: { git: "git://foo@example.com" }, }]) end describe "#removed" do it "returns items that existed in the first manfiest but don't exist in the second" do expect(subject.removed).to eq([{ name: "bar", old_version: "deadbeef", source_type: :git, source: { git: "git://bar@example.com" }, }]) end end describe "#added" do it "returns items that did not exist in the first manifest but do exist in the second" do expect(subject.added).to eq([{ name: "quux", new_version: "deadbeef", source_type: :git, source: { git: "git://quux@example.com" }, }]) end end describe "#empty?" do it "returns false if there have been changes" do expect(subject.empty?).to eq(false) end it "returns true if nothing changed" do diff = Omnibus::ManifestDiff.new(manifest_one, manifest_one) expect(diff.empty?).to eq(true) end end end end end