commit
ee1d8b1a3b
55 changed files with 470 additions and 114 deletions
|
@ -234,6 +234,10 @@ $header-mobile-breakpoint: 550px;
|
|||
display: flex;
|
||||
color: $black;
|
||||
|
||||
&.active {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: $light-grey;
|
||||
}
|
||||
|
|
|
@ -406,7 +406,7 @@ interface Demandeur {
|
|||
}
|
||||
|
||||
"""
|
||||
Une demarche
|
||||
Une démarche
|
||||
"""
|
||||
type Demarche {
|
||||
annotationDescriptors: [ChampDescriptor!]!
|
||||
|
@ -438,7 +438,7 @@ type Demarche {
|
|||
datePublication: ISO8601DateTime
|
||||
|
||||
"""
|
||||
L’état de dossier pour une démarche déclarative
|
||||
Pour une démarche déclarative, état cible des dossiers à valider automatiquement
|
||||
"""
|
||||
declarative: DossierDeclarativeState
|
||||
|
||||
|
@ -551,7 +551,7 @@ type Demarche {
|
|||
id: ID!
|
||||
|
||||
"""
|
||||
Le numero de la démarche.
|
||||
Numero de la démarche.
|
||||
"""
|
||||
number: Int!
|
||||
publishedRevision: Revision
|
||||
|
@ -559,12 +559,70 @@ type Demarche {
|
|||
service: Service!
|
||||
|
||||
"""
|
||||
L’état de la démarche.
|
||||
État de la démarche.
|
||||
"""
|
||||
state: DemarcheState!
|
||||
|
||||
"""
|
||||
Le titre de la démarche.
|
||||
Titre de la démarche.
|
||||
"""
|
||||
title: String!
|
||||
}
|
||||
|
||||
"""
|
||||
Une démarche (métadonnées)
|
||||
Ceci est une version abrégée du type `Demarche`, qui n’expose que les métadonnées.
|
||||
Cela évite l’accès récursif aux dossiers.
|
||||
"""
|
||||
type DemarcheDescriptor {
|
||||
"""
|
||||
Date de la création.
|
||||
"""
|
||||
dateCreation: ISO8601DateTime!
|
||||
|
||||
"""
|
||||
Date de la dépublication.
|
||||
"""
|
||||
dateDepublication: ISO8601DateTime
|
||||
|
||||
"""
|
||||
Date de la dernière modification.
|
||||
"""
|
||||
dateDerniereModification: ISO8601DateTime!
|
||||
|
||||
"""
|
||||
Date de la fermeture.
|
||||
"""
|
||||
dateFermeture: ISO8601DateTime
|
||||
|
||||
"""
|
||||
Date de la publication.
|
||||
"""
|
||||
datePublication: ISO8601DateTime
|
||||
|
||||
"""
|
||||
Pour une démarche déclarative, état cible des dossiers à valider automatiquement
|
||||
"""
|
||||
declarative: DossierDeclarativeState
|
||||
|
||||
"""
|
||||
Description de la démarche.
|
||||
"""
|
||||
description: String!
|
||||
id: ID!
|
||||
|
||||
"""
|
||||
Numero de la démarche.
|
||||
"""
|
||||
number: Int!
|
||||
|
||||
"""
|
||||
État de la démarche.
|
||||
"""
|
||||
state: DemarcheState!
|
||||
|
||||
"""
|
||||
Titre de la démarche.
|
||||
"""
|
||||
title: String!
|
||||
}
|
||||
|
@ -650,6 +708,7 @@ type Dossier {
|
|||
"""
|
||||
dateTraitement: ISO8601DateTime
|
||||
demandeur: Demandeur!
|
||||
demarche: DemarcheDescriptor!
|
||||
|
||||
"""
|
||||
L’URL du GeoJSON contenant les données cartographiques du dossier.
|
||||
|
|
24
app/graphql/types/demarche_descriptor_type.rb
Normal file
24
app/graphql/types/demarche_descriptor_type.rb
Normal file
|
@ -0,0 +1,24 @@
|
|||
module Types
|
||||
class DemarcheDescriptorType < Types::BaseObject
|
||||
description "Une démarche (métadonnées)
|
||||
Ceci est une version abrégée du type `Demarche`, qui n’expose que les métadonnées.
|
||||
Cela évite l’accès récursif aux dossiers."
|
||||
|
||||
global_id_field :id
|
||||
field :number, Int, "Numero de la démarche.", null: false, method: :id
|
||||
field :title, String, "Titre de la démarche.", null: false, method: :libelle
|
||||
field :description, String, "Description de la démarche.", null: false
|
||||
field :state, Types::DemarcheType::DemarcheState, "État de la démarche.", null: false
|
||||
field :declarative, Types::DemarcheType::DossierDeclarativeState, "Pour une démarche déclarative, état cible des dossiers à valider automatiquement", null: true, method: :declarative_with_state
|
||||
|
||||
field :date_creation, GraphQL::Types::ISO8601DateTime, "Date de la création.", null: false, method: :created_at
|
||||
field :date_publication, GraphQL::Types::ISO8601DateTime, "Date de la publication.", null: true, method: :published_at
|
||||
field :date_derniere_modification, GraphQL::Types::ISO8601DateTime, "Date de la dernière modification.", null: false, method: :updated_at
|
||||
field :date_depublication, GraphQL::Types::ISO8601DateTime, "Date de la dépublication.", null: true, method: :unpublished_at
|
||||
field :date_fermeture, GraphQL::Types::ISO8601DateTime, "Date de la fermeture.", null: true, method: :closed_at
|
||||
|
||||
def state
|
||||
object.aasm.current_state
|
||||
end
|
||||
end
|
||||
end
|
|
@ -14,14 +14,14 @@ module Types
|
|||
end
|
||||
end
|
||||
|
||||
description "Une demarche"
|
||||
description "Une démarche"
|
||||
|
||||
global_id_field :id
|
||||
field :number, Int, "Le numero de la démarche.", null: false, method: :id
|
||||
field :title, String, "Le titre de la démarche.", null: false, method: :libelle
|
||||
field :number, Int, "Numero de la démarche.", null: false, method: :id
|
||||
field :title, String, "Titre de la démarche.", null: false, method: :libelle
|
||||
field :description, String, "Description de la démarche.", null: false
|
||||
field :state, DemarcheState, "L’état de la démarche.", null: false
|
||||
field :declarative, DossierDeclarativeState, "L’état de dossier pour une démarche déclarative", null: true, method: :declarative_with_state
|
||||
field :state, DemarcheState, "État de la démarche.", null: false
|
||||
field :declarative, DossierDeclarativeState, "Pour une démarche déclarative, état cible des dossiers à valider automatiquement", null: true, method: :declarative_with_state
|
||||
|
||||
field :date_creation, GraphQL::Types::ISO8601DateTime, "Date de la création.", null: false, method: :created_at
|
||||
field :date_publication, GraphQL::Types::ISO8601DateTime, "Date de la publication.", null: true, method: :published_at
|
||||
|
|
|
@ -12,6 +12,8 @@ module Types
|
|||
field :number, Int, "Le numero du dossier.", null: false, method: :id
|
||||
field :state, DossierState, "L’état du dossier.", null: false
|
||||
|
||||
field :demarche, Types::DemarcheDescriptorType, null: false, method: :procedure
|
||||
|
||||
field :date_passage_en_construction, GraphQL::Types::ISO8601DateTime, "Date de dépôt.", null: false, method: :en_construction_at
|
||||
field :date_passage_en_instruction, GraphQL::Types::ISO8601DateTime, "Date de passage en instruction.", null: true, method: :en_instruction_at
|
||||
field :date_traitement, GraphQL::Types::ISO8601DateTime, "Date de traitement.", null: true, method: :processed_at
|
||||
|
|
|
@ -57,7 +57,7 @@ class Dossier < ApplicationRecord
|
|||
|
||||
REMAINING_DAYS_BEFORE_CLOSING = 2
|
||||
INTERVAL_BEFORE_CLOSING = "#{REMAINING_DAYS_BEFORE_CLOSING} days"
|
||||
INTERVAL_BEFORE_EXPIRATION = '1 month'
|
||||
INTERVAL_BEFORE_EXPIRATION = '2 weeks'
|
||||
INTERVAL_EXPIRATION = '1 month 5 days'
|
||||
|
||||
has_one :etablissement, dependent: :destroy
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
-# ugly hack to know if the mail is creation confirmation or a password change confirmation
|
||||
- if @user.unconfirmed_email.nil?
|
||||
- content_for(:title, 'Activate account')
|
||||
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
You have entered your details to create an account on #{APPLICATION_NAME}. To confirm your email and finish creating your account, select the following link:
|
||||
- link = confirmation_url(@user, confirmation_token: @token, procedure_id: @procedure&.id)
|
||||
= link_to(link, link)
|
||||
|
||||
- else
|
||||
- content_for(:title, "Change email address")
|
||||
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
To confirm your account email change on #{APPLICATION_NAME}, select the following link:
|
||||
= link_to(confirmation_url(@user, confirmation_token: @token), confirmation_url(@user, confirmation_token: @token))
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
|
@ -2,8 +2,7 @@
|
|||
- if @user.unconfirmed_email.nil?
|
||||
- content_for(:title, 'Activez votre compte')
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Pour activer votre compte sur #{APPLICATION_NAME}, veuillez cliquer sur le lien suivant :
|
||||
|
@ -13,8 +12,7 @@
|
|||
- else
|
||||
- content_for(:title, "Changement d’adresse email")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Pour confirmer votre changement d’adresse email, veuillez cliquer sur le lien suivant :
|
||||
|
|
13
app/views/devise_mailer/email_changed.en.html.haml
Normal file
13
app/views/devise_mailer/email_changed.en.html.haml
Normal file
|
@ -0,0 +1,13 @@
|
|||
- content_for(:title, 'New email address')
|
||||
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
- unconfirmed_email = @resource.try(:unconfirmed_email?)
|
||||
- if unconfirmed_email.present?
|
||||
%p
|
||||
We recieved a request to change the email address associated with your account #{@email} on #{APPLICATION_NAME}. The new email address will be #{unconfirmed_email}.
|
||||
- else
|
||||
%p
|
||||
A change to the email address associated with your account #{@email} was made on #{APPLICATION_NAME}. You can now connect with the email address #{@resource.email}.
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, 'Votre nouvelle adresse email')
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
- unconfirmed_email = @resource.try(:unconfirmed_email?)
|
||||
- if unconfirmed_email.present?
|
||||
|
|
8
app/views/devise_mailer/password_change.en.html.haml
Normal file
8
app/views/devise_mailer/password_change.en.html.haml
Normal file
|
@ -0,0 +1,8 @@
|
|||
- content_for(:title, 'New password')
|
||||
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
A request to change your password on #{APPLICATION_NAME} for the account #{@resource.email} was successfully processed.
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, 'Votre nouveau mot de passe')
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
La demande de changement de mot de passe pour votre compte #{@resource.email} sur
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Someone has requested to change your account password on #{APPLICATION_NAME}. To define a new password, select the following link:
|
||||
|
||||
= round_button 'Change the password', edit_password_url(@resource, reset_password_token: @token), :primary
|
||||
|
||||
%p
|
||||
If you didn't request this, please ignore this email. Your password won't change.
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
|
@ -1,5 +1,4 @@
|
|||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Vous avez demandé à changer votre mot de passe sur #{APPLICATION_NAME}. Pour ceci, merci de cliquer sur le lien suivant :
|
||||
|
|
14
app/views/devise_mailer/unlock_instructions.en.html.haml
Normal file
14
app/views/devise_mailer/unlock_instructions.en.html.haml
Normal file
|
@ -0,0 +1,14 @@
|
|||
- content_for(:title, 'Reactivate account')
|
||||
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Someone made too many unsuccessful attempts to connect to your account #{@resource.email} on #{APPLICATION_NAME}.
|
||||
As a security measure, we temporarily locked access to your account.
|
||||
|
||||
%p
|
||||
To unlock access to your account, select the following link:
|
||||
|
||||
%p= link_to 'Unlock account', unlock_url(@resource, unlock_token: @token)
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, 'Réactivez votre compte')
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Quelqu’un a tenté de se connecter un grand nombre de fois sans succès à votre
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t('.header', count: @deleted_dossiers.count)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t('.header', count: @deleted_dossiers.count)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t('.header', count: @dossier_hashes.count)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t('.header', count: @dossiers.count)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Le dossier n°#{@dossier.id} pour la démarche «
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t('.body', dossier_id: @deleted_dossier.dossier_id, procedure: @deleted_dossier.procedure.libelle)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t('.body', dossier_id: @deleted_dossier.dossier_id, procedure: @deleted_dossier.procedure.libelle)
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= "Vous suiviez jusqu'à maintenant le dossier n°#{@dossier_id} de la démarche #{@demarche}."
|
||||
L’usager a modifié le groupe de routage. Son dossier appartient maintenant à un groupe instructeur dont vous ne faites pas partie.
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t('.body_html', dossier_id: @deleted_dossier.dossier_id, libelle_demarche: @deleted_dossier.procedure.libelle, deleted_dossiers_link: dossiers_url(statut: 'dossiers-supprimes'))
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
- if @state == Dossier.states.fetch(:en_construction)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
- if @state == Dossier.states.fetch(:en_construction)
|
||||
|
|
31
app/views/dossier_mailer/notify_new_answer.en.html.haml
Normal file
31
app/views/dossier_mailer/notify_new_answer.en.html.haml
Normal file
|
@ -0,0 +1,31 @@
|
|||
- content_for :procedure_logo do
|
||||
= render 'layouts/mailers/logo', url: @logo_url
|
||||
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
- if !@dossier.brouillon?
|
||||
%p
|
||||
You received
|
||||
%strong a new message
|
||||
from the service in charge of examine your File.
|
||||
%p
|
||||
To read the message and answer it, select the following link:
|
||||
|
||||
= round_button('Read the message', messagerie_dossier_url(@dossier), :primary)
|
||||
- else
|
||||
%p
|
||||
You received
|
||||
%strong a new message
|
||||
from the service in charge of examine the File you started a draft for on the procedure #{@dossier.procedure.libelle}.
|
||||
%p{ style: "padding: 8px; color: #333333; background-color: #EEEEEE; font-size: 14px;" }
|
||||
= @body
|
||||
|
||||
%p
|
||||
If you chose to contact the service, please use the email available below in the page.
|
||||
|
||||
= round_button('Open the File', dossier_url(@dossier), :primary)
|
||||
|
||||
= render 'layouts/mailers/signature', service: @service
|
||||
|
||||
- content_for :footer do
|
||||
= render 'layouts/mailers/service_footer', service: @service, dossier: @dossier
|
|
@ -1,8 +1,7 @@
|
|||
- content_for :procedure_logo do
|
||||
= render 'layouts/mailers/logo', url: @logo_url
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
- if !@dossier.brouillon?
|
||||
%p
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t('.body', dossier_id: @dossier.id, libelle_demarche: @dossier.procedure.libelle)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t('.body', dossier_id: @dossier.id, libelle_demarche: @dossier.procedure.libelle)
|
||||
|
|
23
app/views/dossier_mailer/notify_new_draft.en.html.haml
Normal file
23
app/views/dossier_mailer/notify_new_draft.en.html.haml
Normal file
|
@ -0,0 +1,23 @@
|
|||
- content_for :procedure_logo do
|
||||
= render 'layouts/mailers/logo', url: @logo_url
|
||||
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
You started filling a File on the procedure:
|
||||
= succeed '.' do
|
||||
%strong « #{@dossier.procedure.libelle} »
|
||||
|
||||
%p
|
||||
You can access your File, to review or complete, by clicking on the following button:
|
||||
|
||||
= round_button('Access your File', dossier_url(@dossier), :primary)
|
||||
|
||||
- if @dossier.procedure.auto_archive_on
|
||||
%p
|
||||
Your File needs to be submitted before #{procedure_auto_archive_datetime(@dossier.procedure)}.
|
||||
|
||||
= render 'layouts/mailers/signature'
|
||||
|
||||
- content_for :footer do
|
||||
= render 'layouts/mailers/service_footer', service: @service, dossier: @dossier
|
|
@ -1,8 +1,7 @@
|
|||
- content_for :procedure_logo do
|
||||
= render 'layouts/mailers/logo', url: @logo_url
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Vous avez commencé à remplir un dossier pour la démarche
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
- content_for :procedure_logo do
|
||||
= render 'layouts/mailers/logo', url: @logo_url
|
||||
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Your File will be reexamined. All previous decisions are void.
|
||||
To see the File created on procedure
|
||||
%strong= @dossier.procedure.libelle
|
||||
, select the following link:
|
||||
= link_to dossier_url(@dossier), dossier_url(@dossier), target: '_blank', rel: 'noopener'
|
||||
|
||||
- if @dossier.procedure.service.present?
|
||||
%p
|
||||
In order to get more details about the decision to reexamin, please contact the following service:
|
||||
= mail_to @dossier.procedure.service.email, @dossier.procedure.service.email
|
||||
|
||||
= render 'layouts/mailers/signature'
|
||||
|
||||
- content_for :footer do
|
||||
= render 'layouts/mailers/service_footer', service: @service, dossier: @dossier
|
|
@ -1,8 +1,7 @@
|
|||
- content_for :procedure_logo do
|
||||
= render 'layouts/mailers/logo', url: @logo_url
|
||||
|
||||
%p
|
||||
Bonjour,
|
||||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Votre dossier va être réexaminé, la précédente décision sur ce dossier est caduque.
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
.dropdown.locale-dropdown.header-menu-opener
|
||||
%button.button.dropdown-button.icon-only.header-menu-button{ title: "Translate", aria: { expanded: 'false', controls: 'locale_menu' } }
|
||||
.hidden Translate
|
||||
= image_tag "icons/translate-icon.svg", alt: 'Translate', width: 24, height: 24, lazy: true, aria: { hidden: true }
|
||||
%button.button.dropdown-button.icon-only.header-menu-button{ title: t('.languages'), aria: { expanded: 'false', controls: 'locale_menu' } }
|
||||
.hidden t('.languages')
|
||||
= image_tag "icons/translate-icon.svg", alt: t('.languages'), width: 24, height: 24, lazy: true, aria: { hidden: true }
|
||||
%ul.header-menu.dropdown-content
|
||||
%li
|
||||
= link_to save_locale_path(locale: :en), method: :post, class: "menu-item menu-link" do
|
||||
EN – English
|
||||
= active_link_to save_locale_path(locale: :fr), method: :post, class: "menu-item menu-link", active: I18n.locale == :fr do
|
||||
Français
|
||||
%li
|
||||
= link_to save_locale_path(locale: :fr), method: :post, class: "menu-item menu-link" do
|
||||
FR – français
|
||||
= active_link_to save_locale_path(locale: :en), method: :post, class: "menu-item menu-link", active: I18n.locale == :en do
|
||||
English
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
= image_tag "landing/hero/dematerialiser.svg", class: "paperless-logo", alt: "moins de papier"
|
||||
.baseline.center
|
||||
%p
|
||||
%span.simple= t('views.layouts.commencer.no_procedure.line1')
|
||||
%span.simple= t('.line1')
|
||||
%br
|
||||
= t('views.layouts.commencer.no_procedure.line2')
|
||||
= t('.line2')
|
||||
%br
|
||||
= t('views.layouts.commencer.no_procedure.line3')
|
||||
= t('.line3')
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
%p
|
||||
Bonne journée,
|
||||
= t(:best_regards, scope: [:views, :shared, :greetings])
|
||||
%br
|
||||
- if defined?(service) && service && service.nom.present?
|
||||
= service.nom
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
- variant = (index == 0 ? :primary : :secondary)
|
||||
- case action
|
||||
- when MailTemplateConcern::Actions::SHOW
|
||||
= round_button('Consulter mon dossier', dossier_url(@dossier), variant)
|
||||
= round_button(t(:access, scope: [:layouts, :notifications, :actions]), dossier_url(@dossier), variant)
|
||||
- when MailTemplateConcern::Actions::ASK_QUESTION
|
||||
= round_button('J’ai une question', messagerie_dossier_url(@dossier), variant)
|
||||
= round_button(t(:question, scope: [:layouts, :notifications, :actions]), messagerie_dossier_url(@dossier), variant)
|
||||
- when MailTemplateConcern::Actions::REPLY
|
||||
= round_button('Répondre à ce message', messagerie_dossier_url(@dossier), variant)
|
||||
= round_button(t(:reply, scope: [:layouts, :notifications, :actions]), messagerie_dossier_url(@dossier), variant)
|
||||
|
||||
= vertical_margin(5)
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
|
||||
%h1= t('devise.passwords.new.forgot_your_password')
|
||||
|
||||
%p.notice= t('views.passwords.new.send_me_reset_password_instructions')
|
||||
%p.notice= t('devise.passwords.new.send_me_reset_password_instructions')
|
||||
|
||||
= f.label :email, 'Email'
|
||||
= f.email_field :email, autofocus: true
|
||||
|
||||
= f.submit 'Demander un nouveau mot de passe', class: 'button expand primary'
|
||||
= f.submit t('devise.passwords.new.request_new_password'), class: 'button expand primary'
|
||||
|
|
5
config/locales/devise.en.yml
Normal file
5
config/locales/devise.en.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
en:
|
||||
devise:
|
||||
passwords:
|
||||
new:
|
||||
request_new_password: Request new password
|
5
config/locales/devise.fr.yml
Normal file
5
config/locales/devise.fr.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
fr:
|
||||
devise:
|
||||
passwords:
|
||||
new:
|
||||
request_new_password: Demander un nouveau mot de passe
|
|
@ -45,6 +45,19 @@ en:
|
|||
commentaire:
|
||||
send_message_to_instructeur: "Send a message to the instructor"
|
||||
reply_in_mailbox: "Reply in mailbox"
|
||||
layouts:
|
||||
commencer:
|
||||
no_procedure:
|
||||
line1: A simple tool
|
||||
line2: to manage dematerialized
|
||||
line3: administrative forms.
|
||||
locale_dropdown:
|
||||
languages: "Languages"
|
||||
notifications:
|
||||
actions:
|
||||
access: View your File
|
||||
question: I have a question
|
||||
reply: Reply to this message
|
||||
views:
|
||||
commencer:
|
||||
show:
|
||||
|
@ -85,12 +98,6 @@ en:
|
|||
want_to_withdraw_permission: "Would you like to withdraw the permission?"
|
||||
edit_dossier: "These people can edit this file."
|
||||
submit_dossier_yourself: "You must submit the file yourself when it is complete."
|
||||
layouts:
|
||||
commencer:
|
||||
no_procedure:
|
||||
line1: A simple tool
|
||||
line2: to manage dematerialized
|
||||
line3: administrative forms.
|
||||
pagination:
|
||||
next: Next
|
||||
last: Last
|
||||
|
@ -98,6 +105,9 @@ en:
|
|||
first: First
|
||||
truncate: '…'
|
||||
shared:
|
||||
greetings:
|
||||
hello: Dear Sir or Madam,
|
||||
best_regards: Best Regards,
|
||||
dossiers:
|
||||
edit:
|
||||
autosave: Your file is automatically saved after each modification. You can close the window at any time and pick up where you left off later.
|
||||
|
|
|
@ -35,6 +35,20 @@ fr:
|
|||
commentaire:
|
||||
send_message_to_instructeur: "Envoyer un message à l’instructeur"
|
||||
reply_in_mailbox: "Répondre dans la messagerie."
|
||||
layouts:
|
||||
commencer:
|
||||
no_procedure:
|
||||
line1: Un outil simple
|
||||
line2: pour gérer les formulaires
|
||||
line3: administratifs dématérialisés.
|
||||
locale_dropdown:
|
||||
languages: "Langues"
|
||||
notifications:
|
||||
actions:
|
||||
access: Consulter mon dossier
|
||||
question: J’ai une question
|
||||
reply: Répondre à ce message
|
||||
|
||||
views:
|
||||
commencer:
|
||||
show:
|
||||
|
@ -76,12 +90,6 @@ fr:
|
|||
want_to_withdraw_permission: "Souhaitez-vous supprimer l’autorisation ?"
|
||||
edit_dossier: "Ces personnes peuvent modifier ce dossier."
|
||||
submit_dossier_yourself: "Une fois le dossier complet, vous devez le déposer vous-même."
|
||||
layouts:
|
||||
commencer:
|
||||
no_procedure:
|
||||
line1: Un outil simple
|
||||
line2: pour gérer les formulaires
|
||||
line3: administratifs dématérialisés.
|
||||
pagination:
|
||||
next: Suivant
|
||||
last: Dernier
|
||||
|
@ -89,6 +97,9 @@ fr:
|
|||
first: Premier
|
||||
truncate: '…'
|
||||
shared:
|
||||
greetings:
|
||||
hello: Bonjour,
|
||||
best_regards: Bonne journée,
|
||||
dossiers:
|
||||
edit:
|
||||
autosave: Votre dossier est enregistré automatiquement après chaque modification. Vous pouvez à tout moment fermer la fenêtre et reprendre plus tard là où vous en étiez.
|
||||
|
|
|
@ -14,8 +14,8 @@ fr:
|
|||
one: "Le dossier suivant dont le traitement est terminé sera bientôt automatiquement supprimé :"
|
||||
other: "Les dossiers suivant dont le traitement est terminé seront bientôt automatiquement supprimés :"
|
||||
footer_en_construction:
|
||||
one: "Vous avez <b>un mois</b> pour commencer l’instruction du dossier."
|
||||
other: "Vous avez <b>un mois</b> pour commencer l’instruction des dossiers."
|
||||
one: "Vous avez <b>deux semaines</b> pour commencer l’instruction du dossier."
|
||||
other: "Vous avez <b>deux semaines</b> pour commencer l’instruction des dossiers."
|
||||
footer_termine:
|
||||
one: "Vous avez <b>un mois</b> pour archiver le dossier."
|
||||
other: "Vous avez <b>un mois</b> pour archiver les dossiers."
|
||||
one: "Vous avez <b>deux semaines</b> pour archiver le dossier."
|
||||
other: "Vous avez <b>deux semaines</b> pour archiver les dossiers."
|
||||
|
|
|
@ -14,8 +14,8 @@ fr:
|
|||
one: "Afin de limiter la conservation de vos données personnelles, le dossier suivant dont le traitement est terminé sera bientôt automatiquement supprimé :"
|
||||
other: "Afin de limiter la conservation de vos données personnelles, les dossiers suivant dont le traitement est terminé seront bientôt automatiquement supprimés :"
|
||||
footer:
|
||||
one: "Vous pouvez retrouver votre dossier pendant encore <b>un mois</b>. Vous n’avez rien à faire."
|
||||
other: "Vous pouvez retrouver vos dossiers pendant encore <b>un mois</b>. Vous n’avez rien à faire."
|
||||
one: "Vous pouvez retrouver votre dossier pendant encore <b>deux semaines</b>. Vous n’avez rien à faire."
|
||||
other: "Vous pouvez retrouver vos dossiers pendant encore <b>deux semaines</b>. Vous n’avez rien à faire."
|
||||
footer_en_construction:
|
||||
one: "Si vous souhaitez conserver votre dossier plus longtemps, vous pouvez <b>prolonger sa durée de conservation</b> dans l’interface."
|
||||
other: "Si vous souhaitez conserver vos dossiers plus longtemps, vous pouvez <b>prolonger leur durée de conservation</b> au cas par cas dans l’interface."
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
namespace :after_party do
|
||||
desc 'Deployment task: remove_migration_status_on_filters'
|
||||
task remove_migration_status_on_filters: :environment do
|
||||
rake_puts "Running deploy task 'remove_migration_status_on_filters'"
|
||||
|
||||
# In a9a4f6e2a801b19b127aae8eaec0d1f384b1a53a, a task to migrate ProcedurePresentation's filters
|
||||
# was added.
|
||||
# This task added a "migrated: true" key to all migrated filters.
|
||||
#
|
||||
# Now that this task has run, we can safely remove the extra key.
|
||||
|
||||
procedure_presentations = ProcedurePresentation.where("filters -> 'migrated' IS NOT NULL")
|
||||
progress = ProgressReport.new(procedure_presentations.count)
|
||||
|
||||
procedure_presentations.find_each do |pp|
|
||||
pp.update_column(:filters, pp.filters.except('migrated'))
|
||||
progress.inc
|
||||
end
|
||||
progress.finish
|
||||
|
||||
AfterParty::TaskRecord
|
||||
.create version: AfterParty::TaskRecorder.new(__FILE__).timestamp
|
||||
end
|
||||
end
|
|
@ -15,6 +15,17 @@ def rake_print(*args)
|
|||
end
|
||||
end
|
||||
|
||||
# Display progress of a long-running Rake task.
|
||||
#
|
||||
# Usage:
|
||||
#
|
||||
# ```
|
||||
# progress = ProgressReport.new(100)
|
||||
# (0..100).times do
|
||||
# progress.inc
|
||||
# end
|
||||
# progress.finish
|
||||
# ````
|
||||
class ProgressReport
|
||||
def initialize(total)
|
||||
@start = Time.zone.now
|
||||
|
|
|
@ -310,6 +310,11 @@ describe API::V2::GraphqlController do
|
|||
motivationAttachment {
|
||||
url
|
||||
}
|
||||
demarche {
|
||||
number
|
||||
title
|
||||
state
|
||||
}
|
||||
usager {
|
||||
id
|
||||
email
|
||||
|
@ -382,6 +387,11 @@ describe API::V2::GraphqlController do
|
|||
dateTraitement: nil,
|
||||
motivation: nil,
|
||||
motivationAttachment: nil,
|
||||
demarche: {
|
||||
number: dossier.procedure.id,
|
||||
title: dossier.procedure.libelle,
|
||||
state: 'publiee'
|
||||
},
|
||||
usager: {
|
||||
id: dossier.user.to_typed_id,
|
||||
email: dossier.user.email
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
xdescribe Manager::AdministrateursController, type: :controller do
|
||||
describe Manager::AdministrateursController, type: :controller do
|
||||
let(:super_admin) { create(:super_admin) }
|
||||
let(:administrateur) { create(:administrateur) }
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@ feature 'Accessing the website in different languages:' do
|
|||
visit new_user_session_path
|
||||
expect(page).to have_text('Connectez-vous')
|
||||
|
||||
click_on 'Translate'
|
||||
click_on 'EN – English'
|
||||
click_on 'Langues'
|
||||
click_on 'English'
|
||||
|
||||
# The page is now in English
|
||||
expect(page).to have_text('Sign in')
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
describe '20201001161931_migrate_filters_to_use_stable_id' do
|
||||
let(:rake_task) { Rake::Task['after_party:remove_migration_status_on_filters'] }
|
||||
|
||||
let(:procedure) { create(:simple_procedure) }
|
||||
let(:instructeur_1) { create(:instructeur) }
|
||||
let(:instructeur_2) { create(:instructeur) }
|
||||
|
||||
let(:assign_to_1) { create(:assign_to, procedure: procedure, instructeur: instructeur_1) }
|
||||
let(:assign_to_2) { create(:assign_to, procedure: procedure, instructeur: instructeur_2) }
|
||||
|
||||
let(:procedure_presentation_with_migration) { create(:procedure_presentation, assign_to: assign_to_1, filters: filters.merge('migrated': true)) }
|
||||
let(:procedure_presentation_without_migration) { create(:procedure_presentation, assign_to: assign_to_2, filters: filters) }
|
||||
|
||||
let(:filters) do
|
||||
{ "suivis" => [{ "table" => "user", "column" => "email", "value" => "test@example.com" }] }
|
||||
end
|
||||
|
||||
subject(:run_task) do
|
||||
procedure_presentation_with_migration
|
||||
procedure_presentation_without_migration
|
||||
|
||||
rake_task.invoke
|
||||
|
||||
procedure_presentation_with_migration.reload
|
||||
procedure_presentation_without_migration.reload
|
||||
end
|
||||
|
||||
after { rake_task.reenable }
|
||||
|
||||
context 'when the procedure presentation has a "migrated" key' do
|
||||
it 'removes the "migrated" key' do
|
||||
run_task
|
||||
expect(procedure_presentation_with_migration.filters).not_to have_key('migrated')
|
||||
end
|
||||
|
||||
it 'leaves other keys unchanged' do
|
||||
run_task
|
||||
expect(procedure_presentation_with_migration.filters['suivis']).to be_present
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the procedure presentation doesn’t have a "migrated" key' do
|
||||
it 'leaves keys unchanged' do
|
||||
run_task
|
||||
expect(procedure_presentation_without_migration.filters['suivis']).to be_present
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the procedure presentation is invalid' do
|
||||
before do
|
||||
procedure_presentation_with_migration.update_column(
|
||||
:sort,
|
||||
{ table: 'invalid-table', column: 'invalid-column', order: 'invalid-order' }
|
||||
)
|
||||
end
|
||||
|
||||
it 'removes the "migrated" key properly' do
|
||||
run_task
|
||||
expect(procedure_presentation_with_migration).not_to be_valid
|
||||
expect(procedure_presentation_with_migration.filters).not_to have_key('migrated')
|
||||
end
|
||||
|
||||
it 'leaves the other keys unchanged' do
|
||||
run_task
|
||||
expect(procedure_presentation_without_migration.filters['suivis']).to be_present
|
||||
end
|
||||
end
|
||||
end
|
|
@ -151,7 +151,7 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
it { expect(subject.body).to include("n° #{dossier.id} ") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).to include("PDF") }
|
||||
it { expect(subject.body).to include("Vous avez <b>un mois</b> pour commencer l’instruction du dossier.") }
|
||||
it { expect(subject.body).to include("Vous avez <b>deux semaines</b> pour commencer l’instruction du dossier.") }
|
||||
end
|
||||
|
||||
describe 'termine' do
|
||||
|
@ -163,7 +163,7 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
it { expect(subject.body).to include("n° #{dossier.id} ") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).to include("PDF") }
|
||||
it { expect(subject.body).to include("Vous avez <b>un mois</b> pour archiver le dossier.") }
|
||||
it { expect(subject.body).to include("Vous avez <b>deux semaines</b> pour archiver le dossier.") }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -178,7 +178,7 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
it { expect(subject.body).to include("n° #{dossier.id} ") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).to include("PDF") }
|
||||
it { expect(subject.body).to include("Vous pouvez retrouver votre dossier pendant encore <b>un mois</b>. Vous n’avez rien à faire.") }
|
||||
it { expect(subject.body).to include("Vous pouvez retrouver votre dossier pendant encore <b>deux semaines</b>. Vous n’avez rien à faire.") }
|
||||
it { expect(subject.body).to include("Si vous souhaitez conserver votre dossier plus longtemps, vous pouvez <b>prolonger sa durée de conservation</b> dans l’interface.") }
|
||||
end
|
||||
|
||||
|
@ -192,7 +192,7 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
it { expect(subject.body).to include("n° #{dossier.id} ") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).to include("PDF") }
|
||||
it { expect(subject.body).to include("Vous pouvez retrouver votre dossier pendant encore <b>un mois</b>. Vous n’avez rien à faire.") }
|
||||
it { expect(subject.body).to include("Vous pouvez retrouver votre dossier pendant encore <b>deux semaines</b>. Vous n’avez rien à faire.") }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ describe Dossier do
|
|||
describe 'brouillon_close_to_expiration' do
|
||||
let(:procedure) { create(:procedure, :published, duree_conservation_dossiers_dans_ds: 6) }
|
||||
let!(:young_dossier) { create(:dossier, :en_construction, procedure: procedure) }
|
||||
let!(:expiring_dossier) { create(:dossier, created_at: 170.days.ago, procedure: procedure) }
|
||||
let!(:expiring_dossier) { create(:dossier, created_at: 175.days.ago, procedure: procedure) }
|
||||
let!(:just_expired_dossier) { create(:dossier, created_at: (6.months + 1.hour + 10.seconds).ago, procedure: procedure) }
|
||||
let!(:long_expired_dossier) { create(:dossier, created_at: 1.year.ago, procedure: procedure) }
|
||||
|
||||
|
@ -66,7 +66,7 @@ describe Dossier do
|
|||
describe 'en_construction_close_to_expiration' do
|
||||
let(:procedure) { create(:procedure, :published, duree_conservation_dossiers_dans_ds: 6) }
|
||||
let!(:young_dossier) { create(:dossier, procedure: procedure) }
|
||||
let!(:expiring_dossier) { create(:dossier, :en_construction, en_construction_at: 170.days.ago, procedure: procedure) }
|
||||
let!(:expiring_dossier) { create(:dossier, :en_construction, en_construction_at: 175.days.ago, procedure: procedure) }
|
||||
let!(:just_expired_dossier) { create(:dossier, :en_construction, en_construction_at: (6.months + 1.hour + 10.seconds).ago, procedure: procedure) }
|
||||
let!(:long_expired_dossier) { create(:dossier, :en_construction, en_construction_at: 1.year.ago, procedure: procedure) }
|
||||
|
||||
|
@ -92,7 +92,7 @@ describe Dossier do
|
|||
describe 'en_instruction_close_to_expiration' do
|
||||
let(:procedure) { create(:procedure, :published, duree_conservation_dossiers_dans_ds: 6) }
|
||||
let!(:young_dossier) { create(:dossier, procedure: procedure) }
|
||||
let!(:expiring_dossier) { create(:dossier, :en_instruction, en_instruction_at: 170.days.ago, procedure: procedure) }
|
||||
let!(:expiring_dossier) { create(:dossier, :en_instruction, en_instruction_at: 175.days.ago, procedure: procedure) }
|
||||
let!(:just_expired_dossier) { create(:dossier, :en_instruction, en_instruction_at: (6.months + 1.hour + 10.seconds).ago, procedure: procedure) }
|
||||
let!(:long_expired_dossier) { create(:dossier, :en_instruction, en_instruction_at: 1.year.ago, procedure: procedure) }
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ describe ExpiredDossiersDeletionService do
|
|||
|
||||
describe '#process_expired_dossiers_brouillon' do
|
||||
let(:today) { Time.zone.now.at_midnight }
|
||||
let(:date_close_to_expiration) { Date.today - procedure.duree_conservation_dossiers_dans_ds.months + 1.month }
|
||||
let(:date_close_to_expiration) { Date.today - procedure.duree_conservation_dossiers_dans_ds.months + 2.weeks }
|
||||
let(:date_expired) { Date.today - procedure.duree_conservation_dossiers_dans_ds.months - 6.days }
|
||||
let(:date_not_expired) { Date.today - procedure.duree_conservation_dossiers_dans_ds.months + 2.months }
|
||||
|
||||
|
@ -56,15 +56,15 @@ describe ExpiredDossiersDeletionService do
|
|||
|
||||
before { ExpiredDossiersDeletionService.send_brouillon_expiration_notices }
|
||||
|
||||
context 'when the dossier is not closed to expiration' do
|
||||
let(:created_at) { (conservation_par_defaut - 1.month - 1.day).ago }
|
||||
context 'when the dossier is not close to expiration' do
|
||||
let(:created_at) { (conservation_par_defaut - 2.weeks - 1.day).ago }
|
||||
|
||||
it { expect(dossier.reload.brouillon_close_to_expiration_notice_sent_at).to be_nil }
|
||||
it { expect(DossierMailer).not_to have_received(:notify_brouillon_near_deletion) }
|
||||
end
|
||||
|
||||
context 'when the dossier is closed to expiration' do
|
||||
let(:created_at) { (conservation_par_defaut - 1.month + 1.day).ago }
|
||||
context 'when the dossier is close to expiration' do
|
||||
let(:created_at) { (conservation_par_defaut - 2.weeks + 1.day).ago }
|
||||
|
||||
it { expect(dossier.reload.brouillon_close_to_expiration_notice_sent_at).not_to be_nil }
|
||||
it { expect(DossierMailer).to have_received(:notify_brouillon_near_deletion).once }
|
||||
|
@ -73,8 +73,8 @@ describe ExpiredDossiersDeletionService do
|
|||
end
|
||||
|
||||
context 'with 2 dossiers to notice' do
|
||||
let!(:dossier_1) { create(:dossier, procedure: procedure, user: user, created_at: (conservation_par_defaut - 1.month + 1.day).ago) }
|
||||
let!(:dossier_2) { create(:dossier, procedure: procedure_2, user: user, created_at: (conservation_par_defaut - 1.month + 1.day).ago) }
|
||||
let!(:dossier_1) { create(:dossier, procedure: procedure, user: user, created_at: (conservation_par_defaut - 2.weeks + 1.day).ago) }
|
||||
let!(:dossier_2) { create(:dossier, procedure: procedure_2, user: user, created_at: (conservation_par_defaut - 2.weeks + 1.day).ago) }
|
||||
|
||||
before { ExpiredDossiersDeletionService.send_brouillon_expiration_notices }
|
||||
|
||||
|
@ -146,7 +146,7 @@ describe ExpiredDossiersDeletionService do
|
|||
before { ExpiredDossiersDeletionService.send_en_construction_expiration_notices }
|
||||
|
||||
context 'when the dossier is not near deletion' do
|
||||
let(:en_construction_at) { (conservation_par_defaut - 1.month - 1.day).ago }
|
||||
let(:en_construction_at) { (conservation_par_defaut - 2.weeks - 1.day).ago }
|
||||
|
||||
it { expect(dossier.reload.en_construction_close_to_expiration_notice_sent_at).to be_nil }
|
||||
it { expect(DossierMailer).not_to have_received(:notify_near_deletion_to_user) }
|
||||
|
@ -154,7 +154,7 @@ describe ExpiredDossiersDeletionService do
|
|||
end
|
||||
|
||||
context 'when the dossier is near deletion' do
|
||||
let(:en_construction_at) { (conservation_par_defaut - 1.month + 1.day).ago }
|
||||
let(:en_construction_at) { (conservation_par_defaut - 2.weeks + 1.day).ago }
|
||||
|
||||
it { expect(dossier.reload.en_construction_close_to_expiration_notice_sent_at).not_to be_nil }
|
||||
|
||||
|
@ -167,8 +167,8 @@ describe ExpiredDossiersDeletionService do
|
|||
end
|
||||
|
||||
context 'with 2 dossiers to notice' do
|
||||
let!(:dossier_1) { create(:dossier, :en_construction, procedure: procedure, user: user, en_construction_at: (conservation_par_defaut - 1.month + 1.day).ago) }
|
||||
let!(:dossier_2) { create(:dossier, :en_construction, procedure: procedure_2, user: user, en_construction_at: (conservation_par_defaut - 1.month + 1.day).ago) }
|
||||
let!(:dossier_1) { create(:dossier, :en_construction, procedure: procedure, user: user, en_construction_at: (conservation_par_defaut - 2.weeks + 1.day).ago) }
|
||||
let!(:dossier_2) { create(:dossier, :en_construction, procedure: procedure_2, user: user, en_construction_at: (conservation_par_defaut - 2.weeks + 1.day).ago) }
|
||||
|
||||
let!(:instructeur) { create(:instructeur) }
|
||||
|
||||
|
@ -187,7 +187,7 @@ describe ExpiredDossiersDeletionService do
|
|||
|
||||
context 'when an instructeur is also administrateur' do
|
||||
let!(:administrateur) { procedure.administrateurs.first }
|
||||
let!(:dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: (conservation_par_defaut - 1.month + 1.day).ago) }
|
||||
let!(:dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: (conservation_par_defaut - 2.weeks + 1.day).ago) }
|
||||
|
||||
before do
|
||||
administrateur.instructeur.followed_dossiers << dossier
|
||||
|
@ -290,7 +290,7 @@ describe ExpiredDossiersDeletionService do
|
|||
before { ExpiredDossiersDeletionService.send_termine_expiration_notices }
|
||||
|
||||
context 'when the dossier is not near deletion' do
|
||||
let(:processed_at) { (conservation_par_defaut - 1.month - 1.day).ago }
|
||||
let(:processed_at) { (conservation_par_defaut - 2.weeks - 1.day).ago }
|
||||
|
||||
it { expect(dossier.reload.termine_close_to_expiration_notice_sent_at).to be_nil }
|
||||
it { expect(DossierMailer).not_to have_received(:notify_near_deletion_to_user) }
|
||||
|
@ -298,7 +298,7 @@ describe ExpiredDossiersDeletionService do
|
|||
end
|
||||
|
||||
context 'when the dossier is near deletion' do
|
||||
let(:processed_at) { (conservation_par_defaut - 1.month + 1.day).ago }
|
||||
let(:processed_at) { (conservation_par_defaut - 2.weeks + 1.day).ago }
|
||||
|
||||
it { expect(dossier.reload.termine_close_to_expiration_notice_sent_at).not_to be_nil }
|
||||
|
||||
|
@ -311,8 +311,8 @@ describe ExpiredDossiersDeletionService do
|
|||
end
|
||||
|
||||
context 'with 2 dossiers to notice' do
|
||||
let!(:dossier_1) { create(:dossier, :accepte, procedure: procedure, user: user, processed_at: (conservation_par_defaut - 1.month + 1.day).ago) }
|
||||
let!(:dossier_2) { create(:dossier, :accepte, procedure: procedure_2, user: user, processed_at: (conservation_par_defaut - 1.month + 1.day).ago) }
|
||||
let!(:dossier_1) { create(:dossier, :accepte, procedure: procedure, user: user, processed_at: (conservation_par_defaut - 2.weeks + 1.day).ago) }
|
||||
let!(:dossier_2) { create(:dossier, :accepte, procedure: procedure_2, user: user, processed_at: (conservation_par_defaut - 2.weeks + 1.day).ago) }
|
||||
|
||||
let!(:instructeur) { create(:instructeur) }
|
||||
|
||||
|
@ -331,7 +331,7 @@ describe ExpiredDossiersDeletionService do
|
|||
|
||||
context 'when an instructeur is also administrateur' do
|
||||
let!(:administrateur) { procedure.administrateurs.first }
|
||||
let!(:dossier) { create(:dossier, :accepte, procedure: procedure, processed_at: (conservation_par_defaut - 1.month + 1.day).ago) }
|
||||
let!(:dossier) { create(:dossier, :accepte, procedure: procedure, processed_at: (conservation_par_defaut - 2.weeks + 1.day).ago) }
|
||||
|
||||
before do
|
||||
administrateur.instructeur.followed_dossiers << dossier
|
||||
|
|
Loading…
Reference in a new issue