Skip to content
Open
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 app/assets/javascripts/subdivision_select.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ var SubdivisionSelect = (function() {
} else {
this._countrySelect = $element.
closest("form").
find(SubdivisionSelect.subdivisionSelector);
find(SubdivisionSelect.countrySelector);
}
};

Expand Down
17 changes: 12 additions & 5 deletions app/helpers/subdivision_select/subdivisions_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,18 @@ def self.get_subdivisions(alpha2)
# and the value is a hash with two key/values:
# - "name" is the most popular/most correct name
# - "names" is an array of all the names
if ISO3166::Country[alpha2].nil?
{}
else
ISO3166::Country[alpha2].subdivisions.map { |k, v| [k, v["name"]] }.to_h
end
subdivision_hash =
if ISO3166::Country[alpha2].nil?
{}
else
ISO3166::Country[alpha2].subdivisions.map { |k, v| [k, v["name"]] }.to_h
end

Hash[
SubdivisionSelect.options.priority_subdivisions.fetch(alpha2&.to_sym, []).map do |sd_code|
[sd_code, subdivision_hash.delete(sd_code)]
end
].merge(subdivision_hash)
end

def self.get_subdivisions_for_select(alpha2)
Expand Down
1 change: 1 addition & 0 deletions lib/subdivision_select.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
require "subdivision_select/configuration"
require "subdivision_select/tag_helper"
require "subdivision_select/subdivision_select_helper"
require "subdivision_select/engine"
Expand Down
17 changes: 17 additions & 0 deletions lib/subdivision_select/configuration.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
module SubdivisionSelect
def self.configure
yield(options)
end

def self.options
@options ||= Configuration.new
end

class Configuration
attr_accessor :priority_subdivisions

def initialize
@priority_subdivisions = {}
end
end
end
2 changes: 1 addition & 1 deletion lib/subdivision_select/engine.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class Engine < ::Rails::Engine

config.generators do |g|
g.test_framework :rspec
g.fixture_replacement :factory_girl, dir: "spec/factories"
g.fixture_replacement :factory_bot, dir: "spec/factories"
end
end
end
12 changes: 8 additions & 4 deletions lib/subdivision_select/tag_helper.rb
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
module SubdivisionSelect
#class CountryNotFoundError < StandardError;end
# class CountryNotFoundError < StandardError;end
module TagHelper
unless respond_to?(:options_for_select)
include ActionView::Helpers::FormOptionsHelper
include ActionView::Helpers::Tags::SelectRenderer if defined?(ActionView::Helpers::Tags::SelectRenderer)
end

def subdivision_option_tags
option_tags_options = {
selected: @options.fetch(:selected) { value(@object) },
selected: @options.fetch(:selected) { value },
disabled: @options[:disabled]
}

# Actual loading of subdivisions is in a View helper, since the controller
# needs to use it, to render the subdivisions of a country in JSON
subdivisions = SubdivisionsHelper::get_subdivisions_for_select(country)
subdivisions = SubdivisionsHelper.get_subdivisions_for_select(country)
options_for_select(subdivisions, option_tags_options)
end

Expand All @@ -20,4 +25,3 @@ def country
end
end
end

2 changes: 1 addition & 1 deletion lib/subdivision_select/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module SubdivisionSelect
VERSION = "0.0.6"
VERSION = "0.0.8"
end
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,16 @@ module SubdivisionSelect

describe "GET #get" do
it "returns http success in JSON, when correct param supplied" do
get :get, country_code: "IE"
expect(response).to have_http_status(:success)
expect(response.content_type).to eq("application/json")
get :get, params: {country_code: "IE"}
expect(response).to be_successful
expect(response.content_type).to eq("application/json; charset=utf-8")
end

it "returns http success in JSON, w/o correct param supplied" do
get :get
expect(response).to have_http_status(:success)
expect(response.content_type).to eq("application/json")
expect(response).to be_successful
expect(response.content_type).to eq("application/json; charset=utf-8")
end

end
end
end
3 changes: 3 additions & 0 deletions spec/dummy/app/assets/config/manifest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css
2 changes: 1 addition & 1 deletion spec/dummy/app/controllers/addresses_demo_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def tags
def update
@address = Address.find(params[:id])

if @address.update_attributes(address_params)
if @address.update(address_params)
redirect_to root_path, notice: "Updated address!"
end
end
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
class CreateAddresses < ActiveRecord::Migration
class CreateAddresses < ActiveRecord::Migration[7.2]
def change
create_table :addresses do |t|
t.string :title
t.string :country
t.string :subdivision

