100 lines
2.2 KiB
Ruby
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
|