vagrant/test/unit/plugins/pushes/heroku/config_test.rb

100 lines
2.2 KiB
Ruby

require_relative "../../../base"
require Vagrant.source_root.join("plugins/pushes/heroku/config")
describe VagrantPlugins::HerokuPush::Config do
include_context "unit"
before(:all) do
I18n.load_path << Vagrant.source_root.join("plugins/pushes/heroku/locales/en.yml")
I18n.reload!
end
subject { described_class.new }
let(:machine) { double("machine") }
describe "#app" do
it "defaults to nil" do
subject.finalize!
expect(subject.app).to be(nil)
end
end
describe "#dir" do
it "defaults to ." do
subject.finalize!
expect(subject.dir).to eq(".")
end
end
describe "#git_bin" do
it "defaults to git" do
subject.finalize!
expect(subject.git_bin).to eq("git")
end
end
describe "#remote" do
it "defaults to git" do
subject.finalize!
expect(subject.remote).to eq("heroku")
end
end
describe "#validate" do
before do
allow(machine).to receive(:env)
.and_return(double("env",
root_path: "",
))
subject.app = "bacon"
subject.dir = "."
subject.git_bin = "git"
subject.remote = "heroku"
end
let(:result) { subject.validate(machine) }
let(:errors) { result["Heroku push"] }
context "when the app is missing" do
it "does not return an error" do
subject.app = ""
subject.finalize!
expect(errors).to be_empty
end
end
context "when the git_bin is missing" do
it "returns an error" do
subject.git_bin = ""
subject.finalize!
expect(errors).to include(I18n.t("heroku_push.errors.missing_attribute",
attribute: "git_bin",
))
end
end
context "when the remote is missing" do
it "returns an error" do
subject.remote = ""
subject.finalize!
expect(errors).to include(I18n.t("heroku_push.errors.missing_attribute",
attribute: "remote",
))
end
end
context "when the dir is missing" do
it "returns an error" do
subject.dir = ""
subject.finalize!
expect(errors).to include(I18n.t("heroku_push.errors.missing_attribute",
attribute: "dir",
))
end
end
end
end