t.timestamps null: false
t.timestamps
end
end
end
25 changes: 11 additions & 14 deletions spec/dummy/db/schema.rb
Original file line number Diff line number Diff line change
@@ -1,24 +1,21 @@
# encoding: UTF-8
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# Note that this schema.rb definition is the authoritative source for your
# database schema. If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
# This file is the source Rails uses to define your schema when running `bin/rails
# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
# be faster and is potentially less error prone than running all of your
# migrations from scratch. Old migrations may fail to apply correctly if those
# migrations use external dependencies or application code.
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 20150505182454) do

ActiveRecord::Schema[7.2].define(version: 2024_10_04_213846) do
create_table "addresses", force: :cascade do |t|
t.string "country"
t.string "subdivision"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "title"
t.string "title"
t.string "country"
t.string "subdivision"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

end
16 changes: 0 additions & 16 deletions spec/dummy/db/seeds.rb

This file was deleted.

Binary file added spec/dummy/db/test.sqlite3-shm
Binary file not shown.
Binary file added spec/dummy/db/test.sqlite3-wal
Binary file not shown.
6 changes: 3 additions & 3 deletions spec/dummy/spec/controllers/addresses_demo_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,21 @@
describe "GET #index" do
it "returns http success" do
get :index
expect(response).to have_http_status(:success)
expect(response).to be_successful
end
end

describe "GET #tags" do
it "returns http success" do
get :tags
expect(response).to have_http_status(:success)
expect(response).to be_successful
end
end

describe "PATCH #update" do
it "returns http success" do
@address = create(:address)
patch :update, id: @address.id, address: { subdivision: "D", country: "IE" }
patch :update, params: { id: @address.id, address: { subdivision: "D", country: "IE" } }
expect(assigns(:address).country).to eq("IE")
expect(assigns(:address).subdivision).to eq("D")
end
Expand Down
1 change: 1 addition & 0 deletions spec/dummy/spec/features/select_boxes_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
require "rails_helper"

feature "select boxes via FormBuilder and FormTagHelper" do
before(:each) do
@address = create(:mass_address)
Expand Down
10 changes: 5 additions & 5 deletions spec/factories.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
FactoryGirl.define do
FactoryBot.define do
factory :address do
title "Blank Address"
title { "Blank Address" }

factory :mass_address do
title "Massachusetts Address"
country "US"
subdivision "MA"
title { "Massachusetts Address" }
country { "US" }
subdivision { "MA" }
end
end
end
6 changes: 4 additions & 2 deletions spec/rails_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
require "rspec/rails"
require "capybara/rails"
require "capybara/rspec"
require "factory_girl_rails"
require "factory_bot_rails"
require "rails-controller-testing"
Rails::Controller::Testing.install

require "capybara/poltergeist"
Capybara.javascript_driver = :poltergeist
Expand Down Expand Up @@ -52,5 +54,5 @@
# https://relishapp.com/rspec/rspec-rails/docs
config.infer_spec_type_from_file_location!

config.include FactoryGirl::Syntax::Methods
config.include FactoryBot::Syntax::Methods
end
16 changes: 9 additions & 7 deletions subdivision_select.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,21 @@ Gem::Specification.new do |s|
"Rakefile",
"README.rdoc"
]
s.test_files = Dir["spec/**/*"]

s.add_dependency "rails", ">= 4.1"
s.add_dependency "country_select", "~> 2.0"
s.add_dependency "countries", "~> 1.1"
s.add_dependency "rails", ">= 7.0"
s.add_dependency "sprockets-rails", ">= 3.5"
s.add_dependency "country_select", "~> 10.0.0"
s.add_dependency "countries", "> 5.0", "< 8.0"
s.add_dependency "jquery-rails", ">= 3.0"

s.add_development_dependency "sqlite3", "~> 1.3" # Not used but we need an AR adapter

s.add_development_dependency "rspec-rails", "~> 3.2"
s.add_development_dependency "factory_girl_rails", "~> 4.5"
s.add_development_dependency "puma", ">= 6.0"
s.add_development_dependency "rspec-rails", "~> 7.0"
s.add_development_dependency "rails-controller-testing"
s.add_development_dependency "factory_bot_rails", "~> 6.0"
s.add_development_dependency "database_cleaner"

s.add_development_dependency "capybara", "~> 2.4"
s.add_development_dependency "capybara", "~> 3.40"
s.add_development_dependency "poltergeist", "~> 1.8"
end