diff options
| author | Luc Donnet | 2018-02-09 16:38:53 +0100 |
|---|---|---|
| committer | GitHub | 2018-02-09 16:38:53 +0100 |
| commit | e2c316740beb7d9704d3bfb31f97f7ab4e436865 (patch) | |
| tree | 59cf12693eff24cb78df9c54d95310cce2b484d5 | |
| parent | 99ea4f09708c05aef8f16138ec2829bdeb3c8f4f (diff) | |
| parent | 8f8ab427914c39fdfb0648978d4fdff25ccfdc63 (diff) | |
| download | chouette-core-e2c316740beb7d9704d3bfb31f97f7ab4e436865.tar.bz2 | |
Merge pull request #282 from af83/5824-autocomplete-stop-areas-scope
5824 autocomplete stop areas scope
| -rw-r--r-- | app/controllers/autocomplete_stop_areas_controller.rb | 2 | ||||
| -rw-r--r-- | app/models/referential.rb | 4 | ||||
| -rw-r--r-- | spec/controllers/api/v1/stop_area_controller_spec.rb | 9 | ||||
| -rw-r--r-- | spec/controllers/autocomplete_stop_areas_controller_spec.rb | 14 | ||||
| -rw-r--r-- | spec/factories/chouette_stop_areas.rb | 8 | ||||
| -rw-r--r-- | spec/features/access_points_spec.rb | 2 | ||||
| -rw-r--r-- | spec/features/referential_stop_areas_spec.rb | 2 | ||||
| -rw-r--r-- | spec/models/calendar_spec.rb | 2 |
8 files changed, 27 insertions, 16 deletions
diff --git a/app/controllers/autocomplete_stop_areas_controller.rb b/app/controllers/autocomplete_stop_areas_controller.rb index d82fa316a..79154a6e0 100644 --- a/app/controllers/autocomplete_stop_areas_controller.rb +++ b/app/controllers/autocomplete_stop_areas_controller.rb @@ -21,7 +21,7 @@ class AutocompleteStopAreasController < ChouetteController scope = StopAreaPolicy::Scope.new(current_user, scope).search_scope(search_scope) end args = [].tap{|arg| 4.times{arg << "%#{params[:q]}%"}} - @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 = scope.where("unaccent(stop_areas.name) ILIKE unaccent(?) OR unaccent(stop_areas.city_name) ILIKE unaccent(?) OR stop_areas.registration_number ILIKE ? OR stop_areas.objectid ILIKE ?", *args).limit(50) @stop_areas end diff --git a/app/models/referential.rb b/app/models/referential.rb index baaa354da..f64db4ebf 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -153,10 +153,6 @@ class Referential < ActiveRecord::Base end end - def stop_areas - Chouette::StopArea.all - end - def access_points Chouette::AccessPoint.all end diff --git a/spec/controllers/api/v1/stop_area_controller_spec.rb b/spec/controllers/api/v1/stop_area_controller_spec.rb index eb0c87661..1ad71a95a 100644 --- a/spec/controllers/api/v1/stop_area_controller_spec.rb +++ b/spec/controllers/api/v1/stop_area_controller_spec.rb @@ -18,16 +18,15 @@ describe Api::V1::StopAreasController, :type => :controller do end end describe "GET #index, :q => { :name_cont => 'aa'}" do - let!(:sa1) { create(:stop_area, :name => "aaa") } - let!(:sa2) { create(:stop_area, :name => "aab") } - let!(:sa3) { create(:stop_area, :name => "abb") } + let!(:sa1) { create(:stop_area, :name => "aaa", stop_area_referential: referential.stop_area_referential) } + let!(:sa2) { create(:stop_area, :name => "aab", stop_area_referential: referential.stop_area_referential) } + let!(:sa3) { create(:stop_area, :name => "abb", stop_area_referential: referential.stop_area_referential) } before :each do config_formatted_request_with_authorization( "application/json") - get :index, :q => { :name_cont => "aa"} + get :index, :q => { :name_cont => "aa"} end it "should assign expected stop_areas" do expect(assigns[:stop_areas].map(&:name).sort).to eq([ sa1.name, sa2.name]) end end end - diff --git a/spec/controllers/autocomplete_stop_areas_controller_spec.rb b/spec/controllers/autocomplete_stop_areas_controller_spec.rb index 2af471361..e0d1cd714 100644 --- a/spec/controllers/autocomplete_stop_areas_controller_spec.rb +++ b/spec/controllers/autocomplete_stop_areas_controller_spec.rb @@ -4,9 +4,11 @@ RSpec.describe AutocompleteStopAreasController, type: :controller do login_user let(:referential) { Referential.first } - let!(:stop_area) { create :stop_area, name: 'écolà militaire' } - let!(:zdep_stop_area) { create :stop_area, area_type: "zdep" } - let!(:not_zdep_stop_area) { create :stop_area, area_type: "lda" } + let(:other_referential) { create :referential } + let!(:stop_area) { create :stop_area, name: 'écolà militaire', referential: referential } + let!(:other_referential_stop_area) { create :stop_area, name: 'écolà militaire', referential: other_referential } + let!(:zdep_stop_area) { create :stop_area, area_type: "zdep", referential: referential } + let!(:not_zdep_stop_area) { create :stop_area, area_type: "lda", referential: referential } describe 'GET #index' do it 'should be successful' do @@ -14,6 +16,12 @@ RSpec.describe AutocompleteStopAreasController, type: :controller do expect(response).to be_success end + it "should filter stop areas based on referential" do + get :index, referential_id: referential.id + expect(assigns(:stop_areas)).to include(stop_area) + expect(assigns(:stop_areas)).to_not include(other_referential_stop_area) + end + context 'search by name' do it 'should be successful' do get :index, referential_id: referential.id, q: 'écolà', :format => :json diff --git a/spec/factories/chouette_stop_areas.rb b/spec/factories/chouette_stop_areas.rb index 9b4764781..dab135ca6 100644 --- a/spec/factories/chouette_stop_areas.rb +++ b/spec/factories/chouette_stop_areas.rb @@ -10,6 +10,14 @@ FactoryGirl.define do association :stop_area_referential + transient do + referential nil + end + + before(:create) do |stop_area, evaluator| + stop_area.stop_area_referential = evaluator.referential.stop_area_referential if evaluator.referential + end + trait :deactivated do deleted_at { 1.hour.ago } end diff --git a/spec/features/access_points_spec.rb b/spec/features/access_points_spec.rb index c16039d67..890906de7 100644 --- a/spec/features/access_points_spec.rb +++ b/spec/features/access_points_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe "Access points", :type => :feature do login_user - let!(:stop_area) { create(:stop_area) } + let!(:stop_area) { create(:stop_area, stop_area_referential: referential.stop_area_referential) } let!(:access_points) { Array.new(2) { create(:access_point, :stop_area => stop_area) } } subject { access_points.first } diff --git a/spec/features/referential_stop_areas_spec.rb b/spec/features/referential_stop_areas_spec.rb index 0dc7951a7..5e70857e7 100644 --- a/spec/features/referential_stop_areas_spec.rb +++ b/spec/features/referential_stop_areas_spec.rb @@ -5,7 +5,7 @@ describe 'ReferentialStopAreas', type: :feature do login_user let(:referential) { Referential.first } - let(:stop_area_referential) { create :stop_area_referential } + let(:stop_area_referential) { referential.stop_area_referential } let!(:stop_areas) { Array.new(2) { create :stop_area, stop_area_referential: stop_area_referential } } describe 'index' do diff --git a/spec/models/calendar_spec.rb b/spec/models/calendar_spec.rb index 3cffd0f8a..a5c0a7471 100644 --- a/spec/models/calendar_spec.rb +++ b/spec/models/calendar_spec.rb @@ -36,7 +36,7 @@ RSpec.describe Calendar, :type => :model do end it 'validates that dates and date_ranges do not overlap but allow for days not in the list' do - expect(build(:calendar, dates: [Date.today.beginning_of_week], date_ranges: [Date.today.beginning_of_week..Date.today], int_day_types: Calendar::THURSDAY)).to be_valid + expect(build(:calendar, dates: [Date.today.beginning_of_week - 1.week], date_ranges: [(Date.today.beginning_of_week - 1.week)..Date.today], int_day_types: Calendar::THURSDAY)).to be_valid end it 'validates that there are no duplicates in dates' do |
