spec/config_spec.rb in anyway_config-1.3.1 vs spec/config_spec.rb in anyway_config-1.4.0
- old
+ new
@@ -107,14 +107,10 @@
config_name :cool_thing
end
klass.new
end
- it "warns user about deprecated behaviour" do
- expect { conf }.to print_warning
- end
-
context "when env_name is set" do
let(:conf) do
klass = CoolConfig.dup
klass.class_eval do
config_name :cool_thing
@@ -175,12 +171,12 @@
before(:each) do
ENV.delete_if { |var| var =~ /^myapp_/i }
end
it "load data by config name", :aggregate_failures do
- ENV['MYAPP_TEST'] = '1'
- ENV['MYAPP_NAME'] = 'my_app'
+ ENV['MY_APP_TEST'] = '1'
+ ENV['MY_APP_NAME'] = 'my_app'
Anyway.env.clear
data = Anyway::Config.for(:my_app)
expect(data[:test]).to eq 1
expect(data[:name]).to eq 'my_app'
expect(data[:secret]).to eq 'my_secret' if Rails.application.respond_to?(:secrets)
@@ -232,8 +228,91 @@
new_config = config.new
expect(new_config.debug).to eq false
expect(new_config.test).to be_nil
expect(new_config.new_param).to eq 'a'
+ end
+ end
+
+ describe "#parse_options!" do
+ let(:config_instance) { config.new }
+
+ context "when `ignore_options` is not provided" do
+ let(:config) do
+ Class.new(described_class) do
+ config_name 'optparse'
+ attr_config :host, :port, :log_level, :debug
+ end
+ end
+
+ it "parses ARGC string" do
+ config_instance.parse_options!(%w[--host localhost --port 3333 --log-level debug --debug T])
+ expect(config_instance.host).to eq("localhost")
+ expect(config_instance.port).to eq(3333)
+ expect(config_instance.log_level).to eq("debug")
+ expect(config_instance.debug).to eq(true)
+ end
+ end
+
+ context 'when `ignore_options` is provided' do
+ let(:config) do
+ Class.new(described_class) do
+ config_name 'optparse'
+ attr_config :host, :log_level, :concurrency, server_args: {}
+
+ ignore_options :server_args
+ end
+ end
+
+ it "parses ARGC string" do
+ expect do
+ config_instance.parse_options!(
+ %w[--host localhost --concurrency 10 --log-level debug --server-args SOME_ARGS]
+ )
+ end.to raise_error(OptionParser::InvalidOption, /--server-args/)
+
+ expect(config_instance.host).to eq("localhost")
+ expect(config_instance.concurrency).to eq(10)
+ expect(config_instance.log_level).to eq("debug")
+ expect(config_instance.server_args).to eq({})
+ end
+ end
+
+ context 'when `describe_options` is provided' do
+ let(:config) do
+ Class.new(described_class) do
+ config_name 'optparse'
+ attr_config :host, :log_level, :concurrency, server_args: {}
+
+ describe_options(
+ concurrency: "number of threads to use"
+ )
+ end
+ end
+
+ it "contains options description" do
+ expect(config_instance.option_parser.help).to include("number of threads to use")
+ end
+ end
+
+ context "customization of option parser" do
+ let(:config) do
+ Class.new(described_class) do
+ config_name 'optparse'
+ attr_config :host, :log_level, :concurrency, server_args: {}
+
+ extend_options do |parser|
+ parser.banner = "mycli [options]"
+
+ parser.on_tail "-h", "--help" do
+ puts parser
+ end
+ end
+ end
+ end
+
+ it "allows to customize the parser" do
+ expect(config_instance.option_parser.help).to include("mycli [options]")
+ end
end
end
end