capistrano/spec/lib/capistrano/dsl/paths_spec.rb

204 lines
4.7 KiB
Ruby

require "spec_helper"
describe Capistrano::DSL::Paths do
let(:dsl) { Class.new.extend Capistrano::DSL }
let(:parent) { Pathname.new("/var/shared") }
let(:paths) { Class.new.extend Capistrano::DSL::Paths }
let(:linked_dirs) { %w{log public/system} }
let(:linked_files) { %w{config/database.yml log/my.log log/access.log} }
before do
dsl.set(:deploy_to, "/var/www")
end
describe '#linked_dirs' do
subject { paths.linked_dirs(parent) }
before do
paths.expects(:fetch).with(:linked_dirs).returns(linked_dirs)
end
it "returns the full pathnames" do
expect(subject).to eq [
Pathname.new("/var/shared/log"),
Pathname.new("/var/shared/public/system"),
]
end
end
describe '#linked_files' do
subject { paths.linked_files(parent) }
before do
paths.expects(:fetch).with(:linked_files).returns(linked_files)
end
it "returns the full pathnames" do
expect(subject).to eq [
Pathname.new("/var/shared/config/database.yml"),
Pathname.new("/var/shared/log/my.log"),
Pathname.new("/var/shared/log/access.log"),
]
end
end
describe '#linked_file_dirs' do
subject { paths.linked_file_dirs(parent) }
before do
paths.expects(:fetch).with(:linked_files).returns(linked_files)
end
it "returns the full paths names of the parent dirs" do
expect(subject).to eq [
Pathname.new("/var/shared/config"),
Pathname.new("/var/shared/log"),
]
end
end
describe '#linked_dir_parents' do
subject { paths.linked_dir_parents(parent) }
before do
paths.expects(:fetch).with(:linked_dirs).returns(linked_dirs)
end
it "returns the full paths names of the parent dirs" do
expect(subject).to eq [
Pathname.new("/var/shared"),
Pathname.new("/var/shared/public"),
]
end
end
describe '#release path' do
subject { dsl.release_path }
context "where no release path has been set" do
before do
dsl.delete(:release_path)
end
it "returns the `current_path` value" do
expect(subject.to_s).to eq "/var/www/current"
end
end
context "where the release path has been set" do
before do
dsl.set(:release_path,"/var/www/release_path")
end
it "returns the set `release_path` value" do
expect(subject.to_s).to eq "/var/www/release_path"
end
end
end
describe '#set_release_path' do
let(:now) { Time.parse("Oct 21 16:29:00 2015") }
subject { dsl.release_path }
context "without a timestamp" do
before do
dsl.env.expects(:timestamp).returns(now)
dsl.set_release_path
end
it "returns the release path with the current env timestamp" do
expect(subject.to_s).to eq "/var/www/releases/20151021162900"
end
end
context "with a timestamp" do
before do
dsl.set_release_path("timestamp")
end
it "returns the release path with the timestamp" do
expect(subject.to_s).to eq "/var/www/releases/timestamp"
end
end
end
describe '#deploy_config_path' do
subject { dsl.deploy_config_path.to_s }
context "when not specified" do
before do
dsl.delete(:deploy_config_path)
end
it 'returns "config/deploy.rb"' do
expect(subject).to eq "config/deploy.rb"
end
end
context "when the variable :deploy_config_path is set" do
before do
dsl.set(:deploy_config_path, "my/custom/path.rb")
end
it "returns the custom path" do
expect(subject).to eq "my/custom/path.rb"
end
end
end
describe '#stage_config_path' do
subject { dsl.stage_config_path.to_s }
context "when not specified" do
before do
dsl.delete(:stage_config_path)
end
it 'returns "config/deploy"' do
expect(subject).to eq "config/deploy"
end
end
context "when the variable :stage_config_path is set" do
before do
dsl.set(:stage_config_path, "my/custom/path")
end
it "returns the custom path" do
expect(subject).to eq "my/custom/path"
end
end
end
describe '#repo_path' do
subject { dsl.repo_path.to_s }
context "when not specified" do
before do
dsl.delete(:repo_path)
end
it 'returns the default #{deploy_to}/repo' do
dsl.set(:deploy_to, "/var/www")
expect(subject).to eq "/var/www/repo"
end
end
context "when the variable :repo_path is set" do
before do
dsl.set(:repo_path, "my/custom/path")
end
it "returns the custom path" do
expect(subject).to eq "my/custom/path"
end
end
end
end