diff options
| author | Luc Donnet | 2017-12-19 12:10:35 +0100 |
|---|---|---|
| committer | GitHub | 2017-12-19 12:10:35 +0100 |
| commit | bb2713b33296c857ce807e0237bf8095b65070ad (patch) | |
| tree | 7ad6067405da4d75b508af62ef2debd90fbffd5b | |
| parent | 1835256469af5f72ec50d986018554722b3b05cb (diff) | |
| parent | e24fa05b277224ae5bd70b95c22b9386555ea72b (diff) | |
| download | chouette-core-bb2713b33296c857ce807e0237bf8095b65070ad.tar.bz2 | |
Merge pull request #149 from af83/5305_autocomplete_stop_area_unaccent
5305 autocomplete stop area unaccent
| -rw-r--r-- | app/controllers/autocomplete_stop_areas_controller.rb | 2 | ||||
| -rw-r--r-- | db/migrate/20171214130636_enable_unaccent_extension.rb | 9 | ||||
| -rw-r--r-- | db/schema.rb | 3 | ||||
| -rw-r--r-- | spec/controllers/autocomplete_stop_areas_controller_spec.rb | 29 |
4 files changed, 41 insertions, 2 deletions
diff --git a/app/controllers/autocomplete_stop_areas_controller.rb b/app/controllers/autocomplete_stop_areas_controller.rb index 233012028..be1badff0 100644 --- a/app/controllers/autocomplete_stop_areas_controller.rb +++ b/app/controllers/autocomplete_stop_areas_controller.rb @@ -18,7 +18,7 @@ class AutocompleteStopAreasController < ChouetteController scope = scope.possible_parents if relation_children? end args = [].tap{|arg| 4.times{arg << "%#{params[:q]}%"}} - @stop_areas = scope.where("name ILIKE ? OR city_name ILIKE ? OR registration_number ILIKE ? OR objectid ILIKE ?", *args).limit(50) + @stop_areas = scope.where("unaccent(name) ILIKE unaccent(?) OR unaccent(city_name) ILIKE unaccent(?) OR registration_number ILIKE ? OR objectid ILIKE ?", *args).limit(50) @stop_areas end diff --git a/db/migrate/20171214130636_enable_unaccent_extension.rb b/db/migrate/20171214130636_enable_unaccent_extension.rb new file mode 100644 index 000000000..f7411b1f4 --- /dev/null +++ b/db/migrate/20171214130636_enable_unaccent_extension.rb @@ -0,0 +1,9 @@ +class EnableUnaccentExtension < ActiveRecord::Migration + def up + execute 'CREATE EXTENSION IF NOT EXISTS unaccent SCHEMA shared_extensions;' + end + + def down + execute 'DROP EXTENSION IF EXISTS unaccent SCHEMA shared_extensions;' + end +end diff --git a/db/schema.rb b/db/schema.rb index 4a04dac26..f2642f8fc 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,12 +11,13 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171130180144) do +ActiveRecord::Schema.define(version: 20171214130636) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" enable_extension "postgis" enable_extension "hstore" + enable_extension "unaccent" create_table "access_links", id: :bigserial, force: :cascade do |t| t.integer "access_point_id", limit: 8 diff --git a/spec/controllers/autocomplete_stop_areas_controller_spec.rb b/spec/controllers/autocomplete_stop_areas_controller_spec.rb new file mode 100644 index 000000000..50fc877dd --- /dev/null +++ b/spec/controllers/autocomplete_stop_areas_controller_spec.rb @@ -0,0 +1,29 @@ +require 'rails_helper' + +RSpec.describe AutocompleteStopAreasController, type: :controller do + login_user + + let(:referential) { Referential.first } + let!(:stop_area) { create :stop_area, name: 'écolà militaire' } + + describe 'GET #index' do + it 'should be successful' do + get :index, referential_id: referential.id + expect(response).to be_success + end + + context 'search by name' do + it 'should be successful' do + get :index, referential_id: referential.id, q: 'écolà', :format => :json + expect(response).to be_success + expect(assigns(:stop_areas)).to eq([stop_area]) + end + + it 'should be accent insensitive' do + get :index, referential_id: referential.id, q: 'ecola', :format => :json + expect(response).to be_success + expect(assigns(:stop_areas)).to eq([stop_area]) + end + end + end +end |
