diff --git a/.circleci/config.yml b/.circleci/config.yml index bd4c1e637..ccd163b61 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -65,7 +65,7 @@ jobs: - *bundle_install - run: name: Run rubocop - command: bundle exec rubocop -R + command: bundle exec rubocop - run: name: Run brakeman command: bundle exec brakeman -z diff --git a/.rubocop.yml b/.rubocop.yml index 4919aebc8..fa0601957 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -155,28 +155,28 @@ Layout/RescueEnsureAlignment: Enabled: true Layout/SpaceAfterColon: - Enabled: false + Enabled: true Layout/SpaceAfterComma: Enabled: false Layout/SpaceAfterMethodName: - Enabled: false + Enabled: true Layout/SpaceAfterNot: - Enabled: false + Enabled: true Layout/SpaceAfterSemicolon: - Enabled: false + Enabled: true Layout/SpaceAroundBlockParameters: - Enabled: false + Enabled: true Layout/SpaceAroundEqualsInParameterDefault: - Enabled: false + Enabled: true Layout/SpaceAroundKeyword: - Enabled: false + Enabled: true Layout/SpaceAroundOperators: Enabled: true @@ -185,52 +185,56 @@ Layout/SpaceBeforeBlockBraces: Enabled: false Layout/SpaceBeforeComma: - Enabled: false + Enabled: true Layout/SpaceBeforeComment: - Enabled: false + Enabled: true Layout/SpaceBeforeFirstArg: - Enabled: false + Enabled: true Layout/SpaceBeforeSemicolon: - Enabled: false + Enabled: true Layout/SpaceInLambdaLiteral: - Enabled: false + Enabled: true + EnforcedStyle: require_space Layout/SpaceInsideArrayPercentLiteral: - Enabled: false + Enabled: true Layout/SpaceInsideBlockBraces: - Enabled: false + Enabled: true Layout/SpaceInsideBrackets: - Enabled: false + Enabled: true Layout/SpaceInsideHashLiteralBraces: + Enabled: true + +Layout/SpaceInsideArrayLiteralBrackets: Enabled: false Layout/SpaceInsideParens: - Enabled: false + Enabled: true Layout/SpaceInsidePercentLiteralDelimiters: - Enabled: false + Enabled: true Layout/SpaceInsideRangeLiteral: - Enabled: false + Enabled: true Layout/SpaceInsideStringInterpolation: - Enabled: false + Enabled: true Layout/Tab: - Enabled: false + Enabled: true Layout/TrailingBlankLines: - Enabled: false + Enabled: true Layout/TrailingWhitespace: - Enabled: false + Enabled: true Lint/AmbiguousBlockAssociation: Enabled: false @@ -317,9 +321,6 @@ Lint/IneffectiveAccessModifier: Lint/InheritException: Enabled: false -Lint/InvalidCharacterLiteral: - Enabled: false - Lint/LiteralInCondition: Enabled: false @@ -381,7 +382,7 @@ Lint/StringConversionInInterpolation: Enabled: false Lint/Syntax: - Enabled: false + Enabled: true Lint/UnderscorePrefixedVariableName: Enabled: false @@ -404,6 +405,12 @@ Lint/UnusedBlockArgument: Lint/UnusedMethodArgument: Enabled: false +Lint/UriEscapeUnescape: + Enabled: false + +Lint/UriRegexp: + Enabled: false + Lint/UselessAccessModifier: Enabled: false @@ -452,6 +459,39 @@ Metrics/ParameterLists: Metrics/PerceivedComplexity: Enabled: false +Naming/AccessorMethodName: + Enabled: false + +Naming/AsciiIdentifiers: + Enabled: false + +Naming/BinaryOperatorParameterName: + Enabled: false + +Naming/ClassAndModuleCamelCase: + Enabled: false + +Naming/ConstantName: + Enabled: false + +Naming/FileName: + Enabled: false + +Naming/HeredocDelimiterNaming: + Enabled: false + +Naming/MethodName: + Enabled: false + +Naming/PredicateName: + Enabled: false + +Naming/VariableName: + Enabled: false + +Naming/VariableNumber: + Enabled: false + Performance/Caller: Enabled: true @@ -539,6 +579,9 @@ Rails/ApplicationRecord: Rails/Blank: Enabled: false +Rails/CreateTableWithTimestamps: + Enabled: false + Rails/Date: Enabled: false @@ -554,6 +597,9 @@ Rails/DynamicFindBy: Rails/EnumUniqueness: Enabled: false +Rails/EnvironmentComparison: + Enabled: false + Rails/Exit: Enabled: false @@ -569,9 +615,18 @@ Rails/FindEach: Rails/HasAndBelongsToMany: Enabled: false +Rails/HasManyOrHasOneDependent: + Enabled: false + Rails/HttpPositionalArguments: Enabled: false +Rails/InverseOf: + Enabled: false + +Rails/LexicallyScopedActionFilter: + Enabled: false + Rails/NotNullColumn: Enabled: false @@ -584,6 +639,9 @@ Rails/OutputSafety: Rails/PluralizationGrammar: Enabled: false +Rails/Presence: + Enabled: false + Rails/Present: Enabled: true @@ -617,11 +675,14 @@ Rails/TimeZone: Rails/UniqBeforePluck: Enabled: false +Rails/UnknownEnv: + Enabled: false + Rails/Validation: Enabled: false Rails: - Enabled: false + Enabled: true RSpec/Focused: Enabled: true @@ -638,9 +699,6 @@ Security/MarshalLoad: Security/YAMLLoad: Enabled: false -Style/AccessorMethodName: - Enabled: false - Style/Alias: Enabled: false @@ -653,9 +711,6 @@ Style/ArrayJoin: Style/AsciiComments: Enabled: false -Style/AsciiIdentifiers: - Enabled: false - Style/Attr: Enabled: false @@ -683,9 +738,6 @@ Style/CaseEquality: Style/CharacterLiteral: Enabled: false -Style/ClassAndModuleCamelCase: - Enabled: false - Style/ClassAndModuleChildren: Enabled: false @@ -710,13 +762,16 @@ Style/CommandLiteral: Style/CommentAnnotation: Enabled: false +Style/CommentedKeyword: + Enabled: false + Style/ConditionalAssignment: Enabled: false -Style/ConstantName: +Style/Copyright: Enabled: false -Style/Copyright: +Style/DateTime: Enabled: false Style/DefWithParentheses: @@ -755,10 +810,10 @@ Style/Encoding: Style/EndBlock: Enabled: false -Style/EvenOdd: +Style/EvalWithLocation: Enabled: false -Style/FileName: +Style/EvenOdd: Enabled: false Style/FlipFlop: @@ -839,15 +894,15 @@ Style/MethodDefParentheses: Style/MethodMissing: Enabled: false -Style/MethodName: - Enabled: false - Style/MissingElse: Enabled: false Style/MixinGrouping: Enabled: false +Style/MixinUsage: + Enabled: false + Style/ModuleFunction: Enabled: false @@ -911,9 +966,6 @@ Style/NumericPredicate: Style/OneLineConditional: Enabled: false -Style/OpMethod: - Enabled: false - Style/OptionHash: Enabled: false @@ -935,9 +987,6 @@ Style/PercentQLiterals: Style/PerlBackrefs: Enabled: false -Style/PredicateName: - Enabled: false - Style/PreferredHashMethods: Enabled: false @@ -947,6 +996,9 @@ Style/Proc: Style/RaiseArgs: Enabled: false +Style/RandomWithOffset: + Enabled: false + Style/RedundantBegin: Enabled: false @@ -971,6 +1023,9 @@ Style/RegexpLiteral: Style/RescueModifier: Enabled: false +Style/RescueStandardError: + Enabled: false + Style/SafeNavigation: Enabled: false @@ -1049,12 +1104,6 @@ Style/UnneededPercentQ: Style/VariableInterpolation: Enabled: false -Style/VariableName: - Enabled: false - -Style/VariableNumber: - Enabled: false - Style/WhenThen: Enabled: false diff --git a/Gemfile b/Gemfile index c7e41c398..591ce5f76 100644 --- a/Gemfile +++ b/Gemfile @@ -20,6 +20,8 @@ gem 'sdoc', '~> 0.4.0', group: :doc # Enable deep clone of active record models gem 'deep_cloneable', '~> 2.2.1' +gem 'warden', git: 'https://github.com/hassox/warden.git', branch: 'master' + # Use Unicorn as the app server gem 'unicorn' diff --git a/Gemfile.lock b/Gemfile.lock index f3a9f14d7..df20eaa38 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,11 @@ +GIT + remote: https://github.com/hassox/warden.git + revision: a4b197e0b28e7b576b0745b0f6aeaed8dbb774a4 + branch: master + specs: + warden (1.2.8) + rack (>= 1.0) + GIT remote: https://github.com/mina-deploy/mina.git revision: 343a7ab672d8b4f0ddb84ec240cde7d94b46397a @@ -133,6 +141,7 @@ GEM carrierwave (>= 0.9) crack (0.4.3) safe_yaml (~> 1.0.0) + crass (1.0.3) daemons (1.2.4) database_cleaner (1.5.3) datetime_picker_rails (0.0.7) @@ -142,7 +151,7 @@ GEM activerecord (>= 3.1.0, < 5.2.0) delayed_cron_job (0.7.2) delayed_job (>= 4.1) - delayed_job (4.1.3) + delayed_job (4.1.4) activesupport (>= 3.0, < 5.2) delayed_job_active_record (4.1.2) activerecord (>= 3.0, < 5.2) @@ -151,14 +160,14 @@ GEM activerecord (> 3.0.0) delayed_job (> 2.0.3) sinatra (>= 1.4.4) - devise (4.2.0) + devise (4.4.0) bcrypt (~> 3.0) orm_adapter (~> 0.1) - railties (>= 4.1.0, < 5.1) + railties (>= 4.1.0, < 5.2) responders warden (~> 1.2.3) diff-lcs (1.2.5) - domain_name (0.5.20161129) + domain_name (0.5.20170404) unf (>= 0.0.5, < 1.0.0) dotenv (2.2.0) dotenv-rails (2.2.0) @@ -389,7 +398,7 @@ GEM leaflet-markercluster-rails (0.7.0) railties (>= 3.1) leaflet-rails (0.7.7) - libv8 (3.16.14.17) + libv8 (3.16.14.19) listen (3.1.5) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) @@ -400,7 +409,8 @@ GEM activesupport (>= 4.0) logstash-event (~> 1.2.0) request_store - loofah (2.0.3) + loofah (2.1.1) + crass (~> 1.0.2) nokogiri (>= 1.5.9) lumberjack (1.0.10) mail (2.6.4) @@ -416,7 +426,7 @@ GEM mime-types-data (3.2016.0521) mimemagic (0.3.2) mini_portile2 (2.3.0) - minitest (5.10.3) + minitest (5.11.1) momentjs-rails (2.17.1) railties (>= 3.1) multi_json (1.12.1) @@ -465,9 +475,9 @@ GEM openstack (3.3.7) json orm_adapter (0.5.0) - parallel (1.11.2) - parser (2.4.0.0) - ast (~> 2.2) + parallel (1.12.1) + parser (2.4.0.2) + ast (~> 2.3) pdf-core (0.6.1) pg (0.19.0) powerpack (0.1.1) @@ -485,7 +495,7 @@ GEM byebug (~> 9.0) pry (~> 0.10) public_suffix (2.0.5) - rack (2.0.1) + rack (2.0.3) rack-handlers (0.7.3) rack rack-mini-profiler (0.10.7) @@ -527,10 +537,9 @@ GEM method_source rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rainbow (2.2.2) - rake + rainbow (3.0.0) raindrops (0.17.0) - rake (12.0.0) + rake (12.3.0) rb-fsevent (0.9.8) rb-inotify (0.9.7) ffi (>= 0.5.0) @@ -542,9 +551,10 @@ GEM rdoc (4.3.0) ref (2.0.0) request_store (1.3.1) - responders (2.3.0) - railties (>= 4.2.0, < 5.1) - rest-client (2.0.0) + responders (2.4.0) + actionpack (>= 4.2.0, < 5.3) + railties (>= 4.2.0, < 5.3) + rest-client (2.0.2) http-cookie (>= 1.0.2, < 2.0) mime-types (>= 1.16, < 4.0) netrc (~> 0.8) @@ -578,16 +588,16 @@ GEM rspec-support (3.5.0) rspec_junit_formatter (0.3.0) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (0.49.1) + rubocop (0.52.1) parallel (~> 1.10) - parser (>= 2.3.3.1, < 3.0) + parser (>= 2.4.0.2, < 3.0) powerpack (~> 0.1) - rainbow (>= 1.99.1, < 3.0) + rainbow (>= 2.2.2, < 4.0) ruby-progressbar (~> 1.7) unicode-display_width (~> 1.0, >= 1.0.1) rubocop-rspec-focused (0.1.0) rubocop (>= 0.37) - ruby-progressbar (1.8.1) + ruby-progressbar (1.9.0) ruby_dep (1.5.0) ruby_parser (3.10.1) sexp_processor (~> 4.9) @@ -660,10 +670,10 @@ GEM i18n json (>= 1.4.3) sysexits (1.2.0) - therubyracer (0.12.2) - libv8 (~> 3.16.14.0) + therubyracer (0.12.3) + libv8 (~> 3.16.14.15) ref - thor (0.19.4) + thor (0.20.0) thread_safe (0.3.6) tilt (2.0.8) timecop (0.8.1) @@ -674,12 +684,12 @@ GEM turbolinks-source (5.0.0) tzinfo (1.2.4) thread_safe (~> 0.1) - uglifier (3.0.4) + uglifier (4.1.3) execjs (>= 0.3.0, < 3) unf (0.1.4) unf_ext - unf_ext (0.0.7.2) - unicode-display_width (1.2.1) + unf_ext (0.0.7.4) + unicode-display_width (1.3.0) unicode_utils (1.4.0) unicorn (5.2.0) kgio (~> 2.6) @@ -692,8 +702,6 @@ GEM activemodel (>= 3.0.0) addressable vcr (3.0.3) - warden (1.2.6) - rack (>= 1.0) web-console (3.4.0) actionview (>= 5.0) activemodel (>= 5.0) @@ -804,6 +812,7 @@ DEPENDENCIES unicode_utils unicorn vcr + warden! web-console webmock xray-rails diff --git a/README.md b/README.md index e22c836c8..1e50be21a 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,9 @@ Téléprocédures Simplifiées, ou TPS pour les intimes, est une plateforme 100 ### Tests - Chrome +- chromedriver : + * Mac : `brew install chromedriver` + * Linux : voir https://sites.google.com/a/chromium.org/chromedriver/downloads ## Initialisation de l'environnement de développement @@ -116,7 +119,7 @@ Pour exécuter les tests de l'application, plusieurs possibilités : ## Linting -- Faire tourner RuboCop : `bundle exec rubocop -R` +- Faire tourner RuboCop : `bundle exec rubocop` - Faire tourner Brakeman : `bundle exec brakeman -z` - Linter les fichiers HAML : `bundle exec haml-lint app/views/` - Linter les fichiers SCSS : `bundle exec scss-lint app/assets/stylesheets/` @@ -139,5 +142,5 @@ Pour exécuter les tests de l'application, plusieurs possibilités : - lister les comptes super admin : `bundle exec rake admin:list` -- supprimer un compte super admin : +- supprimer un compte super admin : `bundle exec rake admin:delete_admin[email-du-compte-github@exemple.com]` diff --git a/app/controllers/admin/types_de_champ_controller.rb b/app/controllers/admin/types_de_champ_controller.rb index 912008ddb..b05c52fdd 100644 --- a/app/controllers/admin/types_de_champ_controller.rb +++ b/app/controllers/admin/types_de_champ_controller.rb @@ -7,7 +7,7 @@ class Admin::TypesDeChampController < AdminController create_facade render 'show', format: :js rescue ActiveRecord::RecordNotFound - render json: {message: 'Champ not found'}, status: 404 + render json: { message: 'Champ not found' }, status: 404 end def show diff --git a/app/controllers/admin/types_de_champ_private_controller.rb b/app/controllers/admin/types_de_champ_private_controller.rb index 28fb9330f..a4cea0946 100644 --- a/app/controllers/admin/types_de_champ_private_controller.rb +++ b/app/controllers/admin/types_de_champ_private_controller.rb @@ -7,7 +7,7 @@ class Admin::TypesDeChampPrivateController < AdminController create_facade render 'admin/types_de_champ/show', format: :js rescue ActiveRecord::RecordNotFound - render json: {message: 'Champ not found'}, status: 404 + render json: { message: 'Champ not found' }, status: 404 end def show diff --git a/app/controllers/administrations/omniauth_callbacks_controller.rb b/app/controllers/administrations/omniauth_callbacks_controller.rb index 71910756f..f0e878bc3 100644 --- a/app/controllers/administrations/omniauth_callbacks_controller.rb +++ b/app/controllers/administrations/omniauth_callbacks_controller.rb @@ -3,7 +3,7 @@ class Administrations::OmniauthCallbacksController < Devise::OmniauthCallbacksCo administration = Administration.from_omniauth(request.env["omniauth.auth"]) if administration.present? sign_in administration - redirect_to administrations_path + redirect_to manager_administrateurs_path else flash[:alert] = "Compte GitHub non autorisé" redirect_to root_path diff --git a/app/controllers/administrations_controller.rb b/app/controllers/administrations_controller.rb deleted file mode 100644 index f600ecfd5..000000000 --- a/app/controllers/administrations_controller.rb +++ /dev/null @@ -1,39 +0,0 @@ -class AdministrationsController < ApplicationController - include SmartListing::Helper::ControllerExtensions - helper SmartListing::Helper - - before_action :authenticate_administration! - - def index - @admin = Administrateur.new - - @admins = smart_listing_create :admins, - Administrateur.all.order(:email), - partial: "administrations/list", - array: true - end - - def create - administrateur = current_administration.invite_admin(create_administrateur_params[:email]) - - if administrateur.errors.empty? - flash.notice = "Administrateur créé" - else - flash.alert = administrateur.errors.full_messages - end - - redirect_to administrations_path - end - - def update - Administrateur.find_inactive_by_id(params[:id]).invite! - - redirect_to administrations_path - end - - private - - def create_administrateur_params - params.require(:administrateur).permit(:email) - end -end diff --git a/app/controllers/api/v1/procedures_controller.rb b/app/controllers/api/v1/procedures_controller.rb index 74895e845..efdca6fa3 100644 --- a/app/controllers/api/v1/procedures_controller.rb +++ b/app/controllers/api/v1/procedures_controller.rb @@ -8,7 +8,7 @@ class API::V1::ProceduresController < APIController def show procedure = current_administrateur.procedures.find(params[:id]).decorate - render json: {procedure: ProcedureSerializer.new(procedure).as_json} + render json: { procedure: ProcedureSerializer.new(procedure).as_json } rescue ActiveRecord::RecordNotFound => e Rails.logger.error(e.message) render json: {}, status: 404 diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 524746fec..5a534f4ce 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -14,7 +14,7 @@ class ApplicationController < ActionController::Base end def default_url_options - return {protocol: 'https'} if Rails.env.staging? || Rails.env.production? + return { protocol: 'https' } if Rails.env.staging? || Rails.env.production? {} end diff --git a/app/controllers/ban/search_controller.rb b/app/controllers/ban/search_controller.rb index ec079347c..aee81b301 100644 --- a/app/controllers/ban/search_controller.rb +++ b/app/controllers/ban/search_controller.rb @@ -17,6 +17,6 @@ class Ban::SearchController < ApplicationController lat = point.y.to_s end - render json: {lon: lon, lat: lat, zoom: '14', dossier_id: params[:dossier_id]} + render json: { lon: lon, lat: lat, zoom: '14', dossier_id: params[:dossier_id] } end end diff --git a/app/controllers/commentaires_controller.rb b/app/controllers/commentaires_controller.rb index d9a9d88c6..af77f59d0 100644 --- a/app/controllers/commentaires_controller.rb +++ b/app/controllers/commentaires_controller.rb @@ -1,16 +1,4 @@ class CommentairesController < ApplicationController - def index - @facade = DossierFacades.new( - params[:dossier_id], - (current_gestionnaire || current_user).email, - params[:champs_id] - ) - render layout: false - rescue ActiveRecord::RecordNotFound - flash.alert = t('errors.messages.dossier_not_found') - redirect_to url_for(controller: '/') - end - def create @commentaire = Commentaire.new @commentaire.champ = @commentaire.dossier.champs.find(params[:champ_id]) if params[:champ_id] diff --git a/app/controllers/france_connect/particulier_controller.rb b/app/controllers/france_connect/particulier_controller.rb index 283660636..8116e9b2b 100644 --- a/app/controllers/france_connect/particulier_controller.rb +++ b/app/controllers/france_connect/particulier_controller.rb @@ -1,87 +1,39 @@ class FranceConnect::ParticulierController < ApplicationController + before_action :redirect_to_login_if_fc_aborted, only: [:callback] + def login redirect_to FranceConnectService.authorization_uri end def callback - if params[:code].nil? - return redirect_to new_user_session_path + fetched_fci = FranceConnectService.retrieve_user_informations_particulier(params[:code]) + + fci = FranceConnectInformation + .find_by(france_connect_particulier_id: fetched_fci[:france_connect_particulier_id]) || + fetched_fci.tap { |object| object.save } + + if fci.user.nil? + user = User.find_or_create_by(email: fci.email_france_connect) do |new_user| + new_user.password = Devise.friendly_token[0, 20] + end + + fci.update_attribute('user_id', user.id) end - fetched_fc_information = FranceConnectService.retrieve_user_informations_particulier(params[:code]) - - france_connect_information = FranceConnectInformation - .find_by(france_connect_particulier_id: fetched_fc_information[:france_connect_particulier_id]) - - if france_connect_information.nil? - fetched_fc_information.save - france_connect_information = fetched_fc_information - end - - user = france_connect_information.user - salt = FranceConnectSaltService.new(france_connect_information).salt - - if user.nil? - redirect_to france_connect_particulier_new_path(fci_id: france_connect_information.id, salt: salt) - else - connect_france_connect_particulier(user) - end + connect_france_connect_particulier(fci.user) rescue Rack::OAuth2::Client::Error => e Rails.logger.error e.message redirect_france_connect_error_connection end - def new - return redirect_france_connect_error_connection if !valid_salt_and_fci_id_params? - - france_connect_information = FranceConnectInformation.find(params[:fci_id]) - @user = User.new(france_connect_information: france_connect_information).decorate - rescue ActiveRecord::RecordNotFound - redirect_france_connect_error_connection - end - - def check_email - return redirect_france_connect_error_connection if !valid_salt_and_fci_id_params? - - user = User.find_by_email(params[:user][:email_france_connect]) - - return create if user.nil? - - if params[:user][:password].present? - - if user.valid_password?(params[:user][:password]) - user.france_connect_information = FranceConnectInformation.find(params[:fci_id]) - - return connect_france_connect_particulier user - else - flash.now.alert = 'Mot de passe invalide' - end - end - - france_connect_information = FranceConnectInformation.find(params[:fci_id]) - france_connect_information.update_attribute(:email_france_connect, params[:user][:email_france_connect]) - - @user = User.new(france_connect_information: france_connect_information).decorate - end - - def create - user = User.new email: params[:user][:email_france_connect] - user.password = Devise.friendly_token[0, 20] - - if !user.valid? - flash.alert = 'Email non valide' - - return redirect_to france_connect_particulier_new_path fci_id: params[:fci_id], salt: params[:salt], user: {email_france_connect: params[:user]['email_france_connect']} - end - - user.save - FranceConnectInformation.find(params[:fci_id]).update_attribute(:user, user) - - connect_france_connect_particulier user - end - private + def redirect_to_login_if_fc_aborted + if params[:code].empty? + redirect_to new_user_session_path + end + end + def connect_france_connect_particulier user sign_out :user if user_signed_in? sign_out :gestionnaire if gestionnaire_signed_in? @@ -89,19 +41,13 @@ class FranceConnect::ParticulierController < ApplicationController sign_in user - user.loged_in_with_france_connect = 'particulier' - user.save + user.update_attribute('loged_in_with_france_connect', 'particulier') - redirect_to stored_location_for(current_user) || signed_in_root_path(current_user) + redirect_to stored_location_for(current_user) || root_path(current_user) end def redirect_france_connect_error_connection flash.alert = t('errors.messages.france_connect.connexion') redirect_to(new_user_session_path) end - - def valid_salt_and_fci_id_params? - france_connect_information = FranceConnectInformation.find(params[:fci_id]) - FranceConnectSaltService.new(france_connect_information).valid? params[:salt] - end end diff --git a/app/controllers/manager/administrateurs_controller.rb b/app/controllers/manager/administrateurs_controller.rb index 71b37a9ed..fccc55c5e 100644 --- a/app/controllers/manager/administrateurs_controller.rb +++ b/app/controllers/manager/administrateurs_controller.rb @@ -1,21 +1,28 @@ module Manager class AdministrateursController < Manager::ApplicationController - # To customize the behavior of this controller, - # simply overwrite any of the RESTful actions. For example: - # - # def index - # super - # @resources = Administrateur. - # page(params[:page]). - # per(10) - # end + def create + administrateur = current_administration.invite_admin(create_administrateur_params[:email]) - # Define a custom finder by overriding the `find_resource` method: - # def find_resource(param) - # Administrateur.find_by!(slug: param) - # end + if administrateur.errors.empty? + flash.notice = "Administrateur créé" + redirect_to manager_administrateurs_path + else + render :new, locals: { + page: Administrate::Page::Form.new(dashboard, administrateur), + } + end + end - # See https://administrate-prototype.herokuapp.com/customizing_controller_actions - # for more information + def reinvite + Administrateur.find_inactive_by_id(params[:id]).invite! + flash.notice = "Invitation renvoyée" + redirect_to manager_administrateur_path(params[:id]) + end + + private + + def create_administrateur_params + params.require(:administrateur).permit(:email) + end end end diff --git a/app/controllers/manager/application_controller.rb b/app/controllers/manager/application_controller.rb index 8d2db8e84..4e76a2af1 100644 --- a/app/controllers/manager/application_controller.rb +++ b/app/controllers/manager/application_controller.rb @@ -1,23 +1,21 @@ -# All Administrate controllers inherit from this `Admin::ApplicationController`, -# making it the ideal place to put authentication logic or other -# before_actions. -# -# If you want to add pagination or other controller-level concerns, -# you're free to overwrite the RESTful controller actions. module Manager class ApplicationController < Administrate::ApplicationController before_action :authenticate_administration! before_action :default_params - # Override this value to specify the number of elements to display at a time - # on index pages. Defaults to 20. - # def records_per_page - # params[:per_page] || 20 - # end - def default_params params[:order] ||= "created_at" params[:direction] ||= "desc" end + + protected + + def authenticate_administration! + if administration_signed_in? + super + else + redirect_to manager_sign_in_path + end + end end end diff --git a/app/controllers/new_gestionnaire/procedures_controller.rb b/app/controllers/new_gestionnaire/procedures_controller.rb index dd60ffbae..f4ceed371 100644 --- a/app/controllers/new_gestionnaire/procedures_controller.rb +++ b/app/controllers/new_gestionnaire/procedures_controller.rb @@ -271,7 +271,7 @@ module NewGestionnaire end when 'self' order = "dossiers.#{column} #{order}" - when'france_connect_information' + when 'france_connect_information' includes = { user: :france_connect_information } order = "france_connect_informations.#{column} #{order}" when 'type_de_champ', 'type_de_champ_private' @@ -315,7 +315,7 @@ module NewGestionnaire end end.each do |group_key, fields| case group_key - when'france_connect_information' + when 'france_connect_information' @dossiers = @dossiers.includes({ user: :france_connect_information }) when 'type_de_champ_group' if fields.any? { |field| field['table'] == 'type_de_champ' } diff --git a/app/controllers/root_controller.rb b/app/controllers/root_controller.rb index 7137999c5..aa78ee3d0 100644 --- a/app/controllers/root_controller.rb +++ b/app/controllers/root_controller.rb @@ -9,7 +9,7 @@ class RootController < ApplicationController elsif user_signed_in? return redirect_to users_dossiers_path elsif administration_signed_in? - return redirect_to administrations_path + return redirect_to manager_root_path end render 'landing' diff --git a/app/controllers/stats_controller.rb b/app/controllers/stats_controller.rb index 342dcd762..470710103 100644 --- a/app/controllers/stats_controller.rb +++ b/app/controllers/stats_controller.rb @@ -64,7 +64,7 @@ class StatsController < ApplicationController .count .to_a .sort_by { |a| a[0] } - .map { |x, y| { x => (sum += y)} } + .map { |x, y| { x => (sum += y) } } .reduce({}, :merge) end diff --git a/app/controllers/users/carte_controller.rb b/app/controllers/users/carte_controller.rb index 8c6314033..08f04f9cd 100644 --- a/app/controllers/users/carte_controller.rb +++ b/app/controllers/users/carte_controller.rb @@ -48,15 +48,15 @@ class Users::CarteController < UsersController lat = point.y.to_s end - render json: {lon: lon, lat: lat, zoom: zoom, dossier_id: params[:dossier_id]} + render json: { lon: lon, lat: lat, zoom: zoom, dossier_id: params[:dossier_id] } end def get_qp - render json: {quartier_prioritaires: ModuleApiCartoService.generate_qp(JSON.parse(params[:coordinates]))} + render json: { quartier_prioritaires: ModuleApiCartoService.generate_qp(JSON.parse(params[:coordinates])) } end def get_cadastre - render json: {cadastres: ModuleApiCartoService.generate_cadastre(JSON.parse(params[:coordinates]))} + render json: { cadastres: ModuleApiCartoService.generate_cadastre(JSON.parse(params[:coordinates])) } end def self.route_authorization diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index 3a95e5199..9c042590e 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -181,7 +181,7 @@ class Users::DossiersController < UsersController flash.alert = t('errors.messages.invalid_siret') @facade = facade params[:dossier_id] - render '/dossiers/new_siret', formats: :js, locals: {invalid_siret: siret} + render '/dossiers/new_siret', formats: :js, locals: { invalid_siret: siret } end def update_params diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 15c7ba21f..a3545612e 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -5,7 +5,7 @@ class UsersController < ApplicationController redirect_to root_path end - def current_user_dossier dossier_id=nil + def current_user_dossier dossier_id = nil dossier_id ||= params[:dossier_id] || params[:id] dossier = Dossier.find(dossier_id) diff --git a/app/dashboards/administrateur_dashboard.rb b/app/dashboards/administrateur_dashboard.rb index a5cc3b366..d8f7afe5e 100644 --- a/app/dashboards/administrateur_dashboard.rb +++ b/app/dashboards/administrateur_dashboard.rb @@ -12,7 +12,9 @@ class AdministrateurDashboard < Administrate::BaseDashboard email: Field::String, created_at: Field::DateTime, updated_at: Field::DateTime, - procedures: Field::HasMany, + procedures: Field::HasMany.with_options(limit: 20), + registration_state: Field::String.with_options(searchable: false), + current_sign_in_at: Field::DateTime, }.freeze # COLLECTION_ATTRIBUTES @@ -24,6 +26,7 @@ class AdministrateurDashboard < Administrate::BaseDashboard :email, :created_at, :procedures, + :registration_state, ].freeze # SHOW_PAGE_ATTRIBUTES @@ -33,13 +36,17 @@ class AdministrateurDashboard < Administrate::BaseDashboard :email, :created_at, :updated_at, + :registration_state, + :current_sign_in_at, :procedures, ].freeze # FORM_ATTRIBUTES # an array of attributes that will be displayed # on the model's form (`new` and `edit`) pages. - FORM_ATTRIBUTES = [].freeze + FORM_ATTRIBUTES = [ + :email + ].freeze # Overwrite this method to customize how procedures are displayed # across all pages of the admin dashboard. diff --git a/app/decorators/dossier_decorator.rb b/app/decorators/dossier_decorator.rb index e4f7b3cb5..c8d71c0b9 100644 --- a/app/decorators/dossier_decorator.rb +++ b/app/decorators/dossier_decorator.rb @@ -24,7 +24,7 @@ class DossierDecorator < Draper::Decorator end end - def self.case_state_fr state=self.state + def self.case_state_fr state = self.state h.t("activerecord.attributes.dossier.state.#{state}") end end diff --git a/app/lib/carto/sgmap/api.rb b/app/lib/carto/sgmap/api.rb index ef72fc062..9ab7a9d9e 100644 --- a/app/lib/carto/sgmap/api.rb +++ b/app/lib/carto/sgmap/api.rb @@ -4,12 +4,12 @@ class CARTO::SGMAP::API def self.search_qp(geojson) endpoint = "/quartiers-prioritaires/search" - call(base_url + endpoint, {geojson: geojson.to_s}) + call(base_url + endpoint, { geojson: geojson.to_s }) end def self.search_cadastre(geojson) endpoint = "/cadastre/geometrie" - call(base_url + endpoint, {geojson: geojson.to_s}) + call(base_url + endpoint, { geojson: geojson.to_s }) end private diff --git a/app/models/administrateur.rb b/app/models/administrateur.rb index 18ad7e7ae..7048cb473 100644 --- a/app/models/administrateur.rb +++ b/app/models/administrateur.rb @@ -43,9 +43,9 @@ class Administrateur < ActiveRecord::Base if active? raise "Impossible d'inviter un utilisateur déjà actif !" end - + reset_password_token = set_reset_password_token - + AdministrationMailer.invite_admin(self, reset_password_token).deliver_now! reset_password_token diff --git a/app/models/administration.rb b/app/models/administration.rb index a2e3b56fa..b9805b3cc 100644 --- a/app/models/administration.rb +++ b/app/models/administration.rb @@ -10,7 +10,7 @@ class Administration < ActiveRecord::Base def invite_admin(email) administrateur = Administrateur.new({ email: email, - active: false + active: false }) administrateur.password = administrateur.password_confirmation = SecureRandom.hex diff --git a/app/models/avis.rb b/app/models/avis.rb index 2f9aac2c9..e6d78c580 100644 --- a/app/models/avis.rb +++ b/app/models/avis.rb @@ -10,7 +10,7 @@ class Avis < ApplicationRecord default_scope { joins(:dossier) } scope :with_answer, -> { where.not(answer: nil) } scope :without_answer, -> { where(answer: nil) } - scope :for_dossier, ->(dossier_id) { where(dossier_id: dossier_id) } + scope :for_dossier, -> (dossier_id) { where(dossier_id: dossier_id) } scope :by_latest, -> { order(updated_at: :desc) } scope :updated_since?, -> (date) { where('avis.updated_at > ?', date) } diff --git a/app/models/cerfa.rb b/app/models/cerfa.rb index d1da7b9d3..8336e4e8a 100644 --- a/app/models/cerfa.rb +++ b/app/models/cerfa.rb @@ -3,7 +3,7 @@ class Cerfa < ActiveRecord::Base belongs_to :user mount_uploader :content, CerfaUploader - validates :content, :file_size => {:maximum => 20.megabytes} + validates :content, :file_size => { :maximum => 20.megabytes } after_save :internal_notification, if: Proc.new { dossier.present? } diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 7503197f8..25b022407 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -57,7 +57,7 @@ class Dossier < ActiveRecord::Base scope :en_cours, -> { not_archived.state_en_construction_ou_instruction } scope :without_followers, -> { left_outer_joins(:follows).where(follows: { id: nil }) } scope :with_unread_notifications, -> { where(notifications: { already_read: false }) } - scope :followed_by , -> (gestionnaire) { joins(:follows).where(follows: { gestionnaire: gestionnaire }) } + scope :followed_by, -> (gestionnaire) { joins(:follows).where(follows: { gestionnaire: gestionnaire }) } accepts_nested_attributes_for :individual @@ -273,9 +273,9 @@ class Dossier < ActiveRecord::Base when 'etablissement' self.etablissement&.send(column) when 'type_de_champ' - self.champs.find {|c| c.type_de_champ_id == column.to_i }.value + self.champs.find { |c| c.type_de_champ_id == column.to_i }.value when 'type_de_champ_private' - self.champs_private.find {|c| c.type_de_champ_id == column.to_i }.value + self.champs_private.find { |c| c.type_de_champ_id == column.to_i }.value end end diff --git a/app/models/gestionnaire.rb b/app/models/gestionnaire.rb index 4a71848a9..02cd33e81 100644 --- a/app/models/gestionnaire.rb +++ b/app/models/gestionnaire.rb @@ -177,7 +177,7 @@ class Gestionnaire < ActiveRecord::Base } ] - couples.include?({table: table, column: column}) + couples.include?({ table: table, column: column }) end def annotations_hash(demande, annotations_privees, avis, messagerie) diff --git a/app/models/piece_justificative.rb b/app/models/piece_justificative.rb index 468fb0fa7..799374d8b 100644 --- a/app/models/piece_justificative.rb +++ b/app/models/piece_justificative.rb @@ -10,7 +10,7 @@ class PieceJustificative < ActiveRecord::Base alias_attribute :type, :type_de_piece_justificative_id mount_uploader :content, PieceJustificativeUploader - validates :content, :file_size => {:maximum => 20.megabytes} + validates :content, :file_size => { :maximum => 20.megabytes } validates :content, presence: true, allow_blank: false, allow_nil: false after_save :internal_notification, if: Proc.new { dossier.present? } diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 7ca38294b..0d81f0a3a 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -220,14 +220,14 @@ class Procedure < ActiveRecord::Base end types_de_champ - .reject { |tdc| ['header_section', 'explication'].include?(tdc.type_champ ) } + .reject { |tdc| ['header_section', 'explication'].include?(tdc.type_champ) } .each do |type_de_champ| fields << field_hash(type_de_champ.libelle, 'type_de_champ', type_de_champ.id.to_s) end types_de_champ_private - .reject { |tdc| ['header_section', 'explication'].include?(tdc.type_champ ) } + .reject { |tdc| ['header_section', 'explication'].include?(tdc.type_champ) } .each do |type_de_champ| fields << field_hash(type_de_champ.libelle, 'type_de_champ_private', type_de_champ.id.to_s) diff --git a/app/services/france_connect_salt_service.rb b/app/services/france_connect_salt_service.rb deleted file mode 100644 index 97d5d83d0..000000000 --- a/app/services/france_connect_salt_service.rb +++ /dev/null @@ -1,16 +0,0 @@ -class FranceConnectSaltService - attr_reader :model - - def initialize france_connect_information - raise 'Not a FranceConnectInformation class' if france_connect_information.class != FranceConnectInformation - @model = france_connect_information - end - - def valid? test_salt - salt == test_salt - end - - def salt - Digest::MD5.hexdigest(model.france_connect_particulier_id + model.given_name + model.family_name + FRANCE_CONNECT[:particulier][:secret] + DateTime.now.to_date.to_s) - end -end diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb index aacbc527c..8d84d172f 100644 --- a/app/services/notification_service.rb +++ b/app/services/notification_service.rb @@ -1,5 +1,5 @@ class NotificationService - def initialize type_notif, dossier_id, attribut_change='' + def initialize type_notif, dossier_id, attribut_change = '' @type_notif = type_notif @dossier_id = dossier_id @@ -22,7 +22,7 @@ class NotificationService end end - def text_for_notif attribut='' + def text_for_notif attribut = '' case @type_notif when 'commentaire' "#{notification.liste.size + 1} nouveau(x) commentaire(s) déposé(s)." diff --git a/app/services/types_de_champ_service.rb b/app/services/types_de_champ_service.rb index a2e523007..efb546009 100644 --- a/app/services/types_de_champ_service.rb +++ b/app/services/types_de_champ_service.rb @@ -1,5 +1,5 @@ class TypesDeChampService - def self.create_update_procedure_params(params, private=false) + def self.create_update_procedure_params(params, private = false) attributes = (private ? 'types_de_champ_private_attributes' : 'types_de_champ_attributes') params_with_ordered_champs = order_champs(params, attributes) diff --git a/app/views/administrations/_list.html.haml b/app/views/administrations/_list.html.haml deleted file mode 100644 index e17abfa15..000000000 --- a/app/views/administrations/_list.html.haml +++ /dev/null @@ -1,37 +0,0 @@ -.card - - if smart_listing.present? - %table.table - %thead - %th.col-xs-4= smart_listing.sortable 'Email', :email - %th.col-xs-4= smart_listing.sortable 'Date de dernière connexion', :last_sign_in_at - %th.col-xs-2 État - %th.col-xs-2 Procédure active - %th.col-xs-2 Dossier en cours - - - @admins.each do |admin| - %tr - %td - = admin.email - %td - - if admin.last_sign_in_at.present? - = time_ago_in_words(l(admin.last_sign_in_at, format: "%d/%m/%Y %H:%M UTC +02:00")) - ( - = admin.last_sign_in_at.localtime.strftime('%d/%m/%Y') - ) - %td - - if admin.invitation_expired? - = link_to admin.registration_state, administration_path(admin), remote: true, method: :patch - - else - = admin.registration_state - %td - = admin.procedures.publiees.count - %td - - total_dossier = 0 - - admin.procedures.each do |procedure| total_dossier += procedure.dossiers.state_not_brouillon.count end - = total_dossier - = smart_listing.paginate - = smart_listing.pagination_per_page_links - - - else - %h4.center - Aucun administrateur créé diff --git a/app/views/administrations/index.html.haml b/app/views/administrations/index.html.haml deleted file mode 100644 index 730a7b487..000000000 --- a/app/views/administrations/index.html.haml +++ /dev/null @@ -1,15 +0,0 @@ -.container - .mt-1 - = form_for @admin, url: { controller: 'administrations', action: :create } do |f| - .form-group.form-inline.text-center - = f.text_field :email, placeholder: :email, class: 'form-control' - - = f.submit 'Créer un administrateur', class: 'btn btn-success', id: 'submit_new_administrateur' - - = smart_listing_render :admins - - %br - %br - - .text-center - = link_to 'Deconnexion', administrations_sign_out_path, method: :delete diff --git a/app/views/administrations/index.js.erb b/app/views/administrations/index.js.erb deleted file mode 100644 index a8a88c76e..000000000 --- a/app/views/administrations/index.js.erb +++ /dev/null @@ -1 +0,0 @@ -<%= smart_listing_update :admins %> diff --git a/app/views/france_connect/particulier/check_email.html.haml b/app/views/france_connect/particulier/check_email.html.haml deleted file mode 100644 index 9922adda2..000000000 --- a/app/views/france_connect/particulier/check_email.html.haml +++ /dev/null @@ -1,23 +0,0 @@ -%h2.text-info - = image_tag('logo_FC_02_small.png', style: 'height: 55px;') -  France Connect - Particulier - -%h3 Nouvelle connexion -%h4.text-warning{ style: 'margin-left: 20px;' } Email déjà utilisé - -%br -%p - %h4.center Nous avons trouvé un compte qui utilise déjà cette adresse email. - %p.center - Afin d'associer ce compte à votre identifiant France Connect, merci de saisir votre mot de passe TPS. - %br -.center - #france-connect-particulier-email - = form_for @user, url: { controller: 'france_connect/particulier', action: :check_email }, method: :post do |f| - .form-group.form-group-lg - = f.text_field :email_france_connect, class: "form-control", readonly: 'readonly' - %br - = f.password_field :password, class: "form-control", placeholder: "Entrez votre mot de passe" - = hidden_field_tag :fci_id, params[:fci_id] - = hidden_field_tag :salt, params[:salt] - = f.submit 'Terminer', class: %w(btn btn-lg btn-success), style: 'margin-top: 20px;', id: 'valid_new_fcp' diff --git a/app/views/france_connect/particulier/new.html.haml b/app/views/france_connect/particulier/new.html.haml deleted file mode 100644 index ddb7a5b0b..000000000 --- a/app/views/france_connect/particulier/new.html.haml +++ /dev/null @@ -1,32 +0,0 @@ -%h2.text-info - = image_tag('logo_FC_02_small.png', style: 'height: 55px;') -  France Connect - Particulier - -%h3 Nouvelle connexion - -%br -%p - Nous vous avons identifié comme étant - -%h4.text-info.center - %strong - = @user.gender_fr - = @user.given_name - = @user.family_name - né le - %strong - = @user.birthdate_fr - -%br -%h4 - Afin de finaliser votre première connexion à TPS, merci de saisir un email valide : -%br - -.center - #france-connect-particulier-email - = form_for @user, url: { controller: 'france_connect/particulier', action: :check_email }, method: :post do |f| - .form-group.form-group-lg - = f.text_field :email_france_connect, class: "form-control", placeholder: "Entrez votre email" - = hidden_field_tag :fci_id, params[:fci_id] - = hidden_field_tag :salt, params[:salt] - = f.submit 'Terminer', class: %w(btn btn-lg btn-success), style: 'margin-top: 20px;', id: 'valid_new_fcp' diff --git a/app/views/layouts/_new_header.haml b/app/views/layouts/_new_header.haml index cd4a0f09c..f515c3238 100644 --- a/app/views/layouts/_new_header.haml +++ b/app/views/layouts/_new_header.haml @@ -45,7 +45,7 @@ = current_email - if administration_signed_in? %li - = link_to administrations_path, class: "menu-item menu-link" do + = link_to manager_root_path, class: "menu-item menu-link" do = image_tag "icons/super-admin.svg" Passer en super-admin - if SwitchDeviseProfileService.new(warden).multiple_devise_profile_connect? diff --git a/app/views/manager/administrateurs/index.html.haml b/app/views/manager/administrateurs/index.html.haml new file mode 100644 index 000000000..17b5ad587 --- /dev/null +++ b/app/views/manager/administrateurs/index.html.haml @@ -0,0 +1,16 @@ +- content_for(:title) do + = display_resource_name(page.resource_name) + +- content_for(:search) do + - if show_search_bar + = render "search", search_term: search_term + +%header.header + %h1.header__heading#page-title + = content_for(:title) + .header__actions + = link_to 'nouveau', new_manager_administrateur_path, class: 'button' + += render "collection", collection_presenter: page, resources: resources + += paginate resources diff --git a/app/views/manager/administrateurs/show.html.haml b/app/views/manager/administrateurs/show.html.haml new file mode 100644 index 000000000..83f37d42b --- /dev/null +++ b/app/views/manager/administrateurs/show.html.haml @@ -0,0 +1,15 @@ +- content_for(:title) { page.page_title } + +%header.header + %h1.header__heading= content_for(:title) + .header__actions + - if page.resource.invitation_expired? + = link_to "renvoyer l'invitation", reinvite_manager_administrateur_path(page.resource), method: :post, class: "button" + +%dl + - page.attributes.each do |attribute| + %dt.attribute-label + = t("helpers.label.#{resource_name}.#{attribute.name}", default: attribute.name.titleize) + + %dd.attribute-data{ class: "attribute-data--#{attribute.html_class}" } + = render_field attribute diff --git a/app/views/manager/application/_collection.html.haml b/app/views/manager/application/_collection.html.haml index 96b51ca15..ca18cdcd2 100644 --- a/app/views/manager/application/_collection.html.haml +++ b/app/views/manager/application/_collection.html.haml @@ -1,21 +1,3 @@ --# # Collection --# --# This partial is used on the `index` and `show` pages --# to display a collection of resources in an HTML table. --# --# ## Local variables: --# --# - `collection_presenter`: --# An instance of [Administrate::Page::Collection][1]. --# The table presenter uses `ResourceDashboard::COLLECTION_ATTRIBUTES` to determine --# the columns displayed in the table --# - `resources`: --# An ActiveModel::Relation collection of resources to be displayed in the table. --# By default, the number of resources is limited by pagination --# or by a hard limit to prevent excessive page load times --# --# [1]: http://www.rubydoc.info/gems/administrate/Administrate/Page/Collection - %table.collection-data{ "aria-labelledby": "page-title" } %thead %tr diff --git a/app/views/manager/application/_flashes.html.haml b/app/views/manager/application/_flashes.html.haml index dcb80f65f..f5fd0ebc9 100644 --- a/app/views/manager/application/_flashes.html.haml +++ b/app/views/manager/application/_flashes.html.haml @@ -1,14 +1,3 @@ --# # Flash Partial --# --# This partial renders flash messages on every page. --# --# ## Relevant Helpers: --# --# - `flash`: --# Returns a hash, --# where the keys are the type of flash (alert, error, notice, etc) --# and the values are the message to be displayed. - - if flash.any? .flashes - flash.each do |key, value| diff --git a/app/views/manager/application/_javascript.html.haml b/app/views/manager/application/_javascript.html.haml index 94b427358..de1850bf7 100644 --- a/app/views/manager/application/_javascript.html.haml +++ b/app/views/manager/application/_javascript.html.haml @@ -1,10 +1,3 @@ --# # Javascript Partial --# --# This partial imports the necessary javascript on each page. --# By default, it includes the application JS, --# but each page can define additional JS sources --# by providing a `content_for(:javascript)` block. - - Administrate::Engine.javascripts.each do |js_path| = javascript_include_tag js_path diff --git a/app/views/manager/application/_sidebar.html.haml b/app/views/manager/application/_sidebar.html.haml index cd3499d18..feb738b62 100644 --- a/app/views/manager/application/_sidebar.html.haml +++ b/app/views/manager/application/_sidebar.html.haml @@ -1,13 +1,6 @@ --# # Sidebar --# --# This partial is used to display the sidebar in Administrate. --# By default, the sidebar contains navigation links --# for all resources in the admin dashboard, --# as defined by the routes in the `admin/` namespace - %ul.sidebar__list %li - = link_to "Se déconnecter", administrations_sign_out_path, method: :delete, class: "sidebar__link" + = link_to "Se déconnecter", manager_sign_out_path, method: :delete, class: "sidebar__link" %hr{ style: "margin-bottom: 0;" } @@ -15,3 +8,9 @@ - Administrate::Namespace.new(namespace).resources.each do |resource| %li = link_to(display_resource_name(resource), [namespace, resource], class: "sidebar__link sidebar__link--#{nav_link_state(resource)}") + +%hr{ style: "margin-bottom: 0;" } + +%ul.sidebar__list + %li + = link_to "Delayed Job", manager_delayed_job_path, class: "sidebar__link" diff --git a/app/views/manager/application/index.html.haml b/app/views/manager/application/index.html.haml index 1e69b1213..ce051bf66 100644 --- a/app/views/manager/application/index.html.haml +++ b/app/views/manager/application/index.html.haml @@ -1,26 +1,3 @@ --# # Index --# --# This view is the template for the index page. --# It is responsible for rendering the search bar, header and pagination. --# It renders the `_table` partial to display details about the resources. --# --# ## Local variables: --# --# - `page`: --# An instance of [Administrate::Page::Collection][1]. --# Contains helper methods to help display a table, --# and knows which attributes should be displayed in the resource's table. --# - `resources`: --# An instance of `ActiveRecord::Relation` containing the resources --# that match the user's search criteria. --# By default, these resources are passed to the table partial to be displayed. --# - `search_term`: --# A string containing the term the user has searched for, if any. --# - `show_search_bar`: --# A boolean that determines if the search bar should be shown. --# --# [1]: http://www.rubydoc.info/gems/administrate/Administrate/Page/Collection - - content_for(:title) do = display_resource_name(page.resource_name) diff --git a/app/views/manager/application/show.html.haml b/app/views/manager/application/show.html.haml index e6f79a723..a17f35005 100644 --- a/app/views/manager/application/show.html.haml +++ b/app/views/manager/application/show.html.haml @@ -1,19 +1,3 @@ --# # Show --# --# This view is the template for the show page. --# It renders the attributes of a resource, --# as well as a link to its edit page. --# --# ## Local variables: --# --# - `page`: --# An instance of [Administrate::Page::Show][1]. --# Contains methods for accessing the resource to be displayed on the page, --# as well as helpers for describing how each attribute of the resource --# should be displayed. --# --# [1]: http://www.rubydoc.info/gems/administrate/Administrate/Page/Show - - content_for(:title) { page.page_title } %header.header diff --git a/app/views/manager/procedures/show.html.haml b/app/views/manager/procedures/show.html.haml index dee910db0..1627fa667 100644 --- a/app/views/manager/procedures/show.html.haml +++ b/app/views/manager/procedures/show.html.haml @@ -1,19 +1,3 @@ --# # Show --# --# This view is the template for the show page. --# It renders the attributes of a resource, --# as well as a link to its edit page. --# --# ## Local variables: --# --# - `page`: --# An instance of [Administrate::Page::Show][1]. --# Contains methods for accessing the resource to be displayed on the page, --# as well as helpers for describing how each attribute of the resource --# should be displayed. --# --# [1]: http://www.rubydoc.info/gems/administrate/Administrate/Page/Show - - content_for(:title) { page.page_title } - procedure = page.resource diff --git a/app/views/new_gestionnaire/recherche/index.html.haml b/app/views/new_gestionnaire/recherche/index.html.haml index 614258db0..87a54eb34 100644 --- a/app/views/new_gestionnaire/recherche/index.html.haml +++ b/app/views/new_gestionnaire/recherche/index.html.haml @@ -15,15 +15,17 @@ %th Statut %tbody - @dossiers.each do |dossier| + / # FIXME: here we have a n+1, we fire a request + / (due to dossier_linked_path) per result %tr %td.number-col - = link_to(dossier_path(dossier.procedure, dossier), class: 'cell-link') do + = link_to(dossier_linked_path(current_gestionnaire, dossier), class: 'cell-link') do %span.icon.folder> = dossier.id - %td= link_to(dossier.procedure.libelle, dossier_path(dossier.procedure, dossier), class: 'cell-link') - %td= link_to(dossier.user.email, dossier_path(dossier.procedure, dossier), class: 'cell-link') + %td= link_to(dossier.procedure.libelle, dossier_linked_path(current_gestionnaire, dossier), class: 'cell-link') + %td= link_to(dossier.user.email, dossier_linked_path(current_gestionnaire, dossier), class: 'cell-link') %td.status-col - = link_to(dossier_path(dossier.procedure, dossier), class: 'cell-link') do + = link_to(dossier_linked_path(current_gestionnaire, dossier), class: 'cell-link') do = render partial: 'new_gestionnaire/procedures/status', locals: { dossier: dossier } - else %h2 Aucun dossier correspondant à votre recherche n'a été trouvé diff --git a/app/views/users/commentaires/index.html.haml b/app/views/users/commentaires/index.html.haml deleted file mode 100644 index a764a3e90..000000000 --- a/app/views/users/commentaires/index.html.haml +++ /dev/null @@ -1 +0,0 @@ -= render partial: '/users/recapitulatif/commentaires_flux' diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index a12c61265..c365fd228 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -41,12 +41,12 @@ Devise.setup do |config| # Configure which authentication keys should be case-insensitive. # These keys will be downcased upon creating or modifying a user and when used # to authenticate or find a user. Default is :email. - config.case_insensitive_keys = [ :email ] + config.case_insensitive_keys = [:email] # Configure which authentication keys should have whitespace stripped. # These keys will have whitespace before and after removed upon creating or # modifying a user and when used to authenticate or find a user. Default is :email. - config.strip_whitespace_keys = [ :email ] + config.strip_whitespace_keys = [:email] # Tell if authentication through request.params is enabled. True by default. # It can be set to an array that will enable params authentication only for the diff --git a/config/locales/models/administrateur/fr.yml b/config/locales/models/administrateur/fr.yml new file mode 100644 index 000000000..91f16cbe5 --- /dev/null +++ b/config/locales/models/administrateur/fr.yml @@ -0,0 +1,8 @@ +fr: + activerecord: + errors: + models: + administrateur: + attributes: + email: + blank: 'doit être rempli' diff --git a/config/routes.rb b/config/routes.rb index 8e3069eea..cfb615098 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,15 +1,23 @@ Rails.application.routes.draw do + get 'manager/sign_in' => 'administrations/sessions#new' + delete 'manager/sign_out' => 'administrations/sessions#destroy' namespace :manager do resources :procedures, only: [:index, :show] do post 'whitelist', on: :member end - resources :administrateurs, only: [:index, :show] + resources :administrateurs, only: [:index, :show, :new, :create] do + post 'reinvite', on: :member + end - root to: "procedures#index" + authenticate :administration do + match "/delayed_job" => DelayedJobWeb, :anchor => false, :via => [:get, :post] + end + + root to: "administrateurs#index" end - get "/ping" => "ping#index", :constraints => {:ip => /127.0.0.1/} + get "/ping" => "ping#index", :constraints => { :ip => /127.0.0.1/ } devise_for :administrations, skip: [:password, :registrations, :sessions], @@ -52,23 +60,11 @@ Rails.application.routes.draw do get 'users' => 'users#index' get 'admin' => 'admin#index' - get 'administrations/sign_in' => 'administrations/sessions#new' - delete 'administrations/sign_out' => 'administrations/sessions#destroy' - authenticate :administration do - resources :administrations, only: [:index, :create, :update] do - match "/delayed_job" => DelayedJobWeb, :anchor => false, :via => [:get, :post] - end - end - resources :stats, only: [:index] namespace :france_connect do get 'particulier' => 'particulier#login' get 'particulier/callback' => 'particulier#callback' - - get 'particulier/new' => 'particulier#new' - post 'particulier/create' => 'particulier#create' - post 'particulier/check_email' => 'particulier#check_email' end namespace :users do @@ -90,7 +86,6 @@ Rails.application.routes.draw do post '/recapitulatif/initiate' => 'recapitulatif#initiate' post '/commentaire' => 'commentaires#create' - resources :commentaires, only: [:index] get '/carte/position' => 'carte#get_position' post '/carte/qp' => 'carte#get_qp' diff --git a/db/migrate/20160802113112_build_default_preference_list_dossier.rb b/db/migrate/20160802113112_build_default_preference_list_dossier.rb index d4b211d69..a1628f20f 100644 --- a/db/migrate/20160802113112_build_default_preference_list_dossier.rb +++ b/db/migrate/20160802113112_build_default_preference_list_dossier.rb @@ -43,7 +43,7 @@ class BuildDefaultPreferenceListDossier < ActiveRecord::Migration } ] - couples.include?({table: table, column: column}) + couples.include?({ table: table, column: column }) end end diff --git a/db/migrate/20161007095443_reset_all_preference_list_dossier.rb b/db/migrate/20161007095443_reset_all_preference_list_dossier.rb index 9aab6967c..47e44ce44 100644 --- a/db/migrate/20161007095443_reset_all_preference_list_dossier.rb +++ b/db/migrate/20161007095443_reset_all_preference_list_dossier.rb @@ -95,7 +95,7 @@ class ResetAllPreferenceListDossier < ActiveRecord::Migration has_many :assign_to, dependent: :destroy has_many :procedures, through: :assign_to - def build_default_preferences_list_dossier procedure_id=nil + def build_default_preferences_list_dossier procedure_id = nil PreferenceListDossier.available_columns_for(procedure_id).each do |table| table.second.each do |column| if valid_couple_table_attr? table.first, column.first @@ -141,7 +141,7 @@ class ResetAllPreferenceListDossier < ActiveRecord::Migration } ] - couples.include?({table: table, column: column}) + couples.include?({ table: table, column: column }) end end diff --git a/db/migrate/20170215102943_remove_duplicate_email_received.rb b/db/migrate/20170215102943_remove_duplicate_email_received.rb index e69945626..4464e7ffd 100644 --- a/db/migrate/20170215102943_remove_duplicate_email_received.rb +++ b/db/migrate/20170215102943_remove_duplicate_email_received.rb @@ -3,7 +3,7 @@ class RemoveDuplicateEmailReceived < ActiveRecord::Migration[5.0] all_mails = MailReceived.all groupped = all_mails.group_by { |m| m.procedure_id } filtered = groupped.reject { |k, v| v.length < 2 } - filtered.each do |k, duplicate_mails| + filtered.each_value do |duplicate_mails| duplicate_mails.pop duplicate_mails.each(&:destroy) end diff --git a/lib/tasks/2017_10_30_copy_commentaire_piece_justificative_to_file.rake b/lib/tasks/2017_10_30_copy_commentaire_piece_justificative_to_file.rake index f26a04edb..8e3422582 100644 --- a/lib/tasks/2017_10_30_copy_commentaire_piece_justificative_to_file.rake +++ b/lib/tasks/2017_10_30_copy_commentaire_piece_justificative_to_file.rake @@ -1,6 +1,6 @@ namespace :'2017_10_30_copy_commentaire_piece_justificative_to_file' do task set: :environment do - commentaires_to_process = Commentaire.where(file:nil).where.not(piece_justificative_id: nil).reorder(id: :desc) + commentaires_to_process = Commentaire.where(file: nil).where.not(piece_justificative_id: nil).reorder(id: :desc) puts "#{commentaires_to_process.count} commentaires to process..." @@ -21,7 +21,7 @@ namespace :'2017_10_30_copy_commentaire_piece_justificative_to_file' do def sanitize_name(name) # from https://github.com/carrierwaveuploader/carrierwave/blob/master/lib/carrierwave/sanitized_file.rb#L323 name = name.gsub(/[^[:word:]\.\-\+]/,"_") - name = "_#{name}" if name =~ /\A\.+\z/ + name = "_#{name}" if name.match?(/\A\.+\z/) name = "unnamed" if name.size == 0 return name.mb_chars.to_s end diff --git a/lib/tasks/2017_12_21_replace_deprecated_mail_template_tags.rake b/lib/tasks/2017_12_21_replace_deprecated_mail_template_tags.rake index 18212003f..af3541161 100644 --- a/lib/tasks/2017_12_21_replace_deprecated_mail_template_tags.rake +++ b/lib/tasks/2017_12_21_replace_deprecated_mail_template_tags.rake @@ -7,7 +7,7 @@ namespace :'2017_12_21_replace_deprecated_mail_template_tags' do end def replace_tag(old_tag, new_tag) - mails = [ Mails::ClosedMail, Mails::InitiatedMail, Mails::ReceivedMail, Mails::RefusedMail, Mails::WithoutContinuationMail] + mails = [Mails::ClosedMail, Mails::InitiatedMail, Mails::ReceivedMail, Mails::RefusedMail, Mails::WithoutContinuationMail] mails.each do |mail| replace_tag_in(mail, 'object', old_tag, new_tag) replace_tag_in(mail, 'body', old_tag, new_tag) diff --git a/spec/controllers/admin/accompagnateurs_controller_spec.rb b/spec/controllers/admin/accompagnateurs_controller_spec.rb index d80208cbf..f8891a2ad 100644 --- a/spec/controllers/admin/accompagnateurs_controller_spec.rb +++ b/spec/controllers/admin/accompagnateurs_controller_spec.rb @@ -10,12 +10,12 @@ describe Admin::AccompagnateursController, type: :controller do end describe 'GET #show' do - subject { get :show, params: {procedure_id: procedure.id} } + subject { get :show, params: { procedure_id: procedure.id } } it { expect(subject.status).to eq(200) } end describe 'PUT #update' do - subject { put :update, params: {accompagnateur_id: gestionnaire.id, procedure_id: procedure.id, to: 'assign'} } + subject { put :update, params: { accompagnateur_id: gestionnaire.id, procedure_id: procedure.id, to: 'assign' } } it { expect(subject).to redirect_to admin_procedure_accompagnateurs_path(procedure_id: procedure.id) } diff --git a/spec/controllers/admin/gestionnaires_controller_spec.rb b/spec/controllers/admin/gestionnaires_controller_spec.rb index 8e2c55212..3d2bcf246 100644 --- a/spec/controllers/admin/gestionnaires_controller_spec.rb +++ b/spec/controllers/admin/gestionnaires_controller_spec.rb @@ -17,7 +17,7 @@ describe Admin::GestionnairesController, type: :controller do describe 'POST #create' do let(:email) { 'test@plop.com' } let(:procedure_id) { nil } - subject { post :create, params: {gestionnaire: {email: email}, procedure_id: procedure_id} } + subject { post :create, params: { gestionnaire: { email: email }, procedure_id: procedure_id } } context 'When email is valid' do before do @@ -169,7 +169,7 @@ describe Admin::GestionnairesController, type: :controller do let!(:admin) { create :administrateur } let!(:gestionnaire) { create :gestionnaire, email: email, administrateurs: [admin] } - subject { delete :destroy, params: {id: gestionnaire.id} } + subject { delete :destroy, params: { id: gestionnaire.id } } context "when gestionaire_id is valid" do before do diff --git a/spec/controllers/admin/mail_templates_controller_spec.rb b/spec/controllers/admin/mail_templates_controller_spec.rb index 313dd93ad..81a24a6da 100644 --- a/spec/controllers/admin/mail_templates_controller_spec.rb +++ b/spec/controllers/admin/mail_templates_controller_spec.rb @@ -34,7 +34,7 @@ describe Admin::MailTemplatesController, type: :controller do it { expect(response).to redirect_to admin_procedure_mail_templates_path(procedure) } context 'the mail template' do - subject { procedure.reload ; procedure.initiated_mail_template } + subject { procedure.reload; procedure.initiated_mail_template } it { expect(subject.subject).to eq(mail_subject) } it { expect(subject.body).to eq(mail_body) } diff --git a/spec/controllers/admin/pieces_justificatives_controller_spec.rb b/spec/controllers/admin/pieces_justificatives_controller_spec.rb index c1e66c366..2034cf2d3 100644 --- a/spec/controllers/admin/pieces_justificatives_controller_spec.rb +++ b/spec/controllers/admin/pieces_justificatives_controller_spec.rb @@ -11,7 +11,7 @@ describe Admin::PiecesJustificativesController, type: :controller do describe 'GET #show' do let(:procedure_id) { procedure.id } - subject { get :show, params: {procedure_id: procedure_id} } + subject { get :show, params: { procedure_id: procedure_id } } context 'when procedure is not found' do let(:procedure_id) { 9_999_999 } @@ -47,7 +47,7 @@ describe Admin::PiecesJustificativesController, type: :controller do } end - let(:request) { put :update, params: {procedure_id: procedure_id, format: :js, procedure: update_params} } + let(:request) { put :update, params: { procedure_id: procedure_id, format: :js, procedure: update_params } } subject { request } it { is_expected.to render_template('show') } @@ -75,7 +75,7 @@ describe Admin::PiecesJustificativesController, type: :controller do let!(:pj) { create(:type_de_piece_justificative, procedure: procedure) } let(:procedure_id) { procedure.id } let(:pj_id) { pj.id } - let(:request) { delete :destroy, params: {procedure_id: procedure_id, id: pj_id} } + let(:request) { delete :destroy, params: { procedure_id: procedure_id, id: pj_id } } subject { request } context 'when procedure is not found' do let(:procedure_id) { 9_999_999 } @@ -98,7 +98,7 @@ describe Admin::PiecesJustificativesController, type: :controller do end describe 'POST #move_up' do - subject { post :move_up, params: {procedure_id: procedure.id, index: index, format: :js} } + subject { post :move_up, params: { procedure_id: procedure.id, index: index, format: :js } } context 'when procedure have no type de champ' do let(:index) { 0 } @@ -124,7 +124,7 @@ describe Admin::PiecesJustificativesController, type: :controller do it { expect(subject.status).to eq(200) } it { expect(subject).to render_template('show') } it 'changes order places' do - post :move_up, params: {procedure_id: procedure.id, index: index, format: :js} + post :move_up, params: { procedure_id: procedure.id, index: index, format: :js } type_de_piece_justificative_0.reload type_de_piece_justificative_1.reload expect(type_de_piece_justificative_0.order_place).to eq(1) @@ -135,7 +135,7 @@ describe Admin::PiecesJustificativesController, type: :controller do end describe 'POST #move_down' do - let(:request) { post :move_down, params: {procedure_id: procedure.id, index: index, format: :js} } + let(:request) { post :move_down, params: { procedure_id: procedure.id, index: index, format: :js } } let(:index) { 0 } subject { request } diff --git a/spec/controllers/admin/previsualisations_controller_spec.rb b/spec/controllers/admin/previsualisations_controller_spec.rb index 6d2adedad..8379c65c7 100644 --- a/spec/controllers/admin/previsualisations_controller_spec.rb +++ b/spec/controllers/admin/previsualisations_controller_spec.rb @@ -9,7 +9,7 @@ describe Admin::PrevisualisationsController, type: :controller do end describe 'GET #show' do - subject { get :show, params: {procedure_id: procedure.id} } + subject { get :show, params: { procedure_id: procedure.id } } it { expect(subject.status).to eq(200) } end end diff --git a/spec/controllers/admin/procedures_controller_spec.rb b/spec/controllers/admin/procedures_controller_spec.rb index cf1acb3e4..2564a49c6 100644 --- a/spec/controllers/admin/procedures_controller_spec.rb +++ b/spec/controllers/admin/procedures_controller_spec.rb @@ -59,7 +59,7 @@ describe Admin::ProceduresController, type: :controller do let(:procedure_published) { create :procedure, administrateur: admin, published_at: Time.now, archived_at: nil } let(:procedure_archived) { create :procedure, administrateur: admin, published_at: nil, archived_at: Time.now } - subject { delete :destroy, params: {id: procedure.id} } + subject { delete :destroy, params: { id: procedure.id } } context 'when procedure is draft' do let!(:procedure) { procedure_draft } @@ -96,7 +96,7 @@ describe Admin::ProceduresController, type: :controller do context "when administrateur does not own the procedure" do let(:procedure_not_owned) { create :procedure, administrateur: create(:administrateur), published_at: nil, archived_at: nil } - subject { delete :destroy, params: {id: procedure_not_owned.id} } + subject { delete :destroy, params: { id: procedure_not_owned.id } } it { expect{ subject }.to raise_error(ActiveRecord::RecordNotFound) } end @@ -107,7 +107,7 @@ describe Admin::ProceduresController, type: :controller do let(:procedure) { create(:procedure, administrateur: admin, published_at: published_at) } let(:procedure_id) { procedure.id } - subject { get :edit, params: {id: procedure_id} } + subject { get :edit, params: { id: procedure_id } } context 'when user is not connected' do before do @@ -139,14 +139,14 @@ describe Admin::ProceduresController, type: :controller do describe 'POST #create' do context 'when all attributs are filled' do describe 'new procedure in database' do - subject { post :create, params: {procedure: procedure_params} } + subject { post :create, params: { procedure: procedure_params } } it { expect { subject }.to change { Procedure.count }.by(1) } end context 'when procedure is correctly save' do before do - post :create, params: {procedure: procedure_params} + post :create, params: { procedure: procedure_params } end describe 'procedure attributs in database' do @@ -183,7 +183,7 @@ describe Admin::ProceduresController, type: :controller do let(:description) { '' } describe 'no new procedure in database' do - subject { post :create, params: {procedure: procedure_params} } + subject { post :create, params: { procedure: procedure_params } } it { expect { subject }.to change { Procedure.count }.by(0) } @@ -194,7 +194,7 @@ describe Admin::ProceduresController, type: :controller do describe 'flash message is present' do before do - post :create, params: {procedure: procedure_params} + post :create, params: { procedure: procedure_params } end it { expect(flash[:alert]).to be_present } @@ -210,14 +210,14 @@ describe Admin::ProceduresController, type: :controller do sign_out admin end - subject { put :update, params: {id: procedure.id} } + subject { put :update, params: { id: procedure.id } } it { is_expected.to redirect_to new_user_session_path } end context 'when administrateur is connected' do before do - put :update, params: {id: procedure.id, procedure: procedure_params} + put :update, params: { id: procedure.id, procedure: procedure_params } procedure.reload end @@ -297,7 +297,7 @@ describe Admin::ProceduresController, type: :controller do context 'when admin is the owner of the procedure' do before do - put :publish, params: {procedure_id: procedure.id, procedure_path: procedure_path} + put :publish, params: { procedure_id: procedure.id, procedure_path: procedure_path } procedure.reload procedure2.reload end @@ -364,7 +364,7 @@ describe Admin::ProceduresController, type: :controller do sign_out admin sign_in admin_2 - put :publish, params: {procedure_id: procedure.id, procedure_path: 'fake_path'} + put :publish, params: { procedure_id: procedure.id, procedure_path: 'fake_path' } procedure.reload end @@ -380,7 +380,7 @@ describe Admin::ProceduresController, type: :controller do context 'when admin is the owner of the procedure' do before do - put :archive, params: {procedure_id: procedure.id} + put :archive, params: { procedure_id: procedure.id } procedure.reload end @@ -392,7 +392,7 @@ describe Admin::ProceduresController, type: :controller do context 'when owner want to re-enable procedure' do before do - put :publish, params: {procedure_id: procedure.id, procedure_path: 'fake_path'} + put :publish, params: { procedure_id: procedure.id, procedure_path: 'fake_path' } procedure.reload end @@ -409,7 +409,7 @@ describe Admin::ProceduresController, type: :controller do sign_out admin sign_in admin_2 - put :archive, params: {procedure_id: procedure.id} + put :archive, params: { procedure_id: procedure.id } procedure.reload end @@ -420,7 +420,7 @@ describe Admin::ProceduresController, type: :controller do describe 'PUT #clone' do let!(:procedure) { create(:procedure, administrateur: admin) } - subject { put :clone, params: {procedure_id: procedure.id} } + subject { put :clone, params: { procedure_id: procedure.id } } it { expect { subject }.to change(Procedure, :count).by(1) } @@ -502,7 +502,7 @@ describe Admin::ProceduresController, type: :controller do describe 'POST transfer' do let!(:procedure) { create :procedure, administrateur: admin } - subject { post :transfer, params: {email_admin: email_admin, procedure_id: procedure.id} } + subject { post :transfer, params: { email_admin: email_admin, procedure_id: procedure.id } } context 'when admin is unknow' do let(:email_admin) { 'plop' } diff --git a/spec/controllers/admin/types_de_champ_controller_spec.rb b/spec/controllers/admin/types_de_champ_controller_spec.rb index 3b68c6de6..d3b6fc8fa 100644 --- a/spec/controllers/admin/types_de_champ_controller_spec.rb +++ b/spec/controllers/admin/types_de_champ_controller_spec.rb @@ -13,7 +13,7 @@ describe Admin::TypesDeChampController, type: :controller do let(:procedure) { create(:procedure, administrateur: admin, published_at: published_at) } let(:procedure_id) { procedure.id } - subject { get :show, params: {procedure_id: procedure_id} } + subject { get :show, params: { procedure_id: procedure_id } } context 'when procedure is not found' do let(:procedure_id) { 9_999_999 } @@ -64,7 +64,7 @@ describe Admin::TypesDeChampController, type: :controller do } end - let(:request) { put :update, params: {procedure_id: procedure.id, procedure: procedure_params}, format: :js } + let(:request) { put :update, params: { procedure_id: procedure.id, procedure: procedure_params }, format: :js } context 'when procedure is found' do it { expect { request }.to change(TypeDeChamp, :count).by(1) } @@ -122,7 +122,7 @@ describe Admin::TypesDeChampController, type: :controller do end end context 'when procedure is not found' do - subject { put :update, format: :js, params: {procedure_id: 9_999_999, procedure: procedure_params} } + subject { put :update, format: :js, params: { procedure_id: 9_999_999, procedure: procedure_params } } it 'creates type de champ' do expect(subject.status).to eq(404) end @@ -131,7 +131,7 @@ describe Admin::TypesDeChampController, type: :controller do describe '#destroy' do before do - delete :destroy, params: {procedure_id: procedure.id, id: type_de_champ_id, format: :js} + delete :destroy, params: { procedure_id: procedure.id, id: type_de_champ_id, format: :js } end context 'when type de champs does not exist' do @@ -155,7 +155,7 @@ describe Admin::TypesDeChampController, type: :controller do end describe 'POST #move_up' do - subject { post :move_up, params: {procedure_id: procedure.id, index: index, format: :js} } + subject { post :move_up, params: { procedure_id: procedure.id, index: index, format: :js } } context 'when procedure have no type de champ' do let(:index) { 0 } @@ -181,7 +181,7 @@ describe Admin::TypesDeChampController, type: :controller do it { expect(subject.status).to eq(200) } it { expect(subject).to render_template('show') } it 'changes order places' do - post :move_up, params: {procedure_id: procedure.id, index: index, format: :js} + post :move_up, params: { procedure_id: procedure.id, index: index, format: :js } type_de_champ_0.reload type_de_champ_1.reload expect(type_de_champ_0.order_place).to eq(1) @@ -192,7 +192,7 @@ describe Admin::TypesDeChampController, type: :controller do end describe 'POST #move_down' do - let(:request) { post :move_down, params: {procedure_id: procedure.id, index: index, format: :js} } + let(:request) { post :move_down, params: { procedure_id: procedure.id, index: index, format: :js } } let(:index) { 0 } subject { request } diff --git a/spec/controllers/admin/types_de_champ_private_controller_spec.rb b/spec/controllers/admin/types_de_champ_private_controller_spec.rb index 701bb2c91..61ab44966 100644 --- a/spec/controllers/admin/types_de_champ_private_controller_spec.rb +++ b/spec/controllers/admin/types_de_champ_private_controller_spec.rb @@ -13,7 +13,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do let(:procedure) { create(:procedure, administrateur: admin, published_at: published_at) } let(:procedure_id) { procedure.id } - subject { get :show, params: {procedure_id: procedure_id} } + subject { get :show, params: { procedure_id: procedure_id } } context 'when procedure is not found' do let(:procedure_id) { 9_999_999 } @@ -65,7 +65,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do } end - let(:request) { put :update, params: {format: :js, procedure_id: procedure.id, procedure: procedure_params} } + let(:request) { put :update, params: { format: :js, procedure_id: procedure.id, procedure: procedure_params } } context 'when procedure is found' do it { expect { request }.to change(TypeDeChamp, :count).by(1) } @@ -105,7 +105,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do end end context 'when procedure is not found' do - subject { put :update, params: {format: :js, procedure_id: 9_999_999, procedure: procedure_params} } + subject { put :update, params: { format: :js, procedure_id: 9_999_999, procedure: procedure_params } } it 'creates type de champ' do expect(subject.status).to eq(404) end @@ -114,7 +114,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do describe '#destroy' do before do - delete :destroy, params: {procedure_id: procedure.id, id: type_de_champ_id, format: :js} + delete :destroy, params: { procedure_id: procedure.id, id: type_de_champ_id, format: :js } end context 'when type de champs does not exist' do @@ -138,7 +138,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do end describe 'POST #move_up' do - subject { post :move_up, params: {procedure_id: procedure.id, index: index, format: :js} } + subject { post :move_up, params: { procedure_id: procedure.id, index: index, format: :js } } context 'when procedure have no type de champ' do let(:index) { 0 } @@ -164,7 +164,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do it { expect(subject.status).to eq(200) } it { expect(subject).to render_template('show') } it 'changes order places' do - post :move_up, params: {procedure_id: procedure.id, index: index, format: :js} + post :move_up, params: { procedure_id: procedure.id, index: index, format: :js } type_de_champ_0.reload type_de_champ_1.reload expect(type_de_champ_0.order_place).to eq(1) @@ -175,7 +175,7 @@ describe Admin::TypesDeChampPrivateController, type: :controller do end describe 'POST #move_down' do - let(:request) { post :move_down, params: {procedure_id: procedure.id, index: index, format: :js} } + let(:request) { post :move_down, params: { procedure_id: procedure.id, index: index, format: :js } } let(:index) { 0 } subject { request } diff --git a/spec/controllers/administrations/omniauth_callbacks_controller_spec.rb b/spec/controllers/administrations/omniauth_callbacks_controller_spec.rb index dddc6439c..f98848006 100644 --- a/spec/controllers/administrations/omniauth_callbacks_controller_spec.rb +++ b/spec/controllers/administrations/omniauth_callbacks_controller_spec.rb @@ -18,7 +18,7 @@ describe Administrations::OmniauthCallbacksController, type: :controller do let(:administration) { create(:administration, email: email) } before { administration } - it { is_expected.to redirect_to(administrations_path) } + it { is_expected.to redirect_to(manager_administrateurs_path) } it do expect(controller).to receive(:sign_in).with(administration) subject diff --git a/spec/controllers/api/v1/dossiers_controller_spec.rb b/spec/controllers/api/v1/dossiers_controller_spec.rb index 266babaad..b22913982 100644 --- a/spec/controllers/api/v1/dossiers_controller_spec.rb +++ b/spec/controllers/api/v1/dossiers_controller_spec.rb @@ -8,7 +8,7 @@ describe API::V1::DossiersController do it { expect(described_class).to be < APIController } describe 'GET index' do - let(:retour) { get :index, params: {token: admin.api_token, procedure_id: procedure_id} } + let(:retour) { get :index, params: { token: admin.api_token, procedure_id: procedure_id } } subject { retour } @@ -59,7 +59,7 @@ describe API::V1::DossiersController do end context 'when there are multiple pages' do - let(:retour) { get :index, params: {token: admin.api_token, procedure_id: procedure_id, page: 2} } + let(:retour) { get :index, params: { token: admin.api_token, procedure_id: procedure_id, page: 2 } } let!(:dossier1) { create(:dossier, :with_entreprise, procedure: procedure, state: 'en_construction') } let!(:dossier2) { create(:dossier, :with_entreprise, procedure: procedure, state: 'en_construction') } @@ -80,7 +80,7 @@ describe API::V1::DossiersController do end describe 'GET show' do - let(:retour) { get :show, params: {token: admin.api_token, procedure_id: procedure_id, id: dossier_id} } + let(:retour) { get :show, params: { token: admin.api_token, procedure_id: procedure_id, id: dossier_id } } subject { retour } context 'when procedure is not found' do @@ -178,7 +178,7 @@ describe API::V1::DossiersController do end end - describe 'piece justificative', vcr: {cassette_name: 'controllers_api_v1_dossiers_controller_piece_justificative'} do + describe 'piece justificative', vcr: { cassette_name: 'controllers_api_v1_dossiers_controller_piece_justificative' } do before do create :piece_justificative, :rib, dossier: dossier, type_de_piece_justificative: dossier.procedure.types_de_piece_justificative.first, user: dossier.user end @@ -240,7 +240,7 @@ describe API::V1::DossiersController do super().find { |champ| champ[:type_de_champ][:type_champ] == 'quartier_prioritaire' } end - it { expect(subject[:type_de_champ]).to match({ id: -1, libelle: 'quartier prioritaire', type_champ: 'quartier_prioritaire', order_place: -1, descripton: ''}) } + it { expect(subject[:type_de_champ]).to match({ id: -1, libelle: 'quartier prioritaire', type_champ: 'quartier_prioritaire', order_place: -1, descripton: '' }) } it { expect(subject[:value]).to match(dossier.quartier_prioritaires.first.geometry.symbolize_keys) } end @@ -253,7 +253,7 @@ describe API::V1::DossiersController do super().find { |champ| champ[:type_de_champ][:type_champ] == 'cadastre' } end - it { expect(subject[:type_de_champ]).to match({ id: -1, libelle: 'cadastre', type_champ: 'cadastre', order_place: -1, descripton: ''}) } + it { expect(subject[:type_de_champ]).to match({ id: -1, libelle: 'cadastre', type_champ: 'cadastre', order_place: -1, descripton: '' }) } it { expect(subject[:value]).to match(dossier.cadastres.first.geometry.symbolize_keys) } end @@ -267,7 +267,7 @@ describe API::V1::DossiersController do super().find { |champ| champ[:type_de_champ][:type_champ] == 'user_geometry' } end - it { expect(subject[:type_de_champ]).to match({ id: -1, libelle: 'user_geometry', type_champ: 'user_geometry', order_place: -1, descripton: ''}) } + it { expect(subject[:type_de_champ]).to match({ id: -1, libelle: 'user_geometry', type_champ: 'user_geometry', order_place: -1, descripton: '' }) } it { expect(subject[:value]).to match(UserGeometry.new(dossier.json_latlngs).value) } end end @@ -318,7 +318,7 @@ describe API::V1::DossiersController do it { expect(subject.first[:email]).to eq 'plop@plip.com' } end - describe 'cerfa', vcr: {cassette_name: 'controllers_api_v1_dossiers_controller_cerfa'} do + describe 'cerfa', vcr: { cassette_name: 'controllers_api_v1_dossiers_controller_cerfa' } do let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, :with_cerfa_upload, procedure: procedure) } } let(:content) { File.open('./spec/support/files/piece_justificative_388.pdf') } diff --git a/spec/controllers/api/v1/procedures_controller_spec.rb b/spec/controllers/api/v1/procedures_controller_spec.rb index 1eaa71374..3aeb7c023 100644 --- a/spec/controllers/api/v1/procedures_controller_spec.rb +++ b/spec/controllers/api/v1/procedures_controller_spec.rb @@ -6,17 +6,17 @@ describe API::V1::ProceduresController, type: :controller do describe 'GET show' do context 'when procedure does not exist' do - subject { get :show, params: {id: 999_999_999, token: admin.api_token }} + subject { get :show, params: { id: 999_999_999, token: admin.api_token } } it { expect(subject.status).to eq(404) } end context 'when procedure does not belong to administrateur' do let(:procedure) { create(:procedure, administrateur: create(:administrateur)) } - subject { get :show, params:{id: procedure, token: admin.api_token }} + subject { get :show, params: { id: procedure, token: admin.api_token } } it { expect(subject.status).to eq(404) } end context 'when procedure exist' do let(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ, administrateur: admin) } - subject { get :show, params:{id: procedure, token: admin.api_token }} + subject { get :show, params: { id: procedure, token: admin.api_token } } it 'return REST code 200', :show_in_doc do expect(subject.status).to eq(200) @@ -25,7 +25,7 @@ describe API::V1::ProceduresController, type: :controller do describe 'body' do let(:module_api_carto) { create(:module_api_carto, use_api_carto: true, quartiers_prioritaires: true, cadastre: true) } let(:procedure) { create(:procedure, :with_type_de_champ, :with_two_type_de_piece_justificative, module_api_carto: module_api_carto, administrateur: admin) } - let(:response) { get :show, params:{id: procedure.id, token: admin.api_token }} + let(:response) { get :show, params: { id: procedure.id, token: admin.api_token } } subject { JSON.parse(response.body, symbolize_names: true)[:procedure] } it { expect(subject[:id]).to eq(procedure.id) } diff --git a/spec/controllers/api_controller_spec.rb b/spec/controllers/api_controller_spec.rb index c0c92a9ec..a5eeb335b 100644 --- a/spec/controllers/api_controller_spec.rb +++ b/spec/controllers/api_controller_spec.rb @@ -18,12 +18,12 @@ describe APIController, type: :controller do end context 'when token does not exist' do let(:token) { 'invalid_token' } - subject { get :index, params: {token: token} } + subject { get :index, params: { token: token } } it { expect(subject.status).to eq(401) } end context 'when token exist' do let(:administrateur) { create(:administrateur) } - subject { get :index, params: {token: administrateur.api_token} } + subject { get :index, params: { token: administrateur.api_token } } it { expect(subject.status).to eq(200) } end end diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index 9a05618a2..21f6dfd56 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -5,7 +5,7 @@ describe ApplicationController, type: :controller do it 'is present' do before_actions = ApplicationController ._process_action_callbacks - .find_all{|process_action_callbacks| process_action_callbacks.kind == :before} + .find_all{ |process_action_callbacks| process_action_callbacks.kind == :before } .map(&:filter) expect(before_actions).to include(:set_raven_context) diff --git a/spec/controllers/ban/search_controller_spec.rb b/spec/controllers/ban/search_controller_spec.rb index 7fe454e19..76dfeee43 100644 --- a/spec/controllers/ban/search_controller_spec.rb +++ b/spec/controllers/ban/search_controller_spec.rb @@ -2,20 +2,20 @@ require 'spec_helper' describe Ban::SearchController, type: :controller do describe '#GET get' do - subject { get :get, params: {request: request} } + subject { get :get, params: { request: request } } before do subject end - context 'when request return result', vcr: {cassette_name: 'bano_search_paris'} do + context 'when request return result', vcr: { cassette_name: 'bano_search_paris' } do let (:request) { 'Paris' } it { expect(response.status).to eq 200 } it { expect(response.body).to eq '[{"label":"Paris"},{"label":"Paris 63120 Courpière"},{"label":"PARIS (Vaillac) 46240 Cœur de Causse"},{"label":"Paris 40500 Saint-Sever"},{"label":"Paris Buton 37140 Bourgueil"}]' } end - context 'when request return nothing', vcr: {cassette_name: 'bano_search_nothing'} do + context 'when request return nothing', vcr: { cassette_name: 'bano_search_nothing' } do let (:request) { 'je recherche pas grand chose' } it { expect(response.status).to eq 200 } @@ -25,22 +25,22 @@ describe Ban::SearchController, type: :controller do describe '#GET get_address_point' do let(:dossier_id) { "1" } - subject { get :get_address_point, params: {request: request, dossier_id: dossier_id} } + subject { get :get_address_point, params: { request: request, dossier_id: dossier_id } } before do subject end - context 'when request return result', vcr: {cassette_name: 'ban_search_paris'} do + context 'when request return result', vcr: { cassette_name: 'ban_search_paris' } do let(:request) { 'Paris' } - it { expect(response.body).to eq ({lon: '2.3469', lat: '48.8589', zoom: '14', dossier_id: dossier_id}).to_json } + it { expect(response.body).to eq ({ lon: '2.3469', lat: '48.8589', zoom: '14', dossier_id: dossier_id }).to_json } end - context 'when request return nothing', vcr: {cassette_name: 'ban_search_nothing'} do + context 'when request return nothing', vcr: { cassette_name: 'ban_search_nothing' } do let(:request) { 'je recherche pas grand chose' } - it { expect(response.body).to eq ({lon: nil, lat: nil, zoom: '14', dossier_id: dossier_id}).to_json } + it { expect(response.body).to eq ({ lon: nil, lat: nil, zoom: '14', dossier_id: dossier_id }).to_json } end end end diff --git a/spec/controllers/france_connect/particulier_controller_spec.rb b/spec/controllers/france_connect/particulier_controller_spec.rb index 9bc9e61fd..290842db1 100644 --- a/spec/controllers/france_connect/particulier_controller_spec.rb +++ b/spec/controllers/france_connect/particulier_controller_spec.rb @@ -1,225 +1,103 @@ -require 'spec_helper' - describe FranceConnect::ParticulierController, type: :controller do - let(:code) { 'plop' } - let(:given_name) { 'titi' } - let(:family_name) { 'toto' } let(:birthdate) { '20150821' } - let(:gender) { 'M' } - let(:birthplace) { '1234' } - let(:france_connect_particulier_id) { 'blabla' } let(:email) { 'test@test.com' } - let(:password) { '' } - let(:user_info) { { france_connect_particulier_id: france_connect_particulier_id, given_name: given_name, family_name: family_name, birthdate: birthdate, birthplace: birthplace, gender: gender, email_france_connect: email } } - - describe '.auth' do - it 'redirect to france connect serveur' do - get :login - expect(response.status).to eq(302) - end + let(:user_info) do + { + france_connect_particulier_id: 'blablabla', + given_name: 'titi', + family_name: 'toto', + birthdate: birthdate, + birthplace: '1234', + gender: 'M', + email_france_connect: email + } end - describe '.callback' do + describe '#auth' do + subject { get :login } + + it { is_expected.to have_http_status(:redirect) } + end + + describe '#callback' do + let(:code) { 'plop' } + + subject { get :callback, params: { code: code } } + context 'when param code is missing' do - it 'redirect to login page' do - get :callback - expect(response).to redirect_to(new_user_session_path) - end + let(:code) { nil } + + it { is_expected.to redirect_to(new_user_session_path) } end - context 'when params code is present' do - context 'when code is correct' do - before do - allow(FranceConnectService).to receive(:retrieve_user_informations_particulier) - .and_return(FranceConnectInformation.new(user_info)) - end + context 'when param code is empty' do + let(:code) { '' } - context 'when france_connect_particulier_id exist in database' do - let!(:france_connect_information) { create(:france_connect_information, france_connect_particulier_id: france_connect_particulier_id, given_name: given_name, family_name: family_name, birthdate: birthdate, gender: gender, birthplace: birthplace) } + it { is_expected.to redirect_to(new_user_session_path) } + end - context { - subject { get :callback, params: {code: code} } + context 'when code is correct' do + before do + allow(FranceConnectService).to receive(:retrieve_user_informations_particulier) + .and_return(FranceConnectInformation.new(user_info)) + end - it 'does not create a new france_connect_information in database' do - expect { subject }.not_to change { FranceConnectInformation.count } - end - } + context 'when france_connect_particulier_id exist in database' do + let!(:france_connect_information) { create(:france_connect_information, user_info) } - context 'when france_connect_particulier_id have an associate user' do - before do - create(:user, email: email, france_connect_information: france_connect_information) + it { expect { subject }.not_to change { FranceConnectInformation.count } } - get :callback, params: {code: code} - end + context 'when france_connect_particulier_id have an associate user' do + let!(:user) { create(:user, email: 'plop@plop.com', france_connect_information: france_connect_information) } - let(:email) { 'plop@plop.com' } - let(:current_user) { User.find_by_email(email) } + it do + subject + expect(user.reload.loged_in_with_france_connect).to eq('particulier') + end + + context 'and the user has a stored location' do let(:stored_location) { '/plip/plop' } + before { controller.store_location_for(:user, stored_location) } - it 'current user have attribut loged_in_with_france_connect? at true' do - expect(current_user.loged_in_with_france_connect?).to be_truthy - end - - it 'redirect to stored location' do - subject.store_location_for(:user, stored_location) - - get :callback, params: {code: code} - expect(response).to redirect_to(stored_location) - end - end - - context 'when france_connect_particulier_id does not have an associate user' do - let(:salt) { FranceConnectSaltService.new(france_connect_information).salt } - - before do - get :callback, params: {code: code} - end - - it 'redirects to check email FC page' do - expect(response).to redirect_to(france_connect_particulier_new_path(fci_id: france_connect_information.id, salt: salt)) - end + it { is_expected.to redirect_to(stored_location) } end end - context 'when france_connect_particulier_id does not exist in database' do - let(:last_france_connect_information) { FranceConnectInformation.last } - let(:salt) { FranceConnectSaltService.new(last_france_connect_information).salt } - subject { get :callback, params: {code: code} } + context 'when france_connect_particulier_id does not have an associate user' do + it { is_expected.to redirect_to(root_path) } - it { expect { subject }.to change { FranceConnectInformation.count }.by(1) } - - describe 'FranceConnectInformation attributs' do - before do - get :callback, params: {code: code} - end - - subject { last_france_connect_information } - - it { expect(subject.gender).to eq gender } - it { expect(subject.given_name).to eq given_name } - it { expect(subject.family_name).to eq family_name } - it { expect(subject.email_france_connect).to eq email } - it { expect(subject.birthdate.to_time.to_i).to eq birthdate.to_time.to_i } - it { expect(subject.birthplace).to eq birthplace } - it { expect(subject.france_connect_particulier_id).to eq france_connect_particulier_id } - end - - it 'redirects to check email FC page' do - expect(subject).to redirect_to(france_connect_particulier_new_path(fci_id: last_france_connect_information.id, salt: salt)) + it do + subject + expect(User.find_by(email: email)).not_to be_nil end end end - context 'when code is not correct' do - before do - allow(FranceConnectService).to receive(:retrieve_user_informations_particulier) { raise Rack::OAuth2::Client::Error.new(500, error: 'Unknown') } - get :callback, params: {code: code} + context 'when france_connect_particulier_id does not exist in database' do + it { expect { subject }.to change { FranceConnectInformation.count }.by(1) } + + describe 'FranceConnectInformation attributs' do + let(:stored_fci) { FranceConnectInformation.last } + + before { subject } + + it { expect(stored_fci).to have_attributes(user_info.merge(birthdate: DateTime.parse(birthdate))) } end - it 'redirect to login page' do - expect(response).to redirect_to(new_user_session_path) - end - - it 'display error message' do - expect(flash[:alert]).to be_present - end + it { is_expected.to redirect_to(root_path) } end end - end - describe 'POST #check_email' do - let(:email) { 'plop@gmail.com' } - - let!(:france_connect_information) { create(:france_connect_information) } - let(:france_connect_information_id) { france_connect_information.id } - let(:salt) { FranceConnectSaltService.new(france_connect_information).salt } - - subject { post :check_email, params: {fci_id: france_connect_information_id, salt: salt, user: {email_france_connect: email}} } - - context 'when salt and fci_id does not matches' do - let(:france_connect_information_fake) { create(:france_connect_information, france_connect_particulier_id: 'iugfjh') } - let(:france_connect_information_id) { france_connect_information_fake.id } - - it { is_expected.to redirect_to new_user_session_path } - end - - context 'when salt and fci_id matches' do - context 'when email is not used' do - context 'when email is valid' do - it { expect { subject }.to change { User.count }.by(1) } - - describe 'New user attributs' do - before do - subject - end - - let(:user) { User.last } - - it { expect(user.email).to eq email } - it { expect(user.france_connect_information).to eq france_connect_information } - end - end - - context 'when email is not valid' do - let(:email) { 'kdjizjflk' } - - it { expect { subject }.not_to change { User.count } } - it { is_expected.to redirect_to(france_connect_particulier_new_path fci_id: france_connect_information.id, salt: salt, user: {email_france_connect: email}) } - end + context 'when code is not correct' do + before do + allow(FranceConnectService).to receive(:retrieve_user_informations_particulier) { raise Rack::OAuth2::Client::Error.new(500, error: 'Unknown') } + subject end - context 'when email is used' do - let!(:user) { create(:user, email: france_connect_information.email_france_connect) } - let(:email) { france_connect_information.email_france_connect } - let(:password) { user.password } + it { expect(response).to redirect_to(new_user_session_path) } - before do - subject - end - - subject { post :check_email, params: {fci_id: france_connect_information_id, salt: salt, user: {email_france_connect: email, password: password}} } - - context 'when email and password couple is valid' do - it { expect { subject }.not_to change { User.count } } - - describe 'Update user attributs' do - before do - subject - end - - it { expect(user.france_connect_information).to eq france_connect_information } - end - end - - context 'when email and password couple is not valid' do - let(:password) { 'fake' } - - it { expect(flash.alert).to eq 'Mot de passe invalide' } - end - end - end - end - - describe 'POST #create' do - let!(:france_connect_information) { create(:france_connect_information, email_france_connect: email) } - let(:france_connect_information_id) { france_connect_information.id } - let(:salt) { FranceConnectSaltService.new(france_connect_information).salt } - - subject { post :create, params: {fci_id: france_connect_information_id, salt: salt, user: {email_france_connect: france_connect_information.email_france_connect}} } - - context 'when email is filled' do - let(:email) { 'plop@gmail.com' } - - it { expect { subject }.to change { User.count }.by(1) } - it { expect(subject).to redirect_to(root_path) } - end - - context 'when email is incorrect' do - let(:email) { '' } - - it { expect { subject }.not_to change { User.count } } - it { expect(subject).to redirect_to(france_connect_particulier_new_path(fci_id: france_connect_information_id, salt: salt, user: {email_france_connect: france_connect_information.email_france_connect})) } + it { expect(flash[:alert]).to be_present } end end end diff --git a/spec/controllers/invites_controller_spec.rb b/spec/controllers/invites_controller_spec.rb index 29e6f6853..f32dbaf68 100644 --- a/spec/controllers/invites_controller_spec.rb +++ b/spec/controllers/invites_controller_spec.rb @@ -11,7 +11,7 @@ describe InvitesController, type: :controller do sign_in signed_in_profile end - subject { post :create, params: {dossier_id: dossier.id, email: email} } + subject { post :create, params: { dossier_id: dossier.id, email: email } } context "when gestionnaire is signed_in" do let(:signed_in_profile) { create(:gestionnaire) } diff --git a/spec/controllers/administrations_controller_spec.rb b/spec/controllers/manager/administrateurs_controller_spec.rb similarity index 62% rename from spec/controllers/administrations_controller_spec.rb rename to spec/controllers/manager/administrateurs_controller_spec.rb index 1ce833d1b..9a7d58fcd 100644 --- a/spec/controllers/administrations_controller_spec.rb +++ b/spec/controllers/manager/administrateurs_controller_spec.rb @@ -1,23 +1,5 @@ -require 'spec_helper' - -describe AdministrationsController, type: :controller do - let(:administration) { create :administration } - - describe 'GET #index' do - subject { get :index } - - context 'when administration user is not connect' do - it { expect(subject.status).to eq 302 } - end - - context 'when administration user is connect' do - before do - sign_in administration - end - - it { expect(subject.status).to eq 200 } - end - end +describe Manager::AdministrateursController, type: :controller do + let(:administration){ create(:administration) } describe 'POST #create' do let(:email) { 'plop@plop.com' } @@ -27,7 +9,7 @@ describe AdministrationsController, type: :controller do sign_in administration end - subject { post :create, administrateur: {email: email } } + subject { post :create, administrateur: { email: email } } context 'when email and password are correct' do it 'add new administrateur in database' do diff --git a/spec/controllers/new_gestionnaire/dossiers_controller_spec.rb b/spec/controllers/new_gestionnaire/dossiers_controller_spec.rb index 4249ecfaa..26deeb93c 100644 --- a/spec/controllers/new_gestionnaire/dossiers_controller_spec.rb +++ b/spec/controllers/new_gestionnaire/dossiers_controller_spec.rb @@ -95,7 +95,7 @@ describe NewGestionnaire::DossiersController, type: :controller do sign_in gestionnaire end - subject { post :repasser_en_construction, params: { procedure_id: procedure.id, dossier_id: dossier.id} } + subject { post :repasser_en_construction, params: { procedure_id: procedure.id, dossier_id: dossier.id } } it 'change state to en_construction' do subject @@ -114,7 +114,7 @@ describe NewGestionnaire::DossiersController, type: :controller do sign_in gestionnaire end - subject { post :terminer, params: { process_action: "refuser", procedure_id: procedure.id, dossier_id: dossier.id} } + subject { post :terminer, params: { process_action: "refuser", procedure_id: procedure.id, dossier_id: dossier.id } } it 'change state to refuse' do subject @@ -140,7 +140,7 @@ describe NewGestionnaire::DossiersController, type: :controller do sign_in gestionnaire end - subject { post :terminer, params: { process_action: "classer_sans_suite", procedure_id: procedure.id, dossier_id: dossier.id} } + subject { post :terminer, params: { process_action: "classer_sans_suite", procedure_id: procedure.id, dossier_id: dossier.id } } it 'change state to sans_suite' do subject @@ -174,7 +174,7 @@ describe NewGestionnaire::DossiersController, type: :controller do expect(NotificationMailer).to receive(:deliver_now!) end - subject { post :terminer, params: { process_action: "accepter", procedure_id: procedure.id, dossier_id: dossier.id} } + subject { post :terminer, params: { process_action: "accepter", procedure_id: procedure.id, dossier_id: dossier.id } } it 'change state to accepte' do subject diff --git a/spec/controllers/new_gestionnaire/gestionnaire_controller_spec.rb b/spec/controllers/new_gestionnaire/gestionnaire_controller_spec.rb index ed8ac8fba..83c189582 100644 --- a/spec/controllers/new_gestionnaire/gestionnaire_controller_spec.rb +++ b/spec/controllers/new_gestionnaire/gestionnaire_controller_spec.rb @@ -5,11 +5,10 @@ describe NewGestionnaire::GestionnaireController, type: :controller do it 'is present' do before_actions = NewGestionnaire::GestionnaireController ._process_action_callbacks - .find_all{|process_action_callbacks| process_action_callbacks.kind == :before} + .find_all{ |process_action_callbacks| process_action_callbacks.kind == :before } .map(&:filter) expect(before_actions).to include(:authenticate_gestionnaire!) end end end - diff --git a/spec/controllers/new_gestionnaire/procedures_controller_spec.rb b/spec/controllers/new_gestionnaire/procedures_controller_spec.rb index 24317adcf..3f79fd866 100644 --- a/spec/controllers/new_gestionnaire/procedures_controller_spec.rb +++ b/spec/controllers/new_gestionnaire/procedures_controller_spec.rb @@ -5,7 +5,7 @@ describe NewGestionnaire::ProceduresController, type: :controller do it "is present" do before_actions = NewGestionnaire::ProceduresController ._process_action_callbacks - .find_all{|process_action_callbacks| process_action_callbacks.kind == :before} + .find_all{ |process_action_callbacks| process_action_callbacks.kind == :before } .map(&:filter) expect(before_actions).to include(:ensure_ownership!) @@ -46,7 +46,7 @@ describe NewGestionnaire::ProceduresController, type: :controller do it "is present" do before_actions = NewGestionnaire::ProceduresController ._process_action_callbacks - .find_all{|process_action_callbacks| process_action_callbacks.kind == :before} + .find_all{ |process_action_callbacks| process_action_callbacks.kind == :before } .map(&:filter) expect(before_actions).to include(:redirect_to_avis_if_needed) @@ -89,7 +89,7 @@ describe NewGestionnaire::ProceduresController, type: :controller do context "when not logged" do before { subject } - it { expect(response).to redirect_to(new_user_session_path)} + it { expect(response).to redirect_to(new_user_session_path) } end context "when logged in" do diff --git a/spec/controllers/new_user/dossiers_controller_spec.rb b/spec/controllers/new_user/dossiers_controller_spec.rb index b08d7d21d..360a7548f 100644 --- a/spec/controllers/new_user/dossiers_controller_spec.rb +++ b/spec/controllers/new_user/dossiers_controller_spec.rb @@ -7,7 +7,7 @@ describe NewUser::DossiersController, type: :controller do it 'is present' do before_actions = NewUser::DossiersController ._process_action_callbacks - .find_all{|process_action_callbacks| process_action_callbacks.kind == :before} + .find_all{ |process_action_callbacks| process_action_callbacks.kind == :before } .map(&:filter) expect(before_actions).to include(:ensure_ownership!) diff --git a/spec/controllers/new_user/user_controller_spec.rb b/spec/controllers/new_user/user_controller_spec.rb index 125466fb6..b4e93c10c 100644 --- a/spec/controllers/new_user/user_controller_spec.rb +++ b/spec/controllers/new_user/user_controller_spec.rb @@ -5,7 +5,7 @@ describe NewUser::UserController, type: :controller do it 'is present' do before_actions = NewUser::UserController ._process_action_callbacks - .find_all{|process_action_callbacks| process_action_callbacks.kind == :before} + .find_all{ |process_action_callbacks| process_action_callbacks.kind == :before } .map(&:filter) expect(before_actions).to include(:authenticate_user!) diff --git a/spec/controllers/root_controller_spec.rb b/spec/controllers/root_controller_spec.rb index 29538876b..7dc4aeae1 100644 --- a/spec/controllers/root_controller_spec.rb +++ b/spec/controllers/root_controller_spec.rb @@ -37,7 +37,7 @@ describe RootController, type: :controller do sign_in create(:administration) end - it { expect(subject).to redirect_to(administrations_path) } + it { expect(subject).to redirect_to(manager_root_path) } end context 'when nobody is connected' do diff --git a/spec/controllers/stats_controller_spec.rb b/spec/controllers/stats_controller_spec.rb index 74e912e49..625b56133 100644 --- a/spec/controllers/stats_controller_spec.rb +++ b/spec/controllers/stats_controller_spec.rb @@ -298,7 +298,7 @@ describe StatsController, type: :controller do end describe '#motivation_usage_procedure' do - let!(:dossier) { create(:dossier, processed_at: 1.week.ago, motivation: "Motivation" ) } + let!(:dossier) { create(:dossier, processed_at: 1.week.ago, motivation: "Motivation") } let!(:dossier1) { create(:dossier, processed_at: 1.week.ago, motivation: "Motivation", procedure: dossier.procedure) } let!(:dossier2) { create(:dossier, processed_at: 1.week.ago) } let!(:dossier3) { create(:dossier, processed_at: 1.week.ago) } diff --git a/spec/controllers/users/carte_controller_shared_example.rb b/spec/controllers/users/carte_controller_shared_example.rb index 01c885884..4e250c772 100644 --- a/spec/controllers/users/carte_controller_shared_example.rb +++ b/spec/controllers/users/carte_controller_shared_example.rb @@ -7,7 +7,7 @@ shared_examples 'carte_controller_spec' do dossier.state = 'en_instruction' dossier.save - get :show, params: {dossier_id: dossier.id} + get :show, params: { dossier_id: dossier.id } end it { is_expected.to redirect_to root_path } @@ -18,7 +18,7 @@ shared_examples 'carte_controller_spec' do let(:dossier) { create(:dossier) } before do - get :show, params: {dossier_id: dossier.id} + get :show, params: { dossier_id: dossier.id } end it { is_expected.to redirect_to(root_path) } @@ -31,26 +31,26 @@ shared_examples 'carte_controller_spec' do end it 'redirects to users/sign_in' do - get :show, params: {dossier_id: dossier.id} + get :show, params: { dossier_id: dossier.id } expect(response).to redirect_to('/users/sign_in') end end it 'returns http success if carto is activated' do - get :show, params: {dossier_id: dossier.id} + get :show, params: { dossier_id: dossier.id } expect(response).to have_http_status(:success) end context 'when procedure not have activate api carto' do it 'redirection on user dossier list' do - get :show, params: {dossier_id: dossier_with_no_carto.id} + get :show, params: { dossier_id: dossier_with_no_carto.id } expect(response).to redirect_to(root_path) end end context 'when dossier id not exist' do it 'redirection on user dossier list' do - get :show, params: {dossier_id: bad_dossier_id} + get :show, params: { dossier_id: bad_dossier_id } expect(response).to redirect_to(root_path) end end @@ -61,7 +61,7 @@ shared_examples 'carte_controller_spec' do describe 'POST #save' do context 'Aucune localisation n\'a jamais été enregistrée' do it do - post :save, params: {dossier_id: dossier.id, json_latlngs: ''} + post :save, params: { dossier_id: dossier.id, json_latlngs: '' } expect(response).to redirect_to("/users/dossiers/#{dossier.id}/description") end end @@ -69,7 +69,7 @@ shared_examples 'carte_controller_spec' do context 'En train de modifier la localisation' do let(:dossier) { create(:dossier, state: 'en_construction') } before do - post :save, params: {dossier_id: dossier.id, json_latlngs: ''} + post :save, params: { dossier_id: dossier.id, json_latlngs: '' } end it 'Redirection vers la page récapitulatif' do @@ -83,9 +83,9 @@ shared_examples 'carte_controller_spec' do before do allow_any_instance_of(CARTO::SGMAP::QuartiersPrioritaires::Adapter) .to receive(:to_params) - .and_return({"QPCODE1234" => {:code => "QPCODE1234", :nom => "QP de test", :commune => "Paris", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) + .and_return({ "QPCODE1234" => { :code => "QPCODE1234", :nom => "QP de test", :commune => "Paris", :geometry => { :type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]] } } }) - post :save, params: {dossier_id: dossier.id, json_latlngs: json_latlngs} + post :save, params: { dossier_id: dossier.id, json_latlngs: json_latlngs } end context 'when json_latlngs params is empty' do @@ -130,9 +130,9 @@ shared_examples 'carte_controller_spec' do before do allow_any_instance_of(CARTO::SGMAP::Cadastre::Adapter) .to receive(:to_params) - .and_return([{:surface_intersection => "0.0006", :surface_parcelle => 11252.692583090324, :numero => "0013", :feuille => 1, :section => "CD", :code_dep => "30", :nom_com => "Le Grau-du-Roi", :code_com => "133", :code_arr => "000", :geometry => {:type => "MultiPolygon", :coordinates => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}}]) + .and_return([{ :surface_intersection => "0.0006", :surface_parcelle => 11252.692583090324, :numero => "0013", :feuille => 1, :section => "CD", :code_dep => "30", :nom_com => "Le Grau-du-Roi", :code_com => "133", :code_arr => "000", :geometry => { :type => "MultiPolygon", :coordinates => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]] } }]) - post :save, params: {dossier_id: dossier.id, json_latlngs: json_latlngs} + post :save, params: { dossier_id: dossier.id, json_latlngs: json_latlngs } end context 'when json_latlngs params is empty' do @@ -172,7 +172,7 @@ shared_examples 'carte_controller_spec' do it { expect(subject.nom_com).to eq('Le Grau-du-Roi') } it { expect(subject.code_com).to eq('133') } it { expect(subject.code_arr).to eq('000') } - it { expect(subject.geometry).to eq({"type" => "MultiPolygon", "coordinates" => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}) } + it { expect(subject.geometry).to eq({ "type" => "MultiPolygon", "coordinates" => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]] }) } end end end @@ -185,7 +185,7 @@ shared_examples 'carte_controller_spec' do stub_request(:get, /http:\/\/api-adresse[.]data[.]gouv[.]fr\/search[?]limit=1&q=/) .to_return(status: 200, body: '{"query": "babouba", "version": "draft", "licence": "ODbL 1.0", "features": [], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) - get :get_position, params: {dossier_id: dossier.id} + get :get_position, params: { dossier_id: dossier.id } end subject { JSON.parse(response.body) } @@ -203,7 +203,7 @@ shared_examples 'carte_controller_spec' do before do stub_request(:get, /http:\/\/api-adresse[.]data[.]gouv[.]fr\/search[?]limit=1&q=/) .to_return(status: 200, body: '{"query": "babouba", "version": "draft", "licence": "ODbL 1.0", "features": [], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) - get :get_position, params: {dossier_id: dossier.id} + get :get_position, params: { dossier_id: dossier.id } end subject { JSON.parse(response.body) } @@ -219,7 +219,7 @@ shared_examples 'carte_controller_spec' do stub_request(:get, "http://api-adresse.data.gouv.fr/search?limit=1&q=#{adresse}") .to_return(status: 200, body: '{"query": "50 avenue des champs u00e9lysu00e9es Paris 75008", "version": "draft", "licence": "ODbL 1.0", "features": [{"geometry": {"coordinates": [2.306888, 48.870374], "type": "Point"}, "type": "Feature", "properties": {"city": "Paris", "label": "50 Avenue des Champs u00c9lysu00e9es 75008 Paris", "housenumber": "50", "id": "ADRNIVX_0000000270748251", "postcode": "75008", "name": "50 Avenue des Champs u00c9lysu00e9es", "citycode": "75108", "context": "75, u00cele-de-France", "score": 0.9054545454545454, "type": "housenumber"}}], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) - get :get_position, params: {dossier_id: dossier.id} + get :get_position, params: { dossier_id: dossier.id } end subject { JSON.parse(response.body) } @@ -245,9 +245,9 @@ shared_examples 'carte_controller_spec' do before do allow_any_instance_of(CARTO::SGMAP::QuartiersPrioritaires::Adapter) .to receive(:to_params) - .and_return({"QPCODE1234" => {:code => "QPCODE1234", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) + .and_return({ "QPCODE1234" => { :code => "QPCODE1234", :geometry => { :type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]] } } }) - post :get_qp, params: {dossier_id: dossier.id, coordinates: coordinates} + post :get_qp, params: { dossier_id: dossier.id, coordinates: coordinates } end context 'when coordinates are empty' do diff --git a/spec/controllers/users/description_controller_spec.rb b/spec/controllers/users/description_controller_spec.rb index 4421f1f35..fef283d04 100644 --- a/spec/controllers/users/description_controller_spec.rb +++ b/spec/controllers/users/description_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' require 'controllers/users/description_controller_shared_example' -describe Users::DescriptionController, type: :controller, vcr: {cassette_name: 'controllers_users_description_controller'} do +describe Users::DescriptionController, type: :controller, vcr: { cassette_name: 'controllers_users_description_controller' } do let(:owner_user) { create(:user) } let(:invite_by_user) { create :user, email: 'invite@plop.com' } let(:archived_at) { nil } diff --git a/spec/controllers/users/dossiers/add_siret_controller_spec.rb b/spec/controllers/users/dossiers/add_siret_controller_spec.rb index 2481fd480..de449881c 100644 --- a/spec/controllers/users/dossiers/add_siret_controller_spec.rb +++ b/spec/controllers/users/dossiers/add_siret_controller_spec.rb @@ -8,7 +8,7 @@ describe Users::Dossiers::AddSiretController, type: :controller do sign_in dossier.user end - subject { get :show, params:{dossier_id: dossier.id }} + subject { get :show, params: { dossier_id: dossier.id } } context 'when dossier is not attached at a procedure with individual siret attribut' do it { is_expected.to redirect_to users_dossiers_path } diff --git a/spec/controllers/users/dossiers/commentaires_controller_spec.rb b/spec/controllers/users/dossiers/commentaires_controller_spec.rb index 18908f468..00519c3e2 100644 --- a/spec/controllers/users/dossiers/commentaires_controller_spec.rb +++ b/spec/controllers/users/dossiers/commentaires_controller_spec.rb @@ -6,7 +6,7 @@ describe Users::Dossiers::CommentairesController, type: :controller do describe '#POST create' do subject { - post :create, params:{dossier_id: dossier.id, texte_commentaire: texte_commentaire} + post :create, params: { dossier_id: dossier.id, texte_commentaire: texte_commentaire } dossier.reload } diff --git a/spec/controllers/users/dossiers/invites_controller_spec.rb b/spec/controllers/users/dossiers/invites_controller_spec.rb index e80f94632..a02810436 100644 --- a/spec/controllers/users/dossiers/invites_controller_spec.rb +++ b/spec/controllers/users/dossiers/invites_controller_spec.rb @@ -6,7 +6,7 @@ describe Users::Dossiers::InvitesController, type: :controller do context 'when email is not set' do context 'when user is not connected' do before do - get :show, params: {id: invite.id} + get :show, params: { id: invite.id } end it { is_expected.to redirect_to new_user_session_path } @@ -18,7 +18,7 @@ describe Users::Dossiers::InvitesController, type: :controller do before do sign_in invite.user - get :show, params: {id: invite.id} + get :show, params: { id: invite.id } end it { expect(response.status).to eq 200 } @@ -27,7 +27,7 @@ describe Users::Dossiers::InvitesController, type: :controller do context 'when email is set' do before do - get :show, params: {id: invite.id, email: email} + get :show, params: { id: invite.id, email: email } end context 'when email is blank' do @@ -57,7 +57,7 @@ describe Users::Dossiers::InvitesController, type: :controller do let(:invite) { create :invite, email: email, dossier: (create :dossier) } - subject { get :show, params: {id: invite.id} } + subject { get :show, params: { id: invite.id } } before do sign_in user diff --git a/spec/controllers/users/dossiers_controller_spec.rb b/spec/controllers/users/dossiers_controller_spec.rb index 3b5865c60..6635d49d0 100644 --- a/spec/controllers/users/dossiers_controller_spec.rb +++ b/spec/controllers/users/dossiers_controller_spec.rb @@ -27,12 +27,12 @@ describe Users::DossiersController, type: :controller do sign_in dossier.user end it 'returns http success with dossier_id valid' do - get :show, params: {id: dossier_id} + get :show, params: { id: dossier_id } expect(response).to have_http_status(:success) end it 'redirection vers liste dossier si mauvais dossier ID' do - get :show, params: {id: siret_not_found} + get :show, params: { id: siret_not_found } expect(response).to redirect_to root_path end @@ -42,7 +42,7 @@ describe Users::DossiersController, type: :controller do dossier.state = 'en_instruction' dossier.save - get :show, params: {id: dossier.id} + get :show, params: { id: dossier.id } end it { is_expected.to redirect_to root_path } @@ -51,7 +51,7 @@ describe Users::DossiersController, type: :controller do end describe 'GET #new' do - subject { get :new, params: {procedure_id: procedure_id} } + subject { get :new, params: { procedure_id: procedure_id } } context 'when params procedure_id is present' do context 'when procedure_id is valid' do @@ -68,7 +68,7 @@ describe Users::DossiersController, type: :controller do describe 'save user siret' do context 'when user have not a saved siret' do context 'when siret is present on request' do - subject { get :new, params: {procedure_id: procedure_id, siret: siret} } + subject { get :new, params: { procedure_id: procedure_id, siret: siret } } before do subject @@ -96,7 +96,7 @@ describe Users::DossiersController, type: :controller do end context 'when siret is present on request' do - subject { get :new, params: {procedure_id: procedure_id, siret: siret} } + subject { get :new, params: { procedure_id: procedure_id, siret: siret } } before do subject @@ -203,7 +203,7 @@ describe Users::DossiersController, type: :controller do sign_in user end - subject { post :siret_informations, params: {dossier_id: dossier.id, dossier: {siret: example_siret}} } + subject { post :siret_informations, params: { dossier_id: dossier.id, dossier: { siret: example_siret } } } it 'create a dossier' do expect { subject }.to change { Dossier.count }.by(0) @@ -331,7 +331,7 @@ describe Users::DossiersController, type: :controller do end let(:siret_not_found) { '11111111111111' } - subject { post :siret_informations, params: {dossier_id: dossier.id, dossier: {siret: siret_not_found}} } + subject { post :siret_informations, params: { dossier_id: dossier.id, dossier: { siret: siret_not_found } } } it 'does not create new dossier' do expect { subject }.not_to change { Dossier.count } @@ -346,7 +346,7 @@ describe Users::DossiersController, type: :controller do context 'when REST error 400 is return' do let(:status_entreprise_call) { 400 } - subject { post :siret_informations, params: {dossier_id: dossier.id, dossier: {siret: siret}} } + subject { post :siret_informations, params: { dossier_id: dossier.id, dossier: { siret: siret } } } before do sign_in user @@ -437,7 +437,7 @@ describe Users::DossiersController, type: :controller do let!(:dossier_brouillon) { create :dossier, state: "brouillon", user: user } let!(:dossier_not_brouillon) { create :dossier, state: "en_construction", user: user } - subject { delete :destroy, params: {id: dossier.id} } + subject { delete :destroy, params: { id: dossier.id } } before do sign_in user @@ -474,7 +474,7 @@ describe Users::DossiersController, type: :controller do describe 'PUT #change_siret' do let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) } - subject { put :change_siret, params: {dossier_id: dossier.id} } + subject { put :change_siret, params: { dossier_id: dossier.id } } before do sign_in user @@ -495,7 +495,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, params: {liste: :a_traiter} + get :index, params: { liste: :a_traiter } expect(response).to have_http_status(200) end end @@ -508,7 +508,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, params: {liste: :en_instruction} + get :index, params: { liste: :en_instruction } expect(response).to have_http_status(200) end end @@ -521,7 +521,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, params: {liste: :brouillon} + get :index, params: { liste: :brouillon } expect(response).to have_http_status(200) end end @@ -534,7 +534,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, params: {liste: :termine} + get :index, params: { liste: :termine } expect(response).to have_http_status(200) end end @@ -547,7 +547,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, params: {liste: :invite} + get :index, params: { liste: :invite } expect(response).to have_http_status(200) end end @@ -560,7 +560,7 @@ describe Users::DossiersController, type: :controller do end it 'returns http success' do - get :index, params: {liste: :list_fake} + get :index, params: { liste: :list_fake } expect(response).to redirect_to(users_dossiers_path) end end diff --git a/spec/controllers/users/recapitulatif_controller_spec.rb b/spec/controllers/users/recapitulatif_controller_spec.rb index d5c9c9490..f288504c9 100644 --- a/spec/controllers/users/recapitulatif_controller_spec.rb +++ b/spec/controllers/users/recapitulatif_controller_spec.rb @@ -10,12 +10,12 @@ describe Users::RecapitulatifController, type: :controller do describe 'GET #show' do it 'returns http success' do - get :show, params: {dossier_id: dossier.id} + get :show, params: { dossier_id: dossier.id } expect(response).to have_http_status(:success) end it 'redirection vers siret si mauvais dossier ID' do - get :show, params: {dossier_id: bad_dossier_id} + get :show, params: { dossier_id: bad_dossier_id } expect(response).to redirect_to('/') end @@ -27,7 +27,7 @@ describe Users::RecapitulatifController, type: :controller do dossier.state = 'brouillon' dossier.save - get :show, params: {dossier_id: dossier.id} + get :show, params: { dossier_id: dossier.id } end it { is_expected.to redirect_to root_path } @@ -38,7 +38,7 @@ describe Users::RecapitulatifController, type: :controller do describe 'POST #initiate' do context 'when an user initiate his dossier' do before do - post :initiate, params: {dossier_id: dossier.id} + post :initiate, params: { dossier_id: dossier.id } end it 'dossier change his state for accepte' do diff --git a/spec/controllers/users/sessions_controller_spec.rb b/spec/controllers/users/sessions_controller_spec.rb index 2263df65e..cb0daa0de 100644 --- a/spec/controllers/users/sessions_controller_spec.rb +++ b/spec/controllers/users/sessions_controller_spec.rb @@ -13,7 +13,7 @@ describe Users::SessionsController, type: :controller do describe 'France Connect attribut' do before do - post :create, params: {user: {email: user.email, password: user.password}} + post :create, params: { user: { email: user.email, password: user.password } } user.reload end @@ -31,7 +31,7 @@ describe Users::SessionsController, type: :controller do let(:administrateur) { create(:administrateur, email: email, password: password) } it 'signs user in' do - post :create, params: {user: {email: user.email, password: user.password}} + post :create, params: { user: { email: user.email, password: user.password } } expect(@response.redirect?).to be(true) expect(subject.current_user).to eq(user) expect(subject.current_gestionnaire).to be(nil) @@ -40,7 +40,7 @@ describe Users::SessionsController, type: :controller do end it 'signs gestionnaire in' do - post :create, params: {user: {email: gestionnaire.email, password: gestionnaire.password}} + post :create, params: { user: { email: gestionnaire.email, password: gestionnaire.password } } expect(@response.redirect?).to be(true) expect(subject.current_user).to be(nil) expect(subject.current_gestionnaire).to eq(gestionnaire) @@ -48,7 +48,7 @@ describe Users::SessionsController, type: :controller do end it 'signs administrateur in' do - post :create, params: {user: {email: administrateur.email, password: administrateur.password}} + post :create, params: { user: { email: administrateur.email, password: administrateur.password } } expect(@response.redirect?).to be(true) expect(subject.current_user).to be(nil) expect(subject.current_gestionnaire).to be(nil) @@ -62,7 +62,7 @@ describe Users::SessionsController, type: :controller do end it 'signs user + gestionnaire + administrateur in' do - post :create, params: {user: {email: administrateur.email, password: administrateur.password}} + post :create, params: { user: { email: administrateur.email, password: administrateur.password } } expect(@response.redirect?).to be(true) expect(subject.current_user).to eq(user) expect(subject.current_gestionnaire).to eq(gestionnaire) @@ -72,7 +72,7 @@ describe Users::SessionsController, type: :controller do } it 'fails to sign in with bad credentials' do - post :create, params: {user: {email: user.email, password: 'wrong_password'}} + post :create, params: { user: { email: user.email, password: 'wrong_password' } } expect(@response.unauthorized?).to be(true) expect(subject.current_user).to be(nil) expect(subject.current_gestionnaire).to be(nil) diff --git a/spec/decorators/champ_decorator_spec.rb b/spec/decorators/champ_decorator_spec.rb index 2dc572ec5..bcf58ed17 100644 --- a/spec/decorators/champ_decorator_spec.rb +++ b/spec/decorators/champ_decorator_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe ChampDecorator do - let(:champ) {create :champ, type_de_champ: (create :type_de_champ_public, type_champ: type_champ)} + let(:champ) { create :champ, type_de_champ: (create :type_de_champ_public, type_champ: type_champ) } let(:decorator) { champ.decorate } describe 'value' do diff --git a/spec/features/france_connect/france_connect_particulier_spec.rb b/spec/features/france_connect/france_connect_particulier_spec.rb index 41b57d27f..dd221153e 100644 --- a/spec/features/france_connect/france_connect_particulier_spec.rb +++ b/spec/features/france_connect/france_connect_particulier_spec.rb @@ -55,19 +55,9 @@ feature 'France Connect Particulier Connexion' do before do page.find('.login-with-fc').click end - scenario 'he is redirected to france connect particulier page' do - expect(page).to have_content('Nouvelle connexion') - end - context 'when he fill an email and valid' do - before do - page.find_by_id('user_email_france_connect').set email - page.find_by_id('valid_new_fcp').click - end - - scenario 'he is redirected to user dossiers page' do - expect(page).to have_content('Dossiers') - end + scenario 'he is redirected to user dossiers page' do + expect(page).to have_content('Dossiers') end end diff --git a/spec/features/users/dossier_creation_spec.rb b/spec/features/users/dossier_creation_spec.rb index bba22f26c..564f224f5 100644 --- a/spec/features/users/dossier_creation_spec.rb +++ b/spec/features/users/dossier_creation_spec.rb @@ -41,7 +41,7 @@ feature 'As a User I wanna create a dossier' do end end - scenario 'Identification through siret', vcr: {cassette_name: 'search_ban_paris'}, js: true do + scenario 'Identification through siret', vcr: { cassette_name: 'search_ban_paris' }, js: true do login_as user, scope: :user visit commencer_path(procedure_path: procedure_with_siret.path) expect(page).to have_current_path(users_dossier_path(procedure_with_siret.dossiers.last.id.to_s), only_path: true) diff --git a/spec/features/users/dossier_edition_spec.rb b/spec/features/users/dossier_edition_spec.rb index 32c972110..86d7f1708 100644 --- a/spec/features/users/dossier_edition_spec.rb +++ b/spec/features/users/dossier_edition_spec.rb @@ -12,7 +12,7 @@ feature 'As a User I want to edit a dossier I own' do context 'After sign_in, I can navigate through dossiers indexes and edit a dossier' do scenario 'After sign_in, I can see dossiers "à traiter" (default), and other indexes' do - expect(page.find('#a_traiter')['class'] ).to eq('active procedure-list-element') + expect(page.find('#a_traiter')['class']).to eq('active procedure-list-element') page.find_by_id('brouillon').click page.find_by_id('a_traiter').click page.find_by_id('en_instruction').click diff --git a/spec/features/users/list_dossiers_spec.rb b/spec/features/users/list_dossiers_spec.rb index edd93ec63..195e80a72 100644 --- a/spec/features/users/list_dossiers_spec.rb +++ b/spec/features/users/list_dossiers_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' describe 'user access to the list of his dossier' do let(:user) { create(:user) } - let!(:last_updated_dossier) { create(:dossier, :with_entreprise, user: user, state: 'en_construction')} + let!(:last_updated_dossier) { create(:dossier, :with_entreprise, user: user, state: 'en_construction') } let!(:dossier1) { create(:dossier, :with_entreprise, user: user, state: 'en_construction') } let!(:dossier2) { create(:dossier, :with_entreprise) } let!(:dossier_archived) { create(:dossier, :with_entreprise, user: user, state: 'en_construction') } diff --git a/spec/helpers/dossier_link_helper_spec.rb b/spec/helpers/dossier_link_helper_spec.rb index 5613c5207..504524d5f 100644 --- a/spec/helpers/dossier_link_helper_spec.rb +++ b/spec/helpers/dossier_link_helper_spec.rb @@ -8,7 +8,7 @@ describe DossierLinkHelper do end context "when access as gestionnaire" do - let(:dossier) { create(:dossier ) } + let(:dossier) { create(:dossier) } let(:gestionnaire) { create(:gestionnaire) } before { dossier.procedure.gestionnaires << gestionnaire } @@ -17,7 +17,7 @@ describe DossierLinkHelper do end context "when access as expert" do - let(:dossier) { create(:dossier ) } + let(:dossier) { create(:dossier) } let(:gestionnaire) { create(:gestionnaire) } let!(:avis) { create(:avis, dossier: dossier, gestionnaire: gestionnaire) } diff --git a/spec/jobs/auto_archive_procedure_job_spec.rb b/spec/jobs/auto_archive_procedure_job_spec.rb index 5aea4b70d..2f92e5f2f 100644 --- a/spec/jobs/auto_archive_procedure_job_spec.rb +++ b/spec/jobs/auto_archive_procedure_job_spec.rb @@ -1,10 +1,10 @@ require 'rails_helper' RSpec.describe AutoArchiveProcedureJob, type: :job do - let!(:procedure) { create(:procedure, published_at: Time.now, archived_at: nil, auto_archive_on: nil )} - let!(:procedure_hier) { create(:procedure, published_at: Time.now, archived_at: nil, auto_archive_on: 1.day.ago )} - let!(:procedure_aujourdhui) { create(:procedure, published_at: Time.now, archived_at: nil, auto_archive_on: Date.today )} - let!(:procedure_demain) { create(:procedure, published_at: Time.now, archived_at: nil, auto_archive_on: 1.day.from_now )} + let!(:procedure) { create(:procedure, published_at: Time.now, archived_at: nil, auto_archive_on: nil) } + let!(:procedure_hier) { create(:procedure, published_at: Time.now, archived_at: nil, auto_archive_on: 1.day.ago) } + let!(:procedure_aujourdhui) { create(:procedure, published_at: Time.now, archived_at: nil, auto_archive_on: Date.today) } + let!(:procedure_demain) { create(:procedure, published_at: Time.now, archived_at: nil, auto_archive_on: 1.day.from_now) } subject { AutoArchiveProcedureJob.new.perform } @@ -18,15 +18,15 @@ RSpec.describe AutoArchiveProcedureJob, type: :job do end context "when procedures have auto_archive_on set on yesterday or today" do - let!(:dossier1) { create(:dossier, procedure: procedure_hier, state: 'brouillon', archived: false)} - let!(:dossier2) { create(:dossier, procedure: procedure_hier, state: 'en_construction', archived: false)} - let!(:dossier3) { create(:dossier, procedure: procedure_hier, state: 'en_construction', archived: false)} - let!(:dossier4) { create(:dossier, procedure: procedure_hier, state: 'en_construction', archived: false)} - let!(:dossier5) { create(:dossier, procedure: procedure_hier, state: 'en_instruction', archived: false)} - let!(:dossier6) { create(:dossier, procedure: procedure_hier, state: 'accepte', archived: false)} - let!(:dossier7) { create(:dossier, procedure: procedure_hier, state: 'refuse', archived: false)} - let!(:dossier8) { create(:dossier, procedure: procedure_hier, state: 'sans_suite', archived: false)} - let!(:dossier9) { create(:dossier, procedure: procedure_aujourdhui, state: 'en_construction', archived: false)} + let!(:dossier1) { create(:dossier, procedure: procedure_hier, state: 'brouillon', archived: false) } + let!(:dossier2) { create(:dossier, procedure: procedure_hier, state: 'en_construction', archived: false) } + let!(:dossier3) { create(:dossier, procedure: procedure_hier, state: 'en_construction', archived: false) } + let!(:dossier4) { create(:dossier, procedure: procedure_hier, state: 'en_construction', archived: false) } + let!(:dossier5) { create(:dossier, procedure: procedure_hier, state: 'en_instruction', archived: false) } + let!(:dossier6) { create(:dossier, procedure: procedure_hier, state: 'accepte', archived: false) } + let!(:dossier7) { create(:dossier, procedure: procedure_hier, state: 'refuse', archived: false) } + let!(:dossier8) { create(:dossier, procedure: procedure_hier, state: 'sans_suite', archived: false) } + let!(:dossier9) { create(:dossier, procedure: procedure_aujourdhui, state: 'en_construction', archived: false) } before do subject diff --git a/spec/lib/carto/geo_api/driver_spec.rb b/spec/lib/carto/geo_api/driver_spec.rb index 4d13c15ca..dace760cd 100644 --- a/spec/lib/carto/geo_api/driver_spec.rb +++ b/spec/lib/carto/geo_api/driver_spec.rb @@ -1,13 +1,13 @@ require 'spec_helper' describe Carto::GeoAPI::Driver do - describe '.regions', vcr: {cassette_name: 'geoapi_regions'} do + describe '.regions', vcr: { cassette_name: 'geoapi_regions' } do subject { described_class.regions } it { expect(subject.code).to eq 200 } end - describe '.departements', vcr: {cassette_name: 'geoapi_departements'} do + describe '.departements', vcr: { cassette_name: 'geoapi_departements' } do subject { described_class.departements } it { expect(subject.code).to eq 200 } diff --git a/spec/lib/carto/sgmap/api_spec.rb b/spec/lib/carto/sgmap/api_spec.rb index 1a541d1cc..d84f62cea 100644 --- a/spec/lib/carto/sgmap/api_spec.rb +++ b/spec/lib/carto/sgmap/api_spec.rb @@ -7,7 +7,7 @@ describe CARTO::SGMAP::API do before do stub_request(:post, "https://apicarto.sgmap.fr/quartiers-prioritaires/search") .with(:body => /.*/, - :headers => {'Content-Type' => 'application/json'}) + :headers => { 'Content-Type' => 'application/json' }) .to_return(status: status, body: body) end context 'when geojson is empty' do @@ -55,7 +55,7 @@ describe CARTO::SGMAP::API do before do stub_request(:post, "https://apicarto.sgmap.fr/cadastre/geometrie") .with(:body => /.*/, - :headers => {'Content-Type' => 'application/json'}) + :headers => { 'Content-Type' => 'application/json' }) .to_return(status: status, body: body) end context 'when geojson is empty' do diff --git a/spec/lib/carto/sgmap/cadastre/adapter_spec.rb b/spec/lib/carto/sgmap/cadastre/adapter_spec.rb index 46b11e1b1..c061eec44 100644 --- a/spec/lib/carto/sgmap/cadastre/adapter_spec.rb +++ b/spec/lib/carto/sgmap/cadastre/adapter_spec.rb @@ -6,7 +6,7 @@ describe CARTO::SGMAP::Cadastre::Adapter do before do stub_request(:post, "https://apicarto.sgmap.fr/cadastre/geometrie") .with(:body => /.*/, - :headers => {'Content-Type' => 'application/json'}) + :headers => { 'Content-Type' => 'application/json' }) .to_return(status: status, body: body) end @@ -51,7 +51,7 @@ describe CARTO::SGMAP::Cadastre::Adapter do it { expect(subject[:code_com]).to eq('046') } it { expect(subject[:code_arr]).to eq('000') } - it { expect(subject[:geometry]).to eq({type: "MultiPolygon", coordinates: [[[[2.4362443, 48.8092078], [2.436384, 48.8092043], [2.4363802, 48.8091414]]]]}) } + it { expect(subject[:geometry]).to eq({ type: "MultiPolygon", coordinates: [[[[2.4362443, 48.8092078], [2.436384, 48.8092043], [2.4363802, 48.8091414]]]] }) } end end diff --git a/spec/lib/carto/sgmap/quartiers_prioritaires/adapter_spec.rb b/spec/lib/carto/sgmap/quartiers_prioritaires/adapter_spec.rb index 1458acb06..43f028759 100644 --- a/spec/lib/carto/sgmap/quartiers_prioritaires/adapter_spec.rb +++ b/spec/lib/carto/sgmap/quartiers_prioritaires/adapter_spec.rb @@ -6,7 +6,7 @@ describe CARTO::SGMAP::QuartiersPrioritaires::Adapter do before do stub_request(:post, "https://apicarto.sgmap.fr/quartiers-prioritaires/search") .with(:body => /.*/, - :headers => {'Content-Type' => 'application/json'}) + :headers => { 'Content-Type' => 'application/json' }) .to_return(status: status, body: body) end @@ -26,7 +26,7 @@ describe CARTO::SGMAP::QuartiersPrioritaires::Adapter do it { expect(subject[:nom]).to eq('Hauts De Vallières') } it { expect(subject[:commune]).to eq('Metz') } - it { expect(subject[:geometry]).to eq({:type => "MultiPolygon", :coordinates => [[[[6.2136923480551, 49.1342109827851], [6.21416055031881, 49.1338823553928]]]]}) } + it { expect(subject[:geometry]).to eq({ :type => "MultiPolygon", :coordinates => [[[[6.2136923480551, 49.1342109827851], [6.21416055031881, 49.1338823553928]]]] }) } end end diff --git a/spec/mailers/welcome_mailer_spec.rb b/spec/mailers/welcome_mailer_spec.rb index f60e24b10..0ce4fe896 100644 --- a/spec/mailers/welcome_mailer_spec.rb +++ b/spec/mailers/welcome_mailer_spec.rb @@ -8,7 +8,7 @@ describe WelcomeMailer, type: :mailer do it { expect(subject.body).to match(new_user_password_url) } it { expect(subject.body).to match(user.email) } it { expect(subject.body).to match('Bienvenue sur la plateforme TPS') } - it { expect(subject.body).to match('Nous vous remercions de vous être inscrit sur TPS. Pour mémoire, voici quelques informations utiles :')} + it { expect(subject.body).to match('Nous vous remercions de vous être inscrit sur TPS. Pour mémoire, voici quelques informations utiles :') } it { expect(subject.subject).to eq("Création de votre compte TPS") } end diff --git a/spec/models/avis_spec.rb b/spec/models/avis_spec.rb index 2581602d0..3ca680440 100644 --- a/spec/models/avis_spec.rb +++ b/spec/models/avis_spec.rb @@ -32,7 +32,7 @@ RSpec.describe Avis, type: :model do subject { Avis.by_latest } - it { expect(subject).to eq([avis, avis3, avis2])} + it { expect(subject).to eq([avis, avis3, avis2]) } end end diff --git a/spec/models/champ_shared_example.rb b/spec/models/champ_shared_example.rb index e09d2179d..c8bb4360e 100644 --- a/spec/models/champ_shared_example.rb +++ b/spec/models/champ_shared_example.rb @@ -48,14 +48,14 @@ shared_examples 'champ_spec' do end end - describe '.departement', vcr: {cassette_name: 'call_geo_api_departements'} do + describe '.departement', vcr: { cassette_name: 'call_geo_api_departements' } do subject { Champ.departements } it { expect(subject).to include '99 - Étranger' } end context "when type_champ=date" do - let(:type_de_champ) { create(:type_de_champ_public, type_champ: "date")} + let(:type_de_champ) { create(:type_de_champ_public, type_champ: "date") } let(:champ) { create(:champ, type_de_champ: type_de_champ) } it "should convert %d/%m/%Y format to ISO" do diff --git a/spec/models/concern/mail_template_concern_spec.rb b/spec/models/concern/mail_template_concern_spec.rb index 84c36d2a1..13a2cbf34 100644 --- a/spec/models/concern/mail_template_concern_spec.rb +++ b/spec/models/concern/mail_template_concern_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe MailTemplateConcern do - let(:procedure) { create(:procedure)} + let(:procedure) { create(:procedure) } let(:dossier) { create(:dossier, procedure: procedure) } let(:dossier2) { create(:dossier, procedure: procedure) } let(:initiated_mail) { Mails::InitiatedMail.default_for_procedure(procedure) } diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index f293c9205..5f8f32820 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -51,7 +51,7 @@ describe Dossier do end end - describe '#retrieve_last_piece_justificative_by_type', vcr: {cassette_name: 'models_dossier_retrieve_last_piece_justificative_by_type'} do + describe '#retrieve_last_piece_justificative_by_type', vcr: { cassette_name: 'models_dossier_retrieve_last_piece_justificative_by_type' } do let(:types_de_pj_dossier) { dossier.procedure.types_de_piece_justificative } subject { dossier.retrieve_last_piece_justificative_by_type types_de_pj_dossier.first } @@ -308,7 +308,7 @@ describe Dossier do subject { dossier } - it { expect(dossier.full_data_strings_array).to eq(expected_string)} + it { expect(dossier.full_data_strings_array).to eq(expected_string) } end end @@ -575,7 +575,7 @@ describe Dossier do subject { procedure.dossiers.downloadable_sorted } - it { is_expected.to match([dossier3, dossier4, dossier2])} + it { is_expected.to match([dossier3, dossier4, dossier2]) } end describe "#send_dossier_received" do diff --git a/spec/models/gestionnaire_spec.rb b/spec/models/gestionnaire_spec.rb index f5425bf79..e300ffe6c 100644 --- a/spec/models/gestionnaire_spec.rb +++ b/spec/models/gestionnaire_spec.rb @@ -214,7 +214,7 @@ describe Gestionnaire, type: :model do end context 'with a followed dossier' do - let!(:dossier){create(:dossier, procedure: procedure, state: 'en_instruction')} + let!(:dossier){ create(:dossier, procedure: procedure, state: 'en_instruction') } let!(:follow){ create(:follow, dossier: dossier, gestionnaire: gestionnaire) } context 'with 1 notification' do @@ -237,7 +237,7 @@ describe Gestionnaire, type: :model do end context 'with another dossier' do - let!(:dossier2){create(:dossier, procedure: procedure, state: 'en_instruction')} + let!(:dossier2){ create(:dossier, procedure: procedure, state: 'en_instruction') } let!(:follow2){ create(:follow, dossier: dossier2, gestionnaire: gestionnaire) } context 'and some notifications' do @@ -338,7 +338,7 @@ describe Gestionnaire, type: :model do context 'when a followed dossier has unread notification' do let(:followed_dossier) { dossier_with_no_unread_notification } - it { is_expected.to eq({ }) } + it { is_expected.to eq({}) } end end @@ -346,8 +346,8 @@ describe Gestionnaire, type: :model do let!(:procedure_assign_2) { create :assign_to, gestionnaire: gestionnaire, procedure: procedure_2 } let!(:pp) { ProcedurePresentation.create(assign_to: procedure_assign) } - it { expect(gestionnaire.procedure_presentation_for_procedure_id(procedure.id)).to eq(pp)} - it { expect(gestionnaire.procedure_presentation_for_procedure_id(procedure_2.id).persisted?).to be_falsey} + it { expect(gestionnaire.procedure_presentation_for_procedure_id(procedure.id)).to eq(pp) } + it { expect(gestionnaire.procedure_presentation_for_procedure_id(procedure_2.id).persisted?).to be_falsey } end describe '#notifications_for_dossier' do diff --git a/spec/models/procedure_path_spec.rb b/spec/models/procedure_path_spec.rb index 6f4565fd3..29d349f31 100644 --- a/spec/models/procedure_path_spec.rb +++ b/spec/models/procedure_path_spec.rb @@ -18,31 +18,31 @@ describe ProcedurePath do context 'when path is nil' do let(:path) { nil } - it { expect{procedure_path}.to raise_error ActiveRecord::RecordInvalid } + it { expect{ procedure_path }.to raise_error ActiveRecord::RecordInvalid } end context 'when path is empty' do let(:path) { '' } - it { expect{procedure_path}.to raise_error ActiveRecord::RecordInvalid } + it { expect{ procedure_path }.to raise_error ActiveRecord::RecordInvalid } end context 'when path contains spaces' do let(:path) { 'Demande de subvention' } - it { expect{procedure_path}.to raise_error ActiveRecord::RecordInvalid } + it { expect{ procedure_path }.to raise_error ActiveRecord::RecordInvalid } end context 'when path contains alphanumerics and underscores' do let(:path) { 'ma_super_procedure_1' } - it { expect{procedure_path}.not_to raise_error } + it { expect{ procedure_path }.not_to raise_error } end context 'when path contains dashes' do let(:path) { 'ma-super-procedure' } - it { expect{procedure_path}.not_to raise_error } + it { expect{ procedure_path }.not_to raise_error } end context 'when path is too long' do let(:path) { 'ma-super-procedure-12345678901234567890123456789012345678901234567890' } - it { expect{procedure_path}.to raise_error ActiveRecord::RecordInvalid } + it { expect{ procedure_path }.to raise_error ActiveRecord::RecordInvalid } end context 'when path is too short' do let(:path) { 'pr' } - it { expect{procedure_path}.to raise_error ActiveRecord::RecordInvalid } + it { expect{ procedure_path }.to raise_error ActiveRecord::RecordInvalid } end end end diff --git a/spec/models/procedure_presentation_spec.rb b/spec/models/procedure_presentation_spec.rb index 21c8a6a9e..4d018ec23 100644 --- a/spec/models/procedure_presentation_spec.rb +++ b/spec/models/procedure_presentation_spec.rb @@ -14,7 +14,7 @@ describe ProcedurePresentation do let (:procedure_presentation) { ProcedurePresentation.find(procedure_presentation_id) } describe "#displayed_fields" do - it { expect(procedure_presentation.displayed_fields).to eq([{"label" => "test1", "table" => "user"}, {"label" => "test2", "table" => "champs"}]) } + it { expect(procedure_presentation.displayed_fields).to eq([{ "label" => "test1", "table" => "user" }, { "label" => "test2", "table" => "champs" }]) } end describe "#sort" do diff --git a/spec/serializers/dossier_table_export_serializer_spec.rb b/spec/serializers/dossier_table_export_serializer_spec.rb index ff2480a07..927edca0a 100644 --- a/spec/serializers/dossier_table_export_serializer_spec.rb +++ b/spec/serializers/dossier_table_export_serializer_spec.rb @@ -39,7 +39,7 @@ describe DossierTableExportSerializer do describe '#emails_accompagnateurs' do let(:gestionnaire){ create(:gestionnaire) } - let(:gestionnaire2) { create :gestionnaire} + let(:gestionnaire2) { create :gestionnaire } let(:dossier) { create(:dossier) } subject { DossierTableExportSerializer.new(dossier).emails_accompagnateurs } diff --git a/spec/services/accompagnateur_service_spec.rb b/spec/services/accompagnateur_service_spec.rb index 295a98d81..a5b71d612 100644 --- a/spec/services/accompagnateur_service_spec.rb +++ b/spec/services/accompagnateur_service_spec.rb @@ -4,7 +4,7 @@ describe AccompagnateurService do let(:procedure) { create :procedure, :published } let(:accompagnateur) { create :gestionnaire } - let(:accompagnateur_service) { AccompagnateurService.new accompagnateur, procedure, to} + let(:accompagnateur_service) { AccompagnateurService.new accompagnateur, procedure, to } describe '#change_assignement!' do subject { accompagnateur_service.change_assignement! } diff --git a/spec/services/france_connect_salt_service_spec.rb b/spec/services/france_connect_salt_service_spec.rb deleted file mode 100644 index ff77a1ef7..000000000 --- a/spec/services/france_connect_salt_service_spec.rb +++ /dev/null @@ -1,41 +0,0 @@ -require 'spec_helper' - -describe FranceConnectSaltService do - describe '.initialize' do - context 'when args is not a FranceConnectInformation class' do - let(:args) { create(:dossier) } - - subject { described_class.new args } - - it { expect { subject }.to raise_error 'Not a FranceConnectInformation class' } - end - end - - describe '.valid?' do - let(:france_connect_information) { create(:france_connect_information) } - let(:salt_service) { FranceConnectSaltService.new(france_connect_information) } - let(:salt) { salt_service.salt } - - context 'when france_connect_information_id is correct' do - let(:france_connect_information_id) { france_connect_information.id } - let(:france_connect_information_get_with_id) { FranceConnectInformation.find(france_connect_information_id) } - let(:salt_service_compare) { FranceConnectSaltService.new france_connect_information_get_with_id } - - subject { salt_service_compare.valid? salt } - - it { is_expected.to be_truthy } - end - - context 'when france_connect_information_id is not correct' do - let(:france_connect_information_fake) { create(:france_connect_information, france_connect_particulier_id: '87515272') } - - let(:france_connect_information_id) { france_connect_information_fake.id } - let(:france_connect_information_get_with_id) { FranceConnectInformation.find(france_connect_information_id) } - let(:salt_service_compare) { FranceConnectSaltService.new france_connect_information_get_with_id } - - subject { salt_service_compare.valid? salt } - - it { is_expected.to be_falsey } - end - end -end diff --git a/spec/services/france_connect_service_spec.rb b/spec/services/france_connect_service_spec.rb index c3c1f70b4..96b2a633b 100644 --- a/spec/services/france_connect_service_spec.rb +++ b/spec/services/france_connect_service_spec.rb @@ -14,7 +14,7 @@ describe FranceConnectService do let(:phone) { '012345678' } let(:france_connect_particulier_id) { 'izhikziogjuziegj' } - let(:user_info_hash) { {sub: france_connect_particulier_id, given_name: given_name, family_name: family_name, birthdate: birthdate, gender: gender, birthplace: birthplace, email: email, phone: phone} } + let(:user_info_hash) { { sub: france_connect_particulier_id, given_name: given_name, family_name: family_name, birthdate: birthdate, gender: gender, birthplace: birthplace, email: email, phone: phone } } let(:user_info) { instance_double('OpenIDConnect::ResponseObject::UserInfo', raw_attributes: user_info_hash) } subject { described_class.retrieve_user_informations_particulier code } diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 96d04f492..4960225b8 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -123,7 +123,7 @@ RSpec.configure do |config| if Features.remote_storage VCR.use_cassette("ovh_storage_init") do CarrierWave.configure do |config| - config.fog_credentials = {provider: 'OpenStack'} + config.fog_credentials = { provider: 'OpenStack' } end end end diff --git a/spec/support/shared_exemples_for_dossier.rb b/spec/support/shared_exemples_for_dossier.rb index 7a39ffa22..a985e6aed 100644 --- a/spec/support/shared_exemples_for_dossier.rb +++ b/spec/support/shared_exemples_for_dossier.rb @@ -4,7 +4,7 @@ RSpec.shared_examples 'not owner of dossier' do |controller, redirect| let(:dossier_2) { create(:dossier) } before do - get controller, params:{dossier_id: dossier_2.id} + get controller, params: { dossier_id: dossier_2.id } end it 'redirect to home page' do diff --git a/spec/views/users/description/champs/_departements.html.haml_spec.rb b/spec/views/users/description/champs/_departements.html.haml_spec.rb index d0d6d4fa1..8ca65c223 100644 --- a/spec/views/users/description/champs/_departements.html.haml_spec.rb +++ b/spec/views/users/description/champs/_departements.html.haml_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe 'users/description/champs/departements.html.haml', vcr: {cassette_name: 'geoapi_departements'}, type: :view do +describe 'users/description/champs/departements.html.haml', vcr: { cassette_name: 'geoapi_departements' }, type: :view do let(:champ) { create(:champ) } before do diff --git a/spec/views/users/description/champs/_regions.html.haml_spec.rb b/spec/views/users/description/champs/_regions.html.haml_spec.rb index 95e9fdef8..bc627ddff 100644 --- a/spec/views/users/description/champs/_regions.html.haml_spec.rb +++ b/spec/views/users/description/champs/_regions.html.haml_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe 'users/description/champs/regions.html.haml', vcr: {cassette_name: 'geoapi_regions'}, type: :view do +describe 'users/description/champs/regions.html.haml', vcr: { cassette_name: 'geoapi_regions' }, type: :view do let(:champ) { create(:champ) } before do diff --git a/spec/views/users/description/show.html.haml_spec.rb b/spec/views/users/description/show.html.haml_spec.rb index 21c284fc4..4f7bf3d62 100644 --- a/spec/views/users/description/show.html.haml_spec.rb +++ b/spec/views/users/description/show.html.haml_spec.rb @@ -83,8 +83,8 @@ describe 'users/description/show.html.haml', type: :view do describe 'datetime value is correctly setup when is not nil' do it { expect(rendered).to have_css("input[type='datetime'][id='champs_#{champ_datetime.id}'][value='22/06/2016']") } - it { expect(rendered).to have_css("option[value='12'][selected='selected']")} - it { expect(rendered).to have_css("option[value='05'][selected='selected']")} + it { expect(rendered).to have_css("option[value='12'][selected='selected']") } + it { expect(rendered).to have_css("option[value='05'][selected='selected']") } end end diff --git a/spec/views/users/siret/index.html.haml_spec.rb b/spec/views/users/siret/index.html.haml_spec.rb index e489bec08..b51f63c93 100644 --- a/spec/views/users/siret/index.html.haml_spec.rb +++ b/spec/views/users/siret/index.html.haml_spec.rb @@ -25,7 +25,7 @@ describe 'users/siret/index.html.haml', type: :view do end context 'stockage de l\'ID de la procédure dans un champs hidden' do - it {expect(rendered).to have_selector("input[type=hidden][id=procedure_id][name=procedure_id][value='#{procedure.id}']", visible: false)} + it { expect(rendered).to have_selector("input[type=hidden][id=procedure_id][name=procedure_id][value='#{procedure.id}']", visible: false) } end it 'le titre de la procédure est présent sur la page' do