hets_options_spec.rb revision c73a9fba38c3f997632370857d254425fa5183d7
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncrequire 'spec_helper'
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncdescribe Hets::HetsOptions do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:options) { {key1: 'value1', key2: 'value2'} }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync context 'initialize' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync it 'sets options' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync expect(Hets::HetsOptions.new(options).options).to eq(options)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync it 'removes nil valued options' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync options_new = {**options, key3: nil}
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync expect(Hets::HetsOptions.new(options_new).options).to eq(options)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync context 'from_hash' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync it 'sets options' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync hash = {'options' => options}
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync expect(Hets::HetsOptions.from_hash(hash).options).to eq(options)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync it 'removes nil valued options' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync options_new = {**options, key3: nil}
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync hash = {'options' => options_new}
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync expect(Hets::HetsOptions.from_hash(hash).options).to eq(options)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync context 'add' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:hets_options) { Hets::HetsOptions.new(options) }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:additional_options) { {key3: 'value3', key4: 'value4'} }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync it 'adds options' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync hets_options.add(additional_options)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync expect(hets_options.options).to eq(options.merge(additional_options))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync it 'removes nil valued options' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync additional_options_new = {**additional_options, key5: nil}
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync hets_options.add(additional_options_new)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync expect(hets_options.options).to eq(options.merge(additional_options))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync context 'access token' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync context 'access token is nil' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:access_token_options) { {**options, :'access-token' => nil} }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:hets_options) { Hets::HetsOptions.new(access_token_options) }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync it 'has no access token key' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync expect(hets_options.options.has_key?(:'access-token')).to be(false)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync context 'access token exists' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:access_token) { create :access_token }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:access_token_options) { {**options, :'access-token' => access_token} }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:hets_options) { Hets::HetsOptions.new(access_token_options) }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync it 'has the correct access token' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync expect(hets_options.options[:'access-token']).to eq(access_token.to_s)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync context 'url-catalog' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync context 'empty' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:catalog_options) { {**options, :'url-catalog' => %w()} }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:hets_options) { Hets::HetsOptions.new(catalog_options) }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync it "removes the key :'url-catalog'" do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync expect(hets_options.options.has_key?(:'url-catalog')).to be(false)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync context 'only with nil values' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:catalog_options) { {**options, :'url-catalog' => [nil, nil]} }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:hets_options) { Hets::HetsOptions.new(catalog_options) }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync it "removes the key :'url-catalog'" do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync expect(hets_options.options.has_key?(:'url-catalog')).to be(false)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync context 'with a nil value' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:catalog_options) do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync {**options, :'url-catalog' => ['a=b', nil, 'c=d']}
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:hets_options) { Hets::HetsOptions.new(catalog_options) }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync it "removes the nil value from :'url-catalog'" do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync expect(hets_options.options[:'url-catalog']).to eq('a=b,c=d')
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync context 'without nil values' do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:catalog_options) { {**options, :'url-catalog' => %w(a=b c=d)} }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync let(:hets_options) { Hets::HetsOptions.new(catalog_options) }
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync it "has the same :'url-catalog'" do
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync expect(hets_options.options[:'url-catalog']).to eq('a=b,c=d')
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync end
end