Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove support for deprecated 1.x syntax #224

Merged
merged 3 commits into from
Feb 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@ jobs:

run: bundle exec rake
- name: Publish code coverage
uses: paambaati/codeclimate-action@v4.0.0
uses: paambaati/codeclimate-action@v5.0.0

16 changes: 3 additions & 13 deletions lib/country_select/country_select_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,9 @@
module ActionView
module Helpers
class FormBuilder
def country_select(method, priority_or_options = {}, options = {}, html_options = {})
if priority_or_options.is_a? Hash
html_options = options
options = priority_or_options
else
if RUBY_VERSION =~ /^3\.\d\.\d/
warn 'DEPRECATION WARNING: Setting priority countries with the 1.x syntax is deprecated. \
Please use the `priority_countries:` option.', uplevel: 1, category: :deprecated
else
warn 'DEPRECATION WARNING: Setting priority countries with the 1.x syntax is deprecated. \
Please use the `priority_countries:` option.', uplevel: 1
end
options[:priority_countries] = priority_or_options
def country_select(method, options = {}, html_options = {})
unless options.is_a?(Hash)
raise ArgumentError, 'Invalid syntax for country_select method. options must be a hash'
end

@template.country_select(@object_name, method, objectify_options(options), @default_options.merge(html_options))
Expand Down
70 changes: 4 additions & 66 deletions spec/country_select_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -223,73 +223,11 @@ class Walrus
end

context 'using old 1.x syntax' do
it 'accepts priority countries' do
tag = options_for_select(
[
['Denmark', 'DK'],
['Latvia', 'LV'],
['United States', 'US'],
['-' * 15, '-' * 15]
],
selected: 'US',
disabled: '-' * 15
)

walrus.country_code = 'US'
t = builder.country_select(:country_code, %w[LV US DK])
expect(t).to include(tag)
end

it 'selects only the first matching option' do
tag = options_for_select([['United States', 'US'], ['Uruguay', 'UY']], 'US')
it 'raises ArgumentError' do
walrus.country_code = 'US'
t = builder.country_select(:country_code, %w[LV US])
expect(t).to_not include(tag)
end

it 'supports the country names as provided by default in Formtastic' do
tag = options_for_select([['Australia', 'AU'],
['Canada', 'CA'],
['United Kingdom', 'GB'],
['United States', 'US']])
country_names = ['Australia', 'Canada', 'United Kingdom', 'United States']
t = builder.country_select(:country_code, country_names)
expect(t).to include(tag)
end

it 'raises an error when a country code or name is not found' do
country_names = [
'United States',
'Canada',
'United Kingdom',
'Mexico',
'Australia',
'Freedonia'
]
error_msg = "Could not find Country with string 'Freedonia'"

expect do
builder.country_select(:country_code, country_names)
end.to raise_error(CountrySelect::CountryNotFoundError, error_msg)
end

it 'supports the select prompt' do
tag = '<option value="">Select your country</option>'
t = builder.country_select(:country_code, prompt: 'Select your country')
expect(t).to include(tag)
end

it 'supports the include_blank option' do
# Rails 6.1 more closely follows the HTML spec for
# empty option tags.
# https://github.com/rails/rails/pull/39808
tag = if ActionView::VERSION::STRING >= '6.1'
'<option value="" label=" "></option>'
else
'<option value=""></option>'
end
t = builder.country_select(:country_code, include_blank: true)
expect(t).to include(tag)
expect {
builder.country_select(:country_code, %w[LV US DK])
}.to raise_error(ArgumentError, 'Invalid syntax for country_select method. options must be a hash')
end
end

Expand Down
Loading