spec/unit/loader_spec.rb in a9n-0.6.2 vs spec/unit/loader_spec.rb in a9n-0.7.0
- old
+ new
@@ -1,197 +1,197 @@
RSpec.describe A9n::Loader do
- let(:scope) { A9n::Scope.new("configuration") }
- let(:env) { "test" }
- let(:root) { File.expand_path("../../../test_app", __FILE__) }
- let(:file_path) { File.join(root, "config/configuration.yml") }
+ let(:scope) { A9n::Scope.new('configuration') }
+ let(:env) { 'test' }
+ let(:root) { File.expand_path('../../test_app', __dir__) }
+ let(:file_path) { File.join(root, 'config/configuration.yml') }
subject { described_class.new(file_path, scope, env) }
- describe "#intialize" do
+ describe '#intialize' do
it { expect(subject.scope).to eq(scope) }
it { expect(subject.env).to eq(env) }
it { expect(subject.local_file).to eq(file_path) }
it { expect(subject.example_file).to eq("#{file_path}.example") }
end
- describe "#load" do
+ describe '#load' do
let(:example_config) do
- { app_url: "http://127.0.0.1:3000", api_key: "example1234" }
+ { app_url: 'http://127.0.0.1:3000', api_key: 'example1234' }
end
let(:local_config) do
- { app_host: "127.0.0.1:3000", api_key: "local1234" }
+ { app_host: '127.0.0.1:3000', api_key: 'local1234' }
end
- let(:env) { "tropical" }
+ let(:env) { 'tropical' }
let(:config) { subject.get }
- context "when no configuration file exists" do
+ context 'when no configuration file exists' do
before do
expect(described_class).to receive(:load_yml).with(subject.example_file, scope, env).and_return(nil)
expect(described_class).to receive(:load_yml).with(subject.local_file, scope, env).and_return(nil)
end
- it "raises expection" do
+ it 'raises expection' do
expect {
subject.load
}.to raise_error(A9n::MissingConfigurationDataError)
end
end
- context "when only example configuration file exists" do
+ context 'when only example configuration file exists' do
before do
expect(described_class).to receive(:load_yml).with(subject.example_file, scope, env).and_return(example_config)
expect(described_class).to receive(:load_yml).with(subject.local_file, scope, env).and_return(nil)
subject.load
end
- it { expect(config.app_url).to eq("http://127.0.0.1:3000") }
- it { expect(config.api_key).to eq("example1234") }
+ it { expect(config.app_url).to eq('http://127.0.0.1:3000') }
+ it { expect(config.api_key).to eq('example1234') }
it do
expect { config.app_host }.to raise_error(A9n::NoSuchConfigurationVariableError)
end
end
- context "when only local configuration file exists" do
+ context 'when only local configuration file exists' do
before do
expect(described_class).to receive(:load_yml).with(subject.example_file, scope, env).and_return(nil)
expect(described_class).to receive(:load_yml).with(subject.local_file, scope, env).and_return(local_config)
subject.load
end
- it { expect(config.app_host).to eq("127.0.0.1:3000") }
- it { expect(config.api_key).to eq("local1234") }
+ it { expect(config.app_host).to eq('127.0.0.1:3000') }
+ it { expect(config.api_key).to eq('local1234') }
it do
expect { config.app_url }.to raise_error(A9n::NoSuchConfigurationVariableError)
end
end
- context "when both local and base configuration file exists without defaults" do
- context "with same data" do
+ context 'when both local and base configuration file exists without defaults' do
+ context 'with same data' do
before do
expect(described_class).to receive(:load_yml).with(subject.example_file, scope, env).and_return(example_config)
expect(described_class).to receive(:load_yml).with(subject.local_file, scope, env).and_return(example_config)
subject.load
end
- it { expect(config.app_url).to eq("http://127.0.0.1:3000") }
- it { expect(config.api_key).to eq("example1234") }
+ it { expect(config.app_url).to eq('http://127.0.0.1:3000') }
+ it { expect(config.api_key).to eq('example1234') }
it do
expect { config.app_host }.to raise_error(A9n::NoSuchConfigurationVariableError)
end
end
- context "with different data" do
+ context 'with different data' do
before do
expect(described_class).to receive(:load_yml).with(subject.example_file, scope, env).and_return(example_config)
expect(described_class).to receive(:load_yml).with(subject.local_file, scope, env).and_return(local_config)
end
let(:missing_variables_names) { example_config.keys - local_config.keys }
- it "raises expection with missing variables names" do
+ it 'raises expection with missing variables names' do
expect {
subject.load
- }.to raise_error(A9n::MissingConfigurationVariablesError, /#{missing_variables_names.join(", ")}/)
+ }.to raise_error(A9n::MissingConfigurationVariablesError, /#{missing_variables_names.join(', ')}/)
end
end
end
end
- describe ".load_yml" do
- let(:env) { "test" }
- subject { described_class.load_yml(file_path, scope, env) }
+ describe '.load_yml' do
+ let(:env) { 'test' }
+ subject { described_class.load_yml(file_path, scope, env) }
- context "when file not exists" do
- let(:file_path) { "file_not_existing_in_the_universe.yml" }
+ context 'when file not exists' do
+ let(:file_path) { 'file_not_existing_in_the_universe.yml' }
- it{ expect(subject).to be_nil }
+ it { expect(subject).to be_nil }
end
- context "when file exists" do
- shared_examples "non-empty config file" do
- it "returns non-empty hash" do
+ context 'when file exists' do
+ shared_examples 'non-empty config file' do
+ it 'returns non-empty hash' do
expect(subject).to be_kind_of(Hash)
expect(subject.keys).to_not be_empty
end
end
before do
- ENV["ERB_DWARF"] = "erbized dwarf"
- ENV["DWARF_PASSWORD"] = "dwarf123"
+ ENV['ERB_DWARF'] = 'erbized dwarf'
+ ENV['DWARF_PASSWORD'] = 'dwarf123'
end
after do
- ENV.delete("ERB_DWARF")
- ENV.delete("DWARF_PASSWORD")
+ ENV.delete('ERB_DWARF')
+ ENV.delete('DWARF_PASSWORD')
end
- context "when file has erb extension" do
- let(:file_path) { File.join(root, "config/a9n/cloud.yml.erb") }
+ context 'when file has erb extension' do
+ let(:file_path) { File.join(root, 'config/a9n/cloud.yml.erb') }
- it_behaves_like "non-empty config file"
+ it_behaves_like 'non-empty config file'
end
- context "having env and defaults data" do
- let(:file_path) { File.join(root, "config/configuration.yml") }
+ context 'having env and defaults data' do
+ let(:file_path) { File.join(root, 'config/configuration.yml') }
- it_behaves_like "non-empty config file"
+ it_behaves_like 'non-empty config file'
- it "contains keys from defaults scope" do
- expect(subject[:default_dwarf]).to eq("default dwarf")
- expect(subject[:overriden_dwarf]).to eq("already overriden dwarf")
+ it 'contains keys from defaults scope' do
+ expect(subject[:default_dwarf]).to eq('default dwarf')
+ expect(subject[:overriden_dwarf]).to eq('already overriden dwarf')
end
- it "has symbolized keys" do
+ it 'has symbolized keys' do
expect(subject.keys.first).to be_kind_of(Symbol)
expect(subject[:hash_dwarf]).to be_kind_of(Hash)
expect(subject[:hash_dwarf].keys.first).to be_kind_of(Symbol)
end
- it "parses erb" do
- expect(subject[:erb_dwarf]).to eq("erbized dwarf")
+ it 'parses erb' do
+ expect(subject[:erb_dwarf]).to eq('erbized dwarf')
end
- it "gets valus from ENV" do
- expect(subject[:dwarf_password]).to eq("dwarf123")
+ it 'gets valus from ENV' do
+ expect(subject[:dwarf_password]).to eq('dwarf123')
end
- it "raises exception when ENV var is not set" do
- ENV.delete("DWARF_PASSWORD")
- expect{ subject[:dwarf_password] }.to raise_error(A9n::MissingEnvVariableError)
+ it 'raises exception when ENV var is not set' do
+ ENV.delete('DWARF_PASSWORD')
+ expect { subject[:dwarf_password] }.to raise_error(A9n::MissingEnvVariableError)
end
- it "raises exception when ENV var is set to nil" do
- ENV["DWARF_PASSWORD"] = nil
- expect{ subject[:dwarf_password] }.to raise_error(A9n::MissingEnvVariableError)
+ it 'raises exception when ENV var is set to nil' do
+ ENV['DWARF_PASSWORD'] = nil
+ expect { subject[:dwarf_password] }.to raise_error(A9n::MissingEnvVariableError)
end
end
- context "having no env and only defaults data" do
- let(:file_path) { File.join(root, "config/configuration.yml") }
- let(:env) { "production" }
+ context 'having no env and only defaults data' do
+ let(:file_path) { File.join(root, 'config/configuration.yml') }
+ let(:env) { 'production' }
- it_behaves_like "non-empty config file"
+ it_behaves_like 'non-empty config file'
- it "contains keys from defaults scope" do
- expect(subject[:default_dwarf]).to eq("default dwarf")
- expect(subject[:overriden_dwarf]).to eq("not yet overriden dwarf")
+ it 'contains keys from defaults scope' do
+ expect(subject[:default_dwarf]).to eq('default dwarf')
+ expect(subject[:overriden_dwarf]).to eq('not yet overriden dwarf')
end
end
- context "having only env and no default data" do
- let(:file_path) { File.join(root, "config/no_defaults.yml") }
+ context 'having only env and no default data' do
+ let(:file_path) { File.join(root, 'config/no_defaults.yml') }
- context "valid env" do
- let(:env) { "production" }
- it_behaves_like "non-empty config file"
+ context 'valid env' do
+ let(:env) { 'production' }
+ it_behaves_like 'non-empty config file'
end
- context "invalid env" do
- let(:env) { "tropical" }
+ context 'invalid env' do
+ let(:env) { 'tropical' }
it { expect(subject).to be_nil }
end
end
end
end