spec/unit/manifest_diff_spec.rb (65 lines of code) (raw):
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