diff options
Diffstat (limited to 'gems/click_house-client/spec/click_house/client/configuration_spec.rb')
-rw-r--r-- | gems/click_house-client/spec/click_house/client/configuration_spec.rb | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/gems/click_house-client/spec/click_house/client/configuration_spec.rb b/gems/click_house-client/spec/click_house/client/configuration_spec.rb new file mode 100644 index 00000000000..8cbd64ca650 --- /dev/null +++ b/gems/click_house-client/spec/click_house/client/configuration_spec.rb @@ -0,0 +1,66 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe ClickHouse::Client::Configuration do + subject(:configuration) do + config = described_class.new + config.http_post_proc = -> {} + config.json_parser = Object + config + end + + describe '#register_database' do + let(:database_options) do + { + database: 'test_db', + url: 'http://localhost:3333', + username: 'user', + password: 'pass', + variables: { + join_use_nulls: 1 + } + } + end + + it 'registers a database' do + configuration.register_database(:my_db, **database_options) + + expect(configuration.databases.size).to eq(1) + database = configuration.databases[:my_db] + + expect(database.uri.to_s).to eq('http://localhost:3333?database=test_db&join_use_nulls=1') + end + + context 'when adding the same DB multiple times' do + it 'raises error' do + configuration.register_database(:my_db, **database_options) + expect do + configuration.register_database(:my_db, **database_options) + end.to raise_error(ClickHouse::Client::ConfigurationError, /database 'my_db' is already registered/) + end + end + end + + describe '#validate!' do + context 'when `http_post_proc` option is not configured' do + it 'raises error' do + configuration.http_post_proc = nil + + expect do + configuration.validate! + end.to raise_error(ClickHouse::Client::ConfigurationError, /'http_post_proc' option is not configured/) + end + end + + context 'when `json_parser` option is not configured' do + it 'raises error' do + configuration.json_parser = nil + + expect do + configuration.validate! + end.to raise_error(ClickHouse::Client::ConfigurationError, /'json_parser' option is not configured/) + end + end + end +end |