require 'spec_helper' describe Berkshelf::Config do describe '::file' do context 'when the file does not exist' do before { allow(File).to receive(:exists?).and_return(false) } it 'is nil' do expect(Berkshelf::Config.file).to be_nil end end end describe '::instance' do it 'should be a Berkshelf::Config' do expect(Berkshelf::Config.instance).to be_an_instance_of(Berkshelf::Config) end context 'attributes' do it 'should have a default API timeout' do expect(Berkshelf::Config.instance.api.timeout).to eq('30') end end end describe '::path' do it 'is a string' do expect(Berkshelf::Config.path).to be_a(String) end before do allow(File).to receive(:exists?).and_return(false) end after do Berkshelf::Config.instance_variable_set(:@path, nil) end context "when ENV['BERKSHELF_CONFIG'] is used" do before do allow(ENV).to receive(:[]).with('BERKSHELF_CONFIG').and_return('/tmp/config.json') allow(File).to receive(:exists?).with('/tmp/config.json').and_return(true) end it "points to a location within it" do expect(Berkshelf::Config.path).to match(%r{/tmp/config.json}) end end end describe "::set_path" do subject(:set_path) { described_class.set_path("/tmp/other_path.json") } it "sets the #instance to nil" do set_path expect(described_class.instance_variable_get(:@instance)).to be_nil end end end