Skip to content

Commit ec6026e

Browse files
authored
2019-11-06-01 (#4487)
2019-11-06-01
2 parents 3a33b9f + d91d1d9 commit ec6026e

9 files changed

Lines changed: 70 additions & 15 deletions

File tree

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ group :test do
9393
gem 'shoulda-matchers', require: false
9494
gem 'timecop'
9595
gem 'vcr'
96+
gem 'webdrivers', '~> 4.0'
9697
gem 'webmock'
9798
end
9899

Gemfile.lock

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ GEM
162162
carrierwave (>= 0.9)
163163
crack (0.4.3)
164164
safe_yaml (~> 1.0.0)
165-
crass (1.0.4)
165+
crass (1.0.5)
166166
css_parser (1.6.0)
167167
addressable
168168
curb (0.9.10)
@@ -356,7 +356,7 @@ GEM
356356
railties (>= 4)
357357
request_store (~> 1.0)
358358
logstash-event (1.2.02)
359-
loofah (2.2.3)
359+
loofah (2.3.1)
360360
crass (~> 1.0.2)
361361
nokogiri (>= 1.5.9)
362362
lumberjack (1.0.13)
@@ -385,7 +385,7 @@ GEM
385385
nenv (0.3.0)
386386
netrc (0.11.0)
387387
nio4r (2.3.1)
388-
nokogiri (1.10.4)
388+
nokogiri (1.10.5)
389389
mini_portile2 (~> 2.4.0)
390390
notiffany (0.1.1)
391391
nenv (~> 0.1)
@@ -678,6 +678,10 @@ GEM
678678
activemodel (>= 5.0)
679679
bindex (>= 0.4.0)
680680
railties (>= 5.0)
681+
webdrivers (4.1.3)
682+
nokogiri (~> 1.6)
683+
rubyzip (>= 1.3.0)
684+
selenium-webdriver (>= 3.0, < 4.0)
681685
webfinger (1.1.0)
682686
activesupport
683687
httpclient (>= 2.4)
@@ -812,6 +816,7 @@ DEPENDENCIES
812816
vcr
813817
warden
814818
web-console
819+
webdrivers (~> 4.0)
815820
webmock
816821
webpacker
817822
xray-rails

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,14 @@ Les informations nécessaire à l'initialisation de la base doivent être pré-c
4343
> create user tps_test with password 'tps_test' superuser;
4444
> \q
4545

46+
4647
### Initialisation de l'environnement de développement
4748

49+
Sous Ubuntu, certains packages doivent être installés au préalable :
50+
51+
sudo apt-get install libcurl3 libcurl3-gnutls libcurl4-openssl-dev libcurl4-gnutls-dev zlib1g-dev
52+
53+
4854
Afin d'initialiser l'environnement de développement, exécutez la commande suivante :
4955

5056
bin/setup

app/controllers/admin/assigns_controller.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ def show
1717

1818
not_assign_scope = current_administrateur.instructeurs.where.not(id: assign_scope.ids)
1919

20-
if params[:filter]
21-
not_assign_scope = not_assign_scope.where("email LIKE ?", "%#{params[:filter]}%")
20+
if params[:filter].present?
21+
filter = params[:filter].downcase.strip
22+
not_assign_scope = not_assign_scope.where('users.email LIKE ?', "%#{filter}%")
2223
end
2324

2425
@instructeurs_not_assign = smart_listing_create :instructeurs_not_assign,

app/lib/api_carto/api.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@ def self.search_cadastre(geojson)
1212
private
1313

1414
def self.call(url, geojson)
15-
params = geojson.to_s
16-
RestClient.post(url, params, content_type: 'application/json')
15+
response = Typhoeus.post(url, body: geojson.to_s, headers: { 'content-type' => 'application/json' })
1716

18-
rescue RestClient::InternalServerError, RestClient::BadGateway, RestClient::GatewayTimeout, RestClient::ServiceUnavailable => e
19-
Rails.logger.error "[ApiCarto] Error on #{url}: #{e}"
20-
raise RestClient::ResourceNotFound
17+
if response.success?
18+
response.body
19+
else
20+
message = response.code == 0 ? response.return_message : response.code.to_s
21+
Rails.logger.error "[ApiCarto] Error on #{url}: #{message}"
22+
raise RestClient::ResourceNotFound
23+
end
2124
end
2225
end

bin/setup

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ chdir APP_ROOT do
1818
system('bundle check') || system!('bundle install')
1919
system! 'bin/yarn install'
2020

21+
puts "\n== Updating webdrivers =="
22+
system! 'RAILS_ENV=test bin/rails webdrivers:chromedriver:update'
2123

2224
puts "\n== Copying sample files =="
2325
unless File.exist?('.env')

bin/update

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ chdir APP_ROOT do
1818
system('bundle check') || system!('bundle install')
1919
system! 'bin/yarn install'
2020

21+
puts "\n== Updating webdrivers =="
22+
system! 'RAILS_ENV=test bin/rails webdrivers:chromedriver:update'
23+
2124
puts "\n== Updating database =="
2225
system! 'bin/rails db:migrate'
2326

spec/controllers/admin/assigns_controller_spec.rb

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,53 @@
22

33
describe Admin::AssignsController, type: :controller do
44
let(:admin) { create(:administrateur) }
5-
let(:procedure) { create :procedure, administrateur: admin }
6-
let(:instructeur) { create :instructeur, administrateurs: [admin] }
75

86
before do
97
sign_in(admin.user)
108
end
119

1210
describe 'GET #show' do
13-
subject { get :show, params: { procedure_id: procedure.id } }
14-
it { expect(subject.status).to eq(200) }
11+
let(:procedure) { create :procedure, administrateur: admin, instructeurs: [instructeur_assigned_1, instructeur_assigned_2] }
12+
let!(:instructeur_assigned_1) { create :instructeur, email: 'instructeur_1@ministere_a.gouv.fr', administrateurs: [admin] }
13+
let!(:instructeur_assigned_2) { create :instructeur, email: 'instructeur_2@ministere_b.gouv.fr', administrateurs: [admin] }
14+
let!(:instructeur_not_assigned_1) { create :instructeur, email: 'instructeur_3@ministere_a.gouv.fr', administrateurs: [admin] }
15+
let!(:instructeur_not_assigned_2) { create :instructeur, email: 'instructeur_4@ministere_b.gouv.fr', administrateurs: [admin] }
16+
let(:filter) { nil }
17+
18+
subject! { get :show, params: { procedure_id: procedure.id, filter: filter } }
19+
20+
it { expect(response.status).to eq(200) }
21+
22+
it 'sets the assigned and not assigned instructeurs' do
23+
expect(assigns(:instructeurs_assign)).to match_array([instructeur_assigned_1, instructeur_assigned_2])
24+
expect(assigns(:instructeurs_not_assign)).to match_array([instructeur_not_assigned_1, instructeur_not_assigned_2])
25+
end
26+
27+
context 'with a search filter' do
28+
let(:filter) { '@ministere_a.gouv.fr' }
29+
30+
it 'filters the unassigned instructeurs' do
31+
expect(assigns(:instructeurs_not_assign)).to match_array([instructeur_not_assigned_1])
32+
end
33+
34+
it 'does not filter the assigned instructeurs' do
35+
expect(assigns(:instructeurs_assign)).to match_array([instructeur_assigned_1, instructeur_assigned_2])
36+
end
37+
38+
context 'when the filter has spaces or a mixed case' do
39+
let(:filter) { ' @ministere_A.gouv.fr ' }
40+
41+
it 'trims spaces and ignores the case' do
42+
expect(assigns(:instructeurs_not_assign)).to match_array([instructeur_not_assigned_1])
43+
end
44+
end
45+
end
1546
end
1647

1748
describe 'PUT #update' do
49+
let(:procedure) { create :procedure, administrateur: admin }
50+
let(:instructeur) { create :instructeur, administrateurs: [admin] }
51+
1852
subject { put :update, params: { instructeur_id: instructeur.id, procedure_id: procedure.id, to: 'assign' } }
1953

2054
it { expect(subject).to redirect_to admin_procedure_assigns_path(procedure_id: procedure.id) }

spec/spec_helper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
c.hook_into :webmock
8484
c.cassette_library_dir = 'spec/fixtures/cassettes'
8585
c.configure_rspec_metadata!
86-
c.ignore_hosts 'test.host'
86+
c.ignore_hosts 'test.host', 'chromedriver.storage.googleapis.com'
8787
end
8888

8989
DatabaseCleaner.strategy = :transaction

0 commit comments

Comments
 (0)