spec/unit/package_spec.rb (63 lines of code) (raw):

require "spec_helper" module Omnibus describe Package do let(:path) { windows? ? "C:/path/to/files/thing.deb" : "/path/to/files/thing.deb" } subject { described_class.new(path) } describe ".initialize" do it "sets the path" do expect(subject.instance_variables).to include(:@path) end end describe "#name" do it "returns the basename of the file" do expect(subject.name).to eq("thing.deb") end end describe "#md5" do let(:md5) { "abcdef123456" } before { allow(subject).to receive(:digest).with(path, :md5).and_return(md5) } it "returns the md5 of the package at the path" do expect(subject.md5).to eq(md5) end end describe "#sha256" do let(:sha256) { "abcdef123456" } before { allow(subject).to receive(:digest).with(path, :sha256).and_return(sha256) } it "returns the sha256 of the package at the path" do expect(subject.sha256).to eq(sha256) end end describe "#sha512" do let(:sha512) { "abcdef123456" } before { allow(subject).to receive(:digest).with(path, :sha512).and_return(sha512) } it "returns the sha512 of the package at the path" do expect(subject.sha512).to eq(sha512) end end describe "#content" do context "when the file exists" do let(:content) { "BINARY" } before { allow(IO).to receive(:read).with(path).and_return(content) } it "reads the file" do expect(subject.content).to eq(content) end end context "when the file does not exist" do before { allow(IO).to receive(:read).and_raise(Errno::ENOENT) } it "raises an exception" do expect { subject.content }.to raise_error(NoPackageFile) end end end describe "#metadata" do let(:content) { '{ "platform": "ubuntu" }' } before { allow(IO).to receive(:read).and_return(content) } it "returns a Metadata object" do expect(subject.metadata).to be_a(Metadata) end it "reads the information in the file" do expect(subject.metadata[:platform]).to eq("ubuntu") end end end end