diff --git a/app/assets/javascripts/old_design/admin_procedures_modal.js b/app/assets/javascripts/old_design/admin_procedures_modal.js index 1d4c569e3..5a013cb53 100644 --- a/app/assets/javascripts/old_design/admin_procedures_modal.js +++ b/app/assets/javascripts/old_design/admin_procedures_modal.js @@ -64,10 +64,7 @@ function validatePath(path) { } function path_type_init() { - $(PROCEDURE_PATH_SELECTOR).bind('autocomplete:select', function( - ev, - suggestion - ) { - togglePathMessage(true, suggestion['mine']); + $(PROCEDURE_PATH_SELECTOR).on('autocomplete:select', function(event) { + togglePathMessage(true, event.detail['mine']); }); } diff --git a/app/controllers/admin/procedures_controller.rb b/app/controllers/admin/procedures_controller.rb index 6a37e24f4..5002e4cc2 100644 --- a/app/controllers/admin/procedures_controller.rb +++ b/app/controllers/admin/procedures_controller.rb @@ -40,8 +40,7 @@ class Admin::ProceduresController < AdminController def edit @path = @procedure.path || @procedure.default_path - @available = @procedure.path_available?(@path) - @mine = @procedure.path_is_mine?(@path) + @availability = @procedure.path_availability(@path) end def destroy @@ -60,8 +59,7 @@ class Admin::ProceduresController < AdminController def new @procedure ||= Procedure.new @procedure.module_api_carto ||= ModuleAPICarto.new - @available = true - @mine = true + @availability = Procedure::PATH_AVAILABLE end def create @@ -71,59 +69,51 @@ class Admin::ProceduresController < AdminController @procedure.module_api_carto = ModuleAPICarto.new(create_module_api_carto_params) end - @path = params.require(:procedure).permit(:path)[:path] - @available = !ProcedurePath.exists?(path: @path) - @mine = ProcedurePath.mine?(current_administrateur, @path) + @path = @procedure.path + @availability = Procedure.path_availability(current_administrateur, @procedure.path) - if !@procedure.validate + if !@procedure.save flash.now.alert = @procedure.errors.full_messages - return render 'new' - elsif Flipflop.publish_draft? && !ProcedurePath.valid?(Procedure.last, @path) - # FIXME: The code abow is a horrible hack that we need until we migrated path directly on procedure model - flash.now.alert = 'Lien de la démarche invalide.' - return render 'new' + render 'new' else - @procedure.save! - if Flipflop.publish_draft? - @procedure.publish_with_path!(@path) - end flash.notice = 'Démarche enregistrée.' + redirect_to admin_procedure_types_de_champ_path(procedure_id: @procedure.id) end - - redirect_to admin_procedure_types_de_champ_path(procedure_id: @procedure.id) end def update @procedure = current_administrateur.procedures.find(params[:id]) - path = params.require(:procedure).permit(:path)[:path] if !@procedure.update(procedure_params) - flash.alert = @procedure.errors.full_messages - elsif Flipflop.publish_draft? && @procedure.brouillon? - if ProcedurePath.valid?(@procedure, path) - @procedure.publish_with_path!(path) - reset_procedure - flash.notice = 'Démarche modifiée. Tous les dossiers de cette démarche ont été supprimés.' - else - flash.alert = 'Lien de la démarche invalide.' + flash.now.alert = @procedure.errors.full_messages + @path = procedure_params[:path] + if @path.present? + @availability = @procedure.path_availability(@path) end - else + render 'edit' + elsif Flipflop.publish_draft? && @procedure.brouillon? reset_procedure + flash.notice = 'Démarche modifiée. Tous les dossiers de cette démarche ont été supprimés.' + redirect_to edit_admin_procedure_path(id: @procedure.id) + else flash.notice = 'Démarche modifiée.' + redirect_to edit_admin_procedure_path(id: @procedure.id) end - - redirect_to edit_admin_procedure_path(id: @procedure.id) end def publish + path = params[:path] procedure = current_administrateur.procedures.find(params[:procedure_id]) - if !ProcedurePath.valid?(procedure, params[:procedure_path]) + procedure.path = path + if !procedure.validate flash.alert = 'Lien de la démarche invalide' return redirect_to admin_procedures_path + else + procedure.path = nil end - if procedure.publish_or_reopen!(params[:procedure_path]) + if procedure.publish_or_reopen!(path) flash.notice = "Démarche publiée" redirect_to admin_procedures_path else @@ -216,9 +206,10 @@ class Admin::ProceduresController < AdminController end def path_list - json_path_list = ProcedurePath + json_path_list = Procedure .find_with_path(params[:request]) - .pluck('procedure_paths.path', :administrateur_id) + .order(:id) + .pluck(:path, :administrateur_id) .map do |path, administrateur_id| { label: path, @@ -235,11 +226,9 @@ class Admin::ProceduresController < AdminController if procedure_id.present? procedure = current_administrateur.procedures.find(procedure_id) - @available = procedure.path_available?(path) - @mine = procedure.path_is_mine?(path) + @availability = procedure.path_availability(path) else - @available = !ProcedurePath.exists?(path: path) - @mine = ProcedurePath.mine?(current_administrateur, path) + @availability = Procedure.path_availability(current_administrateur, path) end end @@ -276,6 +265,9 @@ class Admin::ProceduresController < AdminController if @procedure&.locked? params.require(:procedure).permit(*editable_params) else + if Flipflop.publish_draft? + editable_params << :path + end params.require(:procedure).permit(*editable_params, :duree_conservation_dossiers_dans_ds, :duree_conservation_dossiers_hors_ds, :for_individual, :individual_with_siret, :ask_birthday, module_api_carto_attributes: [:id, :use_api_carto, :quartiers_prioritaires, :cadastre]).merge(administrateur_id: current_administrateur.id) end end diff --git a/app/controllers/manager/users_controller.rb b/app/controllers/manager/users_controller.rb index 882993909..d655c552b 100644 --- a/app/controllers/manager/users_controller.rb +++ b/app/controllers/manager/users_controller.rb @@ -6,12 +6,5 @@ module Manager flash[:notice] = "L'email d'activation de votre compte a été renvoyé." redirect_to manager_user_path(user) end - - def confirm - user = User.find(params[:id]) - user.confirm - flash[:notice] = "L’adresse email de l’utilisateur a été marquée comme activée." - redirect_to manager_user_path(user) - end end end diff --git a/app/controllers/new_administrateur/services_controller.rb b/app/controllers/new_administrateur/services_controller.rb index 24f61ce48..66d0c11da 100644 --- a/app/controllers/new_administrateur/services_controller.rb +++ b/app/controllers/new_administrateur/services_controller.rb @@ -7,18 +7,19 @@ module NewAdministrateur def new @procedure = procedure + @service = Service.new end def create - new_service = Service.new(service_params) - new_service.administrateur = current_administrateur + @service = Service.new(service_params) + @service.administrateur = current_administrateur - if new_service.save + if @service.save redirect_to services_path(procedure_id: params[:procedure_id]), - notice: "#{new_service.nom} créé" + notice: "#{@service.nom} créé" else @procedure = procedure - flash[:alert] = new_service.errors.full_messages + flash[:alert] = @service.errors.full_messages render :new end end diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index 0a292509b..914c41146 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -12,10 +12,9 @@ class Users::DossiersController < UsersController end def commencer_test - procedure_path = ProcedurePath.find_by(path: params[:procedure_path]) - procedure = procedure_path&.procedure + procedure = Procedure.brouillons.find_by(path: params[:path]) - if procedure&.brouillon? && procedure&.path.present? + if procedure.present? redirect_to new_users_dossier_path(procedure_id: procedure.id, brouillon: true) else flash.alert = "La démarche est inconnue." @@ -24,17 +23,10 @@ class Users::DossiersController < UsersController end def commencer - procedure_path = ProcedurePath.find_by(path: params[:procedure_path]) - procedure = procedure_path&.procedure + procedure = Procedure.publiees.find_by(path: params[:path]) if procedure.present? - if procedure.archivee? - @dossier = Dossier.new(procedure: procedure) - - render 'commencer/archived' - else - redirect_to new_users_dossier_path(procedure_id: procedure.id) - end + redirect_to new_users_dossier_path(procedure_id: procedure.id) else flash.alert = "La démarche est inconnue, ou la création de nouveaux dossiers pour cette démarche est terminée." redirect_to root_path diff --git a/app/helpers/procedure_helper.rb b/app/helpers/procedure_helper.rb index 2f28feed9..4305b05e5 100644 --- a/app/helpers/procedure_helper.rb +++ b/app/helpers/procedure_helper.rb @@ -2,9 +2,9 @@ module ProcedureHelper def procedure_lien(procedure) if procedure.path.present? if procedure.brouillon_avec_lien? - commencer_test_url(procedure_path: procedure.path) + commencer_test_url(path: procedure.path) else - commencer_url(procedure_path: procedure.path) + commencer_url(path: procedure.path) end end end diff --git a/app/lib/api_geo/rpg_adapter.rb b/app/lib/api_geo/rpg_adapter.rb index d63c18941..095825d6c 100644 --- a/app/lib/api_geo/rpg_adapter.rb +++ b/app/lib/api_geo/rpg_adapter.rb @@ -18,7 +18,10 @@ class ApiGeo::RPGAdapter :code_culture, :surface, :bio - ).merge({ geometry: feature[:geometry] }) + ).merge({ + geometry: feature[:geometry], + geo_reference_id: feature[:properties][:id] + }) end end end diff --git a/app/models/procedure.rb b/app/models/procedure.rb index c65f49366..ae429b517 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -9,7 +9,6 @@ class Procedure < ApplicationRecord has_one :module_api_carto, dependent: :destroy has_one :attestation_template, dependent: :destroy - has_one :procedure_path, dependent: :destroy belongs_to :administrateur belongs_to :parent_procedure, class_name: 'Procedure' @@ -46,12 +45,12 @@ class Procedure < ApplicationRecord scope :by_libelle, -> { order(libelle: :asc) } scope :created_during, -> (range) { where(created_at: range) } scope :cloned_from_library, -> { where(cloned_from_library: true) } - scope :avec_lien, -> { joins(:procedure_path) } + scope :avec_lien, -> { where.not(path: nil) } validates :libelle, presence: true, allow_blank: false, allow_nil: false validates :description, presence: true, allow_blank: false, allow_nil: false validate :check_juridique - validates :path, format: { with: /\A[a-z0-9_\-]{3,50}\z/ }, uniqueness: true, presence: true, allow_blank: false, allow_nil: true + validates :path, format: { with: /\A[a-z0-9_\-]{3,50}\z/ }, uniqueness: { scope: :aasm_state, case_sensitive: false }, presence: true, allow_blank: false, allow_nil: true # FIXME: remove duree_conservation_required flag once all procedures are converted to the new style validates :duree_conservation_dossiers_dans_ds, allow_nil: false, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: MAX_DUREE_CONSERVATION }, if: :durees_conservation_required validates :duree_conservation_dossiers_hors_ds, allow_nil: false, numericality: { only_integer: true, greater_than_or_equal_to: 0 }, if: :durees_conservation_required @@ -101,19 +100,6 @@ class Procedure < ApplicationRecord end end - def publish_with_path!(path) - procedure_path = ProcedurePath - .where(administrateur: administrateur) - .find_by(path: path) - - if procedure_path.present? - procedure_path.publish!(self) - else - create_procedure_path!(administrateur: administrateur, path: path) - end - update!(path: path) - end - def reset! if locked? raise "Can not reset a locked procedure." @@ -126,14 +112,6 @@ class Procedure < ApplicationRecord publiee_ou_archivee? end - def path_available?(path) - !ProcedurePath.where.not(procedure: self).exists?(path: path) - end - - def path_is_mine?(path) - ProcedurePath.where.not(procedure: self).mine?(administrateur, path) - end - # This method is needed for transition. Eventually this will be the same as brouillon?. def brouillon_avec_lien? Flipflop.publish_draft? && brouillon? && path.present? @@ -157,10 +135,6 @@ class Procedure < ApplicationRecord Dossier.new(procedure: self, champs: champs, champs_private: champs_private) end - def path - read_attribute(:path) || procedure_path&.path - end - def default_path libelle&.parameterize&.first(50) end @@ -332,21 +306,66 @@ class Procedure < ApplicationRecord mean_time(:en_instruction_at, :processed_at) end + PATH_AVAILABLE = :available + PATH_AVAILABLE_PUBLIEE = :available_publiee + PATH_NOT_AVAILABLE = :not_available + PATH_NOT_AVAILABLE_BROUILLON = :not_available_brouillon + PATH_CAN_PUBLISH = [PATH_AVAILABLE, PATH_AVAILABLE_PUBLIEE] + + def path_availability(path) + Procedure.path_availability(administrateur, path, id) + end + + def self.path_availability(administrateur, path, exclude_id = nil) + if exclude_id.present? + procedure = where.not(id: exclude_id).find_by(path: path) + else + procedure = find_by(path: path) + end + + if procedure.blank? + PATH_AVAILABLE + elsif administrateur.owns?(procedure) + if procedure.brouillon? + PATH_NOT_AVAILABLE_BROUILLON + else + PATH_AVAILABLE_PUBLIEE + end + else + PATH_NOT_AVAILABLE + end + end + + def self.find_with_path(path) + where.not(aasm_state: :archivee).where("path LIKE ?", "%#{path}%") + end + private - def can_publish?(path) - procedure_path = ProcedurePath.find_by(path: path) - if procedure_path.present? - administrateur.owns?(procedure_path) - else - true + def claim_path_ownership!(path) + procedure = Procedure.where(administrateur: administrateur).find_by(path: path) + + if procedure&.publiee? && procedure != self + procedure.archive! end + + update!(path: path) + end + + def can_publish?(path) + path_availability(path).in?(PATH_CAN_PUBLISH) end def after_publish(path) update!(published_at: Time.zone.now) - publish_with_path!(path) + claim_path_ownership!(path) + end + + def after_reopen(path) + update!(published_at: Time.zone.now, archived_at: nil) + + claim_path_ownership!(path) end def after_archive @@ -356,16 +375,9 @@ class Procedure < ApplicationRecord def after_hide now = Time.zone.now update!(hidden_at: now, path: nil) - procedure_path&.hide! dossiers.update_all(hidden_at: now) end - def after_reopen(path) - update!(published_at: Time.zone.now, archived_at: nil) - - publish_with_path!(path) - end - def after_draft update!(published_at: nil) end diff --git a/app/models/procedure_path.rb b/app/models/procedure_path.rb deleted file mode 100644 index 8606a9ff4..000000000 --- a/app/models/procedure_path.rb +++ /dev/null @@ -1,36 +0,0 @@ -class ProcedurePath < ApplicationRecord - validates :path, format: { with: /\A[a-z0-9_\-]{3,50}\z/ }, uniqueness: true, presence: true, allow_blank: false, allow_nil: false - validates :administrateur_id, presence: true, allow_blank: false, allow_nil: false - validates :procedure_id, presence: true, allow_blank: false, allow_nil: false - - belongs_to :procedure - belongs_to :administrateur - - def self.valid?(procedure, path) - create_with(procedure: procedure, administrateur: procedure.administrateur) - .find_or_initialize_by(path: path).validate - end - - def self.mine?(administrateur, path) - procedure_path = find_by(path: path) - procedure_path && administrateur.owns?(procedure_path) - end - - def self.find_with_path(path) - joins(:procedure) - .where.not(procedures: { aasm_state: :archivee }) - .where("procedure_paths.path LIKE ?", "%#{path}%") - .order(:id) - end - - def hide! - destroy! - end - - def publish!(new_procedure) - if procedure&.publiee? && procedure != new_procedure - procedure.archive! - end - update!(procedure: new_procedure) - end -end diff --git a/app/models/procedure_presentation.rb b/app/models/procedure_presentation.rb index 3695600af..1798ece76 100644 --- a/app/models/procedure_presentation.rb +++ b/app/models/procedure_presentation.rb @@ -111,7 +111,7 @@ class ProcedurePresentation < ApplicationRecord column = sanitized_column(filter) case table when 'self' - date = Time.zone.parse(filter['value']) rescue nil + date = Time.zone.parse(filter['value']).beginning_of_day rescue nil if date.present? dossiers.where("#{column} BETWEEN ? AND ?", date, date + 1.day) else diff --git a/app/serializers/commentaire_serializer.rb b/app/serializers/commentaire_serializer.rb index c7366b65b..19360bfdf 100644 --- a/app/serializers/commentaire_serializer.rb +++ b/app/serializers/commentaire_serializer.rb @@ -1,5 +1,10 @@ class CommentaireSerializer < ActiveModel::Serializer attributes :email, :body, - :created_at + :created_at, + :attachment + + def attachment + object.file_url + end end diff --git a/app/serializers/geo_area_serializer.rb b/app/serializers/geo_area_serializer.rb index 2b1f10766..c0e8477f5 100644 --- a/app/serializers/geo_area_serializer.rb +++ b/app/serializers/geo_area_serializer.rb @@ -1,5 +1,5 @@ class GeoAreaSerializer < ActiveModel::Serializer - attributes :geometry, :source + attributes :geometry, :source, :geo_reference_id attribute :surface_intersection, if: :include_cadastre? attribute :surface_parcelle, if: :include_cadastre? diff --git a/app/serializers/procedure_serializer.rb b/app/serializers/procedure_serializer.rb index 6982cfd84..bd5605a6c 100644 --- a/app/serializers/procedure_serializer.rb +++ b/app/serializers/procedure_serializer.rb @@ -21,9 +21,9 @@ class ProcedureSerializer < ActiveModel::Serializer def link if object.path.present? if object.brouillon_avec_lien? - commencer_test_url(procedure_path: object.path) + commencer_test_url(path: object.path) else - commencer_url(procedure_path: object.path) + commencer_url(path: object.path) end end end diff --git a/app/validators/procedure_path_format_validator.rb b/app/validators/procedure_path_format_validator.rb deleted file mode 100644 index 7c5e1f5b9..000000000 --- a/app/validators/procedure_path_format_validator.rb +++ /dev/null @@ -1,15 +0,0 @@ -class ProcedurePathFormatValidator < ActiveModel::Validator - def path_regex - /^[a-z0-9_]{3,30}$/ - end - - def validate(record) - if record.path.blank? - return false - end - - if !path_regex.match(record.path) - record.errors[:path] << "Path invalide" - end - end -end diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index 6650fa034..61fe6c136 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -16,11 +16,11 @@ %h4 Lien public* .procedure-lien %span.prefix - = commencer_test_url(procedure_path: '') + = commencer_test_url(path: '') = f.text_field :path, value: @path, class: 'form-control', data: { remote: true, debounce: true, url: admin_procedures_available_path, params: { id: @procedure.id }.to_query(:procedure) } %p.unavailable-path-message.text-warning - - if !@available - = render partial: 'unavailable', locals: { mine: @mine } + - if @availability != Procedure::PATH_AVAILABLE + = render partial: 'unavailable', locals: { availability: @availability } %p.help-block %i.fa.fa-info-circle Afin de faciliter l’accès à la démarche, vous êtes invité à personnaliser l’adresse d'accès public. C'est ce lien qu'il va falloir communiquer aux usagers souhaitant faire la démarche. diff --git a/app/views/admin/procedures/_modal_publish.html.haml b/app/views/admin/procedures/_modal_publish.html.haml index 2109792ae..686da7c15 100644 --- a/app/views/admin/procedures/_modal_publish.html.haml +++ b/app/views/admin/procedures/_modal_publish.html.haml @@ -20,8 +20,8 @@ %br %h4 Lien de la démarche %p.center - = commencer_url(procedure_path: '') - = text_field_tag('procedure_path', @procedure.path || @procedure.default_path, + = commencer_url(path: '') + = text_field_tag(:path, @procedure.path || @procedure.default_path, id: 'procedure_path', placeholder: 'Chemin vers la démarche', data: { autocomplete: 'path' }, @@ -41,7 +41,8 @@ %br Vous ne pouvez pas l’utiliser car il appartient à un autre administrateur. #path_is_invalid.text-danger.center.message - = t('activerecord.errors.models.procedure_path.attributes.path.format') + Ce lien + = t('activerecord.errors.models.procedure.attributes.path.invalid') .modal-footer = submit_tag procedure_modal_text(@procedure, :submit), class: %w(btn btn btn-success), disabled: :disabled, id: 'publish' = button_tag "Annuler", class: %w(btn btn btn-default), data: { dismiss: :modal }, id: 'cancel' diff --git a/app/views/admin/procedures/_unavailable.html.haml b/app/views/admin/procedures/_unavailable.html.haml index a47dfee6d..fd285d23a 100644 --- a/app/views/admin/procedures/_unavailable.html.haml +++ b/app/views/admin/procedures/_unavailable.html.haml @@ -1,8 +1,11 @@ -- if mine +- case availability +- when Procedure::PATH_AVAILABLE_PUBLIEE Ce lien est déjà utilisé par une de vos démarche. %br - Si vous voulez l’utiliser, l’ancienne démarche sera archivée (plus accessible du public). -- else + Si vous voulez l’utiliser, l’ancienne démarche sera archivée lors de la publication de la démarche (plus accessible du public). +- when Procedure::PATH_NOT_AVAILABLE_BROUILLON + Un brouillon de démarche existe déjà avec ce lien. +- when Procedure::PATH_NOT_AVAILABLE Ce lien est déjà utilisé par une démarche. %br Vous ne pouvez pas l’utiliser car il appartient à un autre administrateur. diff --git a/app/views/admin/procedures/check_availability.js.erb b/app/views/admin/procedures/check_availability.js.erb index 91c9a76ba..f5eed5960 100644 --- a/app/views/admin/procedures/check_availability.js.erb +++ b/app/views/admin/procedures/check_availability.js.erb @@ -1,11 +1,11 @@ -<% if @available %> +<% if @availability == Procedure::PATH_AVAILABLE %> <%= remove_element('.unavailable-path-message', inner: true) %> +<% else %> + <%= render_to_element('.unavailable-path-message', partial: 'unavailable', locals: { availability: @availability }) %> +<% end %> + +<% if @availability.in?(Procedure::PATH_CAN_PUBLISH) %> <%= enable_element('button[type=submit]') %> <% else %> - <%= render_to_element('.unavailable-path-message', partial: 'unavailable', locals: { mine: @mine }) %> - <% if @mine %> - <%= enable_element('button[type=submit]') %> - <% else %> - <%= disable_element('button[type=submit]') %> - <% end %> + <%= disable_element('button[type=submit]') %> <% end %> diff --git a/app/views/admin/procedures/edit.html.haml b/app/views/admin/procedures/edit.html.haml index 17bb396b8..1eb571224 100644 --- a/app/views/admin/procedures/edit.html.haml +++ b/app/views/admin/procedures/edit.html.haml @@ -3,7 +3,7 @@ = form_for @procedure, url: url_for({ controller: 'admin/procedures', action: :update, id: @procedure.id }), multipart: true do |f| = render partial: 'informations', locals: { f: f } .text-right - - if !Flipflop.publish_draft? || (@available || @mine) + - if !Flipflop.publish_draft? || @availability.in?(Procedure::PATH_CAN_PUBLISH) = f.button 'Enregistrer', class: 'btn btn-success' - else = f.button 'Enregistrer', class: 'btn btn-success', disabled: true diff --git a/app/views/admin/procedures/new.html.haml b/app/views/admin/procedures/new.html.haml index bb05ef17a..8451872a9 100644 --- a/app/views/admin/procedures/new.html.haml +++ b/app/views/admin/procedures/new.html.haml @@ -6,7 +6,7 @@ = form_for @procedure, url: { controller: 'admin/procedures', action: :create }, multipart: true do |f| = render partial: 'informations', locals: { f: f } .text-right - - if !Flipflop.publish_draft? || (@available || @mine) + - if !Flipflop.publish_draft? || @availability.in?(Procedure::PATH_CAN_PUBLISH) = f.button 'Valider', class: 'btn btn-info', id: 'save-procedure' - else = f.button 'Valider', class: 'btn btn-info', id: 'save-procedure', disabled: true diff --git a/app/views/commencer/archived.html.haml b/app/views/commencer/archived.html.haml deleted file mode 100644 index 84c72ab34..000000000 --- a/app/views/commencer/archived.html.haml +++ /dev/null @@ -1,15 +0,0 @@ -%br -%div{ style: 'text-align: center; max-width: 500px; margin-left: auto; margin-right: auto; padding: 20px;' } - = render partial: 'users/sessions/resume_procedure' - -.center{ style: 'margin-top: -20px;' } - %h3 - La campagne de création de nouveau dossier - %br - pour cette démarche en ligne est maintenant terminée. - - %br - %p - Si vous avez déjà déposé un ou plusieurs dossiers : - %a.btn.btn-lg.btn-info{ href: new_user_session_path } - Accéder à mon espace en ligne. diff --git a/app/views/fields/procedure_link_field/_show.html.haml b/app/views/fields/procedure_link_field/_show.html.haml index 250a02c4f..7d0ee3413 100644 --- a/app/views/fields/procedure_link_field/_show.html.haml +++ b/app/views/fields/procedure_link_field/_show.html.haml @@ -1,4 +1,4 @@ - if field.data.present? - = link_to "/commencer/#{field.data}", commencer_url(procedure_path: field.data), target: '_blank' + = link_to "/commencer/#{field.data}", commencer_url(path: field.data), target: '_blank' - else Plus en ligne diff --git a/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_update.html.haml b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_update.html.haml new file mode 100644 index 000000000..43587373d --- /dev/null +++ b/app/views/layouts/left_panels/_left_panel_admin_procedurescontroller_update.html.haml @@ -0,0 +1 @@ += render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: { active: 'Description' } diff --git a/app/views/manager/users/show.html.erb b/app/views/manager/users/show.html.erb index 46cd01b56..079866322 100644 --- a/app/views/manager/users/show.html.erb +++ b/app/views/manager/users/show.html.erb @@ -35,7 +35,6 @@ as well as a link to its edit page.
<% if !user.confirmed? %> <%= link_to('Renvoyer l’email de confirmation', [:resend_confirmation_instructions, namespace, page.resource], method: :post, class: 'button') %> - <%= link_to('Confirmer l’email', confirm_manager_user_path(user), method: :post, class: 'button') %> <% end %>
diff --git a/app/views/new_administrateur/services/new.html.haml b/app/views/new_administrateur/services/new.html.haml index 635c38373..158eb8f73 100644 --- a/app/views/new_administrateur/services/new.html.haml +++ b/app/views/new_administrateur/services/new.html.haml @@ -8,4 +8,4 @@ %h1 Nouveau Service = render partial: 'form', - locals: { service: Service.new, procedure_id: @procedure.id } + locals: { service: @service, procedure_id: @procedure.id } diff --git a/app/views/new_user/demarches/index.html.haml b/app/views/new_user/demarches/index.html.haml index 334471b7b..0767a4b04 100644 --- a/app/views/new_user/demarches/index.html.haml +++ b/app/views/new_user/demarches/index.html.haml @@ -12,7 +12,7 @@ %ul.demarche-links - @previous_demarches_still_active.each do |demarche| %li - = link_to(commencer_url(procedure_path: demarche.path), class: "demarche-link") do + = link_to(commencer_url(path: demarche.path), class: "demarche-link") do = demarche.libelle %br .service-name @@ -23,7 +23,7 @@ %ul.demarche-links - @popular_demarches.each do |demarche| %li - = link_to(commencer_url(procedure_path: demarche.path), class: "demarche-link") do + = link_to(commencer_url(path: demarche.path), class: "demarche-link") do = demarche.libelle %br .service-name diff --git a/app/views/shared/dossiers/_edit.html.haml b/app/views/shared/dossiers/_edit.html.haml index 4639f1d6b..a0229d625 100644 --- a/app/views/shared/dossiers/_edit.html.haml +++ b/app/views/shared/dossiers/_edit.html.haml @@ -35,9 +35,12 @@ Pièces jointes .warning - Pour éviter toute erreur, nous vous conseillons de limiter la taille de chaque pièce jointe à 20 Mo, et de les ajouter une par une, en enregistrant votre - = dossier.brouillon? ? "brouillon" : "dossier" - après chaque ajout. + - if tpjs.many? + Pour éviter toute erreur, nous vous conseillons de limiter la taille de chaque pièce jointe à 20 Mo, et de les ajouter une par une, en enregistrant votre + = dossier.brouillon? ? "brouillon" : "dossier" + après chaque ajout. + - else + Pour éviter toute erreur, nous vous conseillons de limiter la taille de votre pièce jointe à 20 Mo. - tpjs.each do |tpj| .pj-input diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 72651c3bd..d7dd009c0 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -156,6 +156,10 @@ fr: taken: déjà utilisé password: too_short: 'est trop court' + procedure: + attributes: + path: + invalid: n'est pas valide. Il doit comporter au moins 3 caractères, au plus 50 caractères et seuls les caractères a-z, 0-9, '_' et '-' sont autorisés. errors: messages: diff --git a/config/locales/models/procedure/fr.yml b/config/locales/models/procedure/fr.yml index 9f6898e1d..530bcc43d 100644 --- a/config/locales/models/procedure/fr.yml +++ b/config/locales/models/procedure/fr.yml @@ -2,6 +2,7 @@ fr: activerecord: attributes: procedure: + path: Lien public organisation: Organisme duree_conservation_dossiers_dans_ds: Durée de conservation des dossiers sur demarches-simplifiees.fr duree_conservation_dossiers_hors_ds: Durée de conservation des dossiers hors demarches-simplifiees.fr diff --git a/config/locales/models/procedure_path/fr.yml b/config/locales/models/procedure_path/fr.yml deleted file mode 100644 index bd1e29b41..000000000 --- a/config/locales/models/procedure_path/fr.yml +++ /dev/null @@ -1,12 +0,0 @@ -fr: - activerecord: - attributes: - procedure_path: - path: Lien - errors: - models: - procedure_path: - attributes: - path: - format: Ce lien n'est pas valide. Il doit comporter au moins 3 caractères, au plus 50 caractères et seuls les caractères a-z, 0-9, '_' et '-' sont autorisés. - taken: est déjà utilisé par une procédure. diff --git a/config/routes.rb b/config/routes.rb index 8479addd8..3bddb4def 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -22,7 +22,6 @@ Rails.application.routes.draw do resources :users, only: [:index, :show] do post 'resend_confirmation_instructions', on: :member - post 'confirm', on: :member end resources :gestionnaires, only: [:index, :show] do @@ -129,8 +128,8 @@ Rails.application.routes.draw do end namespace :commencer do - get '/test/:procedure_path' => '/users/dossiers#commencer_test', as: :test - get '/:procedure_path' => '/users/dossiers#commencer' + get '/test/:path' => '/users/dossiers#commencer_test', as: :test + get '/:path' => '/users/dossiers#commencer' end get "patron" => "root#patron" diff --git a/db/migrate/20181030103913_add_geo_id_to_geo_areas.rb b/db/migrate/20181030103913_add_geo_id_to_geo_areas.rb new file mode 100644 index 000000000..ce8fd73d2 --- /dev/null +++ b/db/migrate/20181030103913_add_geo_id_to_geo_areas.rb @@ -0,0 +1,5 @@ +class AddGeoIdToGeoAreas < ActiveRecord::Migration[5.2] + def change + add_column :geo_areas, :geo_reference_id, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index d74aeec41..255b289fe 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2018_10_10_183331) do +ActiveRecord::Schema.define(version: 2018_10_30_103913) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -347,6 +347,7 @@ ActiveRecord::Schema.define(version: 2018_10_10_183331) do t.jsonb "geometry" t.jsonb "properties" t.bigint "champ_id" + t.string "geo_reference_id" t.index ["champ_id"], name: "index_geo_areas_on_champ_id" t.index ["source"], name: "index_geo_areas_on_source" end diff --git a/lib/tasks/support.rake b/lib/tasks/support.rake index bbb166bfa..3c00b017d 100644 --- a/lib/tasks/support.rake +++ b/lib/tasks/support.rake @@ -27,11 +27,6 @@ namespace :support do rake_puts("Changing owner of procedure ##{procedure_id} from ##{procedure.administrateur_id} to ##{new_owner.id}") procedure.update(administrateur: new_owner) - - ProcedurePath.where(procedure_id: procedure_id).each do |pp| - rake_puts("Changing owner of procedure_path #{pp.path} from ##{pp.administrateur_id} to ##{new_owner.id}") - pp.update(administrateur: new_owner) - end end desc <<~EOD @@ -74,13 +69,6 @@ namespace :support do end procedures.update_all(administrateur_id: new_owner.id) - - procedures.pluck(:id).each do |procedure_id| - ProcedurePath.where(procedure_id: procedure_id).each do |pp| - rake_puts("Changing owner of procedure_path #{pp.path} from ##{pp.administrateur_id} to ##{new_owner.id}") - pp.update(administrateur: new_owner) - end - end end desc <<~EOD diff --git a/spec/controllers/admin/procedures_controller_spec.rb b/spec/controllers/admin/procedures_controller_spec.rb index a5c8cdbfe..c1ff613e4 100644 --- a/spec/controllers/admin/procedures_controller_spec.rb +++ b/spec/controllers/admin/procedures_controller_spec.rb @@ -359,28 +359,28 @@ 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, path: path } procedure.reload procedure2.reload end context 'procedure path does not exist' do - let(:procedure_path) { 'new_path' } + let(:path) { 'new_path' } it 'publish the given procedure' do expect(procedure.publiee?).to be_truthy - expect(procedure.path).to eq(procedure_path) + expect(procedure.path).to eq(path) expect(response.status).to eq 302 expect(flash[:notice]).to have_content 'Démarche publiée' end end context 'procedure path exists and is owned by current administrator' do - let(:procedure_path) { procedure2.path } + let(:path) { procedure2.path } it 'publish the given procedure' do expect(procedure.publiee?).to be_truthy - expect(procedure.path).to eq(procedure_path) + expect(procedure.path).to eq(path) expect(response.status).to eq 302 expect(flash[:notice]).to have_content 'Démarche publiée' end @@ -391,24 +391,8 @@ describe Admin::ProceduresController, type: :controller do end end - context 'procedure path exists and has archived procedure' do - let(:procedure_path) { procedure2.path } - let(:procedure2) { create(:procedure, :archived, administrateur: admin) } - - it 'publish the given procedure' do - expect(procedure.publiee?).to be_truthy - expect(procedure.path).to eq(procedure_path) - expect(response.status).to eq 302 - expect(flash[:notice]).to have_content 'Démarche publiée' - end - - it 'archive previous procedure' do - expect(procedure2.archivee?).to be_truthy - end - end - context 'procedure path exists and is not owned by current administrator' do - let(:procedure_path) { procedure3.path } + let(:path) { procedure3.path } it 'does not publish the given procedure' do expect(procedure.publiee?).to be_falsey @@ -424,7 +408,7 @@ describe Admin::ProceduresController, type: :controller do end context 'procedure path is invalid' do - let(:procedure_path) { 'Invalid Procedure Path' } + let(:path) { 'Invalid Procedure Path' } it 'does not publish the given procedure' do expect(procedure.publiee?).to be_falsey @@ -442,7 +426,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, path: 'fake_path' } procedure.reload end @@ -470,7 +454,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, path: 'fake_path' } procedure.reload end @@ -751,10 +735,19 @@ describe Admin::ProceduresController, type: :controller do it { expect(response.body).to include("innerHTML = ''") } end - context 'my path' do + context 'my path (brouillon)' do let(:procedure_owned) { create(:procedure, :with_path, administrateur: admin) } let(:path) { procedure_owned.path } + it { + expect(response.body).to include('Un brouillon de démarche existe déjà avec ce lien.') + } + end + + context 'my path' do + let(:procedure_owned) { create(:procedure, :published, administrateur: admin) } + let(:path) { procedure_owned.path } + it { expect(response.body).to include('Ce lien est déjà utilisé par une de vos démarche.') expect(response.body).to include('Si vous voulez l’utiliser, l’ancienne démarche sera archivée') diff --git a/spec/controllers/new_administrateur/services_controller_spec.rb b/spec/controllers/new_administrateur/services_controller_spec.rb index 0e589b9a4..bddd7f679 100644 --- a/spec/controllers/new_administrateur/services_controller_spec.rb +++ b/spec/controllers/new_administrateur/services_controller_spec.rb @@ -43,6 +43,7 @@ describe NewAdministrateur::ServicesController, type: :controller do it { expect(flash.alert).not_to be_nil } it { expect(response).to render_template(:new) } + it { expect(assigns(:service).nom).to eq('super service') } end end diff --git a/spec/controllers/stats_controller_spec.rb b/spec/controllers/stats_controller_spec.rb index fcb0a1e21..4f2632724 100644 --- a/spec/controllers/stats_controller_spec.rb +++ b/spec/controllers/stats_controller_spec.rb @@ -244,7 +244,7 @@ describe StatsController, type: :controller do describe "#avis_average_answer_time" do before do - Timecop.freeze(Time.zone.now) + Timecop.freeze(Time.zone.local(2016, 10, 2)) # 1 week ago create(:avis, answer: "voila ma réponse", created_at: 1.week.ago + 1.day, updated_at: 1.week.ago + 2.days) # 1 day diff --git a/spec/controllers/users/dossiers_controller_spec.rb b/spec/controllers/users/dossiers_controller_spec.rb index 5bfa1dd45..f323d0f3f 100644 --- a/spec/controllers/users/dossiers_controller_spec.rb +++ b/spec/controllers/users/dossiers_controller_spec.rb @@ -65,7 +65,7 @@ describe Users::DossiersController, type: :controller do end describe 'GET #commencer' do - subject { get :commencer, params: { procedure_path: path } } + subject { get :commencer, params: { path: path } } let(:path) { procedure.path } it { expect(subject.status).to eq 302 } @@ -83,7 +83,7 @@ describe Users::DossiersController, type: :controller do Flipflop::FeatureSet.current.test!.switch!(:publish_draft, true) end - subject { get :commencer_test, params: { procedure_path: path } } + subject { get :commencer_test, params: { path: path } } let(:procedure) { create(:procedure, :with_path) } let(:path) { procedure.path } diff --git a/spec/decorators/procedure_decorator_spec.rb b/spec/decorators/procedure_decorator_spec.rb index 742db1047..2c7972076 100644 --- a/spec/decorators/procedure_decorator_spec.rb +++ b/spec/decorators/procedure_decorator_spec.rb @@ -3,7 +3,6 @@ require 'spec_helper' describe ProcedureDecorator do let(:published_at) { Time.zone.local(2017, 12, 24, 14, 12) } let(:procedure) { create(:procedure, published_at: published_at, created_at: Time.zone.local(2015, 12, 24, 14, 10)) } - let!(:procedure_path) { create(:procedure_path, administrateur: create(:administrateur), procedure: procedure) } subject { procedure.decorate } diff --git a/spec/factories/procedure.rb b/spec/factories/procedure.rb index 74a83cf26..c22488dcc 100644 --- a/spec/factories/procedure.rb +++ b/spec/factories/procedure.rb @@ -37,12 +37,7 @@ FactoryBot.define do end trait :with_path do - after(:create) do |procedure| - create(:procedure_path, - procedure: procedure, - administrateur: procedure.administrateur, - path: generate(:published_path)) - end + path { generate(:published_path) } end trait :with_service do diff --git a/spec/factories/procedure_path.rb b/spec/factories/procedure_path.rb deleted file mode 100644 index bd05581d1..000000000 --- a/spec/factories/procedure_path.rb +++ /dev/null @@ -1,5 +0,0 @@ -FactoryBot.define do - factory :procedure_path do - path { 'fake_path' } - end -end diff --git a/spec/features/admin/procedure_cloning_spec.rb b/spec/features/admin/procedure_cloning_spec.rb index 1315a0b35..5f1528d43 100644 --- a/spec/features/admin/procedure_cloning_spec.rb +++ b/spec/features/admin/procedure_cloning_spec.rb @@ -7,8 +7,6 @@ feature 'As an administrateur I wanna clone a procedure', js: true do let(:administrateur) { create(:administrateur) } before do - # FIXME: needed to make procedure_path validation work - create(:procedure) Flipflop::FeatureSet.current.test!.switch!(:publish_draft, true) login_as administrateur, scope: :administrateur visit root_path diff --git a/spec/features/admin/procedure_creation_spec.rb b/spec/features/admin/procedure_creation_spec.rb index 9bc37d4fc..9bf6fa01a 100644 --- a/spec/features/admin/procedure_creation_spec.rb +++ b/spec/features/admin/procedure_creation_spec.rb @@ -7,8 +7,6 @@ feature 'As an administrateur I wanna create a new procedure', js: true do let(:administrateur) { create(:administrateur) } before do - # FIXME: needed to make procedure_path validation work - create(:procedure) Flipflop::FeatureSet.current.test!.switch!(:publish_draft, true) login_as administrateur, scope: :administrateur visit root_path diff --git a/spec/features/new_user/brouillon_spec.rb b/spec/features/new_user/brouillon_spec.rb index 51c7bedbb..244cf9b8d 100644 --- a/spec/features/new_user/brouillon_spec.rb +++ b/spec/features/new_user/brouillon_spec.rb @@ -129,7 +129,7 @@ feature 'The user' do private def log_in(email, password, procedure) - visit "/commencer/#{procedure.procedure_path.path}" + visit "/commencer/#{procedure.path}" expect(page).to have_current_path(new_user_session_path) fill_in 'user_email', with: email diff --git a/spec/features/new_user/dossier_creation_spec.rb b/spec/features/new_user/dossier_creation_spec.rb index 6c468745a..84fc98621 100644 --- a/spec/features/new_user/dossier_creation_spec.rb +++ b/spec/features/new_user/dossier_creation_spec.rb @@ -16,7 +16,7 @@ feature 'Creating a new dossier:' do let(:expected_birthday) { nil } before do - visit commencer_path(procedure_path: procedure.path) + visit commencer_path(path: procedure.path) fill_in 'individual_nom', with: 'Nom' fill_in 'individual_prenom', with: 'Prenom' end @@ -76,7 +76,7 @@ feature 'Creating a new dossier:' do end scenario 'the user can enter the SIRET of its etablissement and create a new draft', vcr: { cassette_name: 'api_adresse_search_paris_3' }, js: true do - visit commencer_path(procedure_path: procedure.path) + visit commencer_path(path: procedure.path) expect(page).to have_current_path(siret_dossier_path(dossier)) fill_in 'Numéro SIRET', with: siret @@ -93,7 +93,7 @@ feature 'Creating a new dossier:' do end scenario 'the user is notified when its SIRET is invalid' do - visit commencer_path(procedure_path: procedure.path) + visit commencer_path(path: procedure.path) expect(page).to have_current_path(siret_dossier_path(dossier)) fill_in 'Numéro SIRET', with: '0000' diff --git a/spec/features/new_user/linked_dropdown_spec.rb b/spec/features/new_user/linked_dropdown_spec.rb index 70b9870e1..a175f407a 100644 --- a/spec/features/new_user/linked_dropdown_spec.rb +++ b/spec/features/new_user/linked_dropdown_spec.rb @@ -47,7 +47,7 @@ feature 'linked dropdown lists' do private def log_in(email, password, procedure) - visit "/commencer/#{procedure.procedure_path.path}" + visit "/commencer/#{procedure.path}" expect(page).to have_current_path(new_user_session_path) fill_in 'user_email', with: email diff --git a/spec/lib/api_geo/rpg_adapter_spec.rb b/spec/lib/api_geo/rpg_adapter_spec.rb index 83e5f9065..5c277a15a 100644 --- a/spec/lib/api_geo/rpg_adapter_spec.rb +++ b/spec/lib/api_geo/rpg_adapter_spec.rb @@ -53,7 +53,8 @@ describe ApiGeo::RPGAdapter do :code_culture, :surface, :bio, - :geometry + :geometry, + :geo_reference_id ]) end end diff --git a/spec/models/procedure_path_spec.rb b/spec/models/procedure_path_spec.rb deleted file mode 100644 index 29d349f31..000000000 --- a/spec/models/procedure_path_spec.rb +++ /dev/null @@ -1,49 +0,0 @@ -require 'spec_helper' - -describe ProcedurePath do - describe 'assocations' do - it { is_expected.to belong_to(:administrateur) } - it { is_expected.to belong_to(:procedure) } - end - - describe 'attributes' do - it { is_expected.to have_db_column(:path) } - end - - describe 'validation' do - describe 'path' do - let(:admin) { create(:administrateur) } - let(:procedure) { create(:procedure) } - let(:procedure_path) { create(:procedure_path, administrateur: admin, procedure: procedure, path: path) } - - context 'when path is nil' do - let(:path) { nil } - 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 } - end - context 'when path contains spaces' do - let(:path) { 'Demande de subvention' } - 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 } - end - context 'when path contains dashes' do - let(:path) { 'ma-super-procedure' } - 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 } - end - context 'when path is too short' do - let(:path) { 'pr' } - it { expect{ procedure_path }.to raise_error ActiveRecord::RecordInvalid } - end - end - end -end diff --git a/spec/models/procedure_presentation_spec.rb b/spec/models/procedure_presentation_spec.rb index aeb3e8db5..f62afab48 100644 --- a/spec/models/procedure_presentation_spec.rb +++ b/spec/models/procedure_presentation_spec.rb @@ -135,14 +135,14 @@ describe ProcedurePresentation do let(:column) { 'created_at' } let(:dossier) { Timecop.freeze(Time.zone.local(1992, 3, 22)) { create(:dossier, procedure: procedure) } } - it { is_expected.to eq(Time.zone.local(1992, 3, 22).strftime('%d/%m/%Y')) } + it { is_expected.to eq('22/03/1992') } end context 'for en_construction_at column' do let(:column) { 'en_construction_at' } let(:dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: Time.zone.local(2018, 10, 17)) } - it { is_expected.to eq(Time.zone.local(2018, 10, 17).strftime('%d/%m/%Y')) } + it { is_expected.to eq('17/10/2018') } end context 'for updated_at column' do @@ -151,7 +151,7 @@ describe ProcedurePresentation do before { dossier.touch(time: Time.zone.local(2018, 9, 25)) } - it { is_expected.to eq(Time.zone.local(2018, 9, 25).strftime('%d/%m/%Y')) } + it { is_expected.to eq('25/09/2018') } end end @@ -405,6 +405,14 @@ describe ProcedurePresentation do it { is_expected.to contain_exactly(kept_dossier.id) } end + context 'ignore time of day' do + let!(:kept_dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: Time.zone.local(2018, 10, 17, 15, 56)) } + let!(:discarded_dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: Time.zone.local(2018, 10, 18, 5, 42)) } + let(:filter) { [{ 'table' => 'self', 'column' => 'en_construction_at', 'value' => '17/10/2018 19:30' }] } + + it { is_expected.to contain_exactly(kept_dossier.id) } + end + context 'for a malformed date' do context 'when its a string' do let(:filter) { [{ 'table' => 'self', 'column' => 'updated_at', 'value' => 'malformed date' }] } diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index bdd0f5f45..1f039cea0 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -439,9 +439,8 @@ describe Procedure do it { expect(procedure.archived_at).to eq(nil) } it { expect(procedure.published_at).to eq(now) } - it { expect(ProcedurePath.find_by(path: "example-path")).to be } - it { expect(ProcedurePath.find_by(path: "example-path").procedure).to eq(procedure) } - it { expect(ProcedurePath.find_by(path: "example-path").administrateur).to eq(procedure.administrateur) } + it { expect(Procedure.find_by(path: "example-path")).to eq(procedure) } + it { expect(Procedure.find_by(path: "example-path").administrateur).to eq(procedure.administrateur) } end describe "#brouillon?" do @@ -486,7 +485,6 @@ describe Procedure do describe 'archive' do let(:procedure) { create(:procedure, :published) } - let(:procedure_path) { ProcedurePath.find(procedure.procedure_path.id) } let(:now) { Time.zone.now.beginning_of_minute } before do Timecop.freeze(now) @@ -634,7 +632,7 @@ describe Procedure do context "with a path" do let(:procedure) { create(:procedure, :published) } - it { is_expected.to eq("dossiers_#{procedure.procedure_path.path}_2018-01-02_23-11") } + it { is_expected.to eq("dossiers_#{procedure.path}_2018-01-02_23-11") } end context "without a path" do diff --git a/spec/views/admin/procedures/show.html.haml_spec.rb b/spec/views/admin/procedures/show.html.haml_spec.rb index c44f748cb..1418c389b 100644 --- a/spec/views/admin/procedures/show.html.haml_spec.rb +++ b/spec/views/admin/procedures/show.html.haml_spec.rb @@ -53,7 +53,7 @@ describe 'admin/procedures/show.html.haml', type: :view do end describe 'procedure link is present' do - it { expect(rendered).to have_content(commencer_url(procedure_path: procedure.path)) } + it { expect(rendered).to have_content(commencer_url(path: procedure.path)) } end end