commit
66878e427e
11 changed files with 153 additions and 87 deletions
2
Gemfile
2
Gemfile
|
@ -5,7 +5,7 @@ gem 'actiontext', git: 'https://github.com/kobaltz/actiontext.git', branch: 'arc
|
||||||
gem 'active_link_to' # Automatically set a class on active links
|
gem 'active_link_to' # Automatically set a class on active links
|
||||||
gem 'active_model_serializers'
|
gem 'active_model_serializers'
|
||||||
gem 'active_storage_validations'
|
gem 'active_storage_validations'
|
||||||
gem 'activestorage-openstack'
|
gem 'activestorage-openstack', git: 'https://github.com/tchak/activestorage-openstack.git', branch: 'fix-activestorage-filename-wrap'
|
||||||
gem 'administrate'
|
gem 'administrate'
|
||||||
gem 'after_party'
|
gem 'after_party'
|
||||||
gem 'anchored'
|
gem 'anchored'
|
||||||
|
|
139
Gemfile.lock
139
Gemfile.lock
|
@ -15,30 +15,41 @@ GIT
|
||||||
open4 (~> 1.3.4)
|
open4 (~> 1.3.4)
|
||||||
rake
|
rake
|
||||||
|
|
||||||
|
GIT
|
||||||
|
remote: https://github.com/tchak/activestorage-openstack.git
|
||||||
|
revision: 907582f14d785fb965baebe9524c0162b1bd57c9
|
||||||
|
branch: fix-activestorage-filename-wrap
|
||||||
|
specs:
|
||||||
|
activestorage-openstack (1.3.0)
|
||||||
|
fog-openstack (~> 1.0)
|
||||||
|
marcel
|
||||||
|
mime-types
|
||||||
|
rails (>= 5.2.2)
|
||||||
|
|
||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
aasm (5.0.1)
|
aasm (5.0.1)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
actioncable (5.2.3)
|
actioncable (5.2.4.1)
|
||||||
actionpack (= 5.2.3)
|
actionpack (= 5.2.4.1)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
websocket-driver (>= 0.6.1)
|
websocket-driver (>= 0.6.1)
|
||||||
actionmailer (5.2.3)
|
actionmailer (5.2.4.1)
|
||||||
actionpack (= 5.2.3)
|
actionpack (= 5.2.4.1)
|
||||||
actionview (= 5.2.3)
|
actionview (= 5.2.4.1)
|
||||||
activejob (= 5.2.3)
|
activejob (= 5.2.4.1)
|
||||||
mail (~> 2.5, >= 2.5.4)
|
mail (~> 2.5, >= 2.5.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
actionpack (5.2.3)
|
actionpack (5.2.4.1)
|
||||||
actionview (= 5.2.3)
|
actionview (= 5.2.4.1)
|
||||||
activesupport (= 5.2.3)
|
activesupport (= 5.2.4.1)
|
||||||
rack (~> 2.0)
|
rack (~> 2.0, >= 2.0.8)
|
||||||
rack-test (>= 0.6.3)
|
rack-test (>= 0.6.3)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||||
actionview (5.2.3)
|
actionview (5.2.4.1)
|
||||||
activesupport (= 5.2.3)
|
activesupport (= 5.2.4.1)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
erubi (~> 1.4)
|
erubi (~> 1.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
|
@ -46,32 +57,27 @@ GEM
|
||||||
active_link_to (1.0.5)
|
active_link_to (1.0.5)
|
||||||
actionpack
|
actionpack
|
||||||
addressable
|
addressable
|
||||||
active_model_serializers (0.10.8)
|
active_model_serializers (0.10.10)
|
||||||
actionpack (>= 4.1, < 6)
|
actionpack (>= 4.1, < 6.1)
|
||||||
activemodel (>= 4.1, < 6)
|
activemodel (>= 4.1, < 6.1)
|
||||||
case_transform (>= 0.2)
|
case_transform (>= 0.2)
|
||||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||||
active_storage_validations (0.8.7)
|
active_storage_validations (0.8.7)
|
||||||
rails (>= 5.2.0)
|
rails (>= 5.2.0)
|
||||||
activejob (5.2.3)
|
activejob (5.2.4.1)
|
||||||
activesupport (= 5.2.3)
|
activesupport (= 5.2.4.1)
|
||||||
globalid (>= 0.3.6)
|
globalid (>= 0.3.6)
|
||||||
activemodel (5.2.3)
|
activemodel (5.2.4.1)
|
||||||
activesupport (= 5.2.3)
|
activesupport (= 5.2.4.1)
|
||||||
activerecord (5.2.3)
|
activerecord (5.2.4.1)
|
||||||
activemodel (= 5.2.3)
|
activemodel (= 5.2.4.1)
|
||||||
activesupport (= 5.2.3)
|
activesupport (= 5.2.4.1)
|
||||||
arel (>= 9.0)
|
arel (>= 9.0)
|
||||||
activestorage (5.2.3)
|
activestorage (5.2.4.1)
|
||||||
actionpack (= 5.2.3)
|
actionpack (= 5.2.4.1)
|
||||||
activerecord (= 5.2.3)
|
activerecord (= 5.2.4.1)
|
||||||
marcel (~> 0.3.1)
|
marcel (~> 0.3.1)
|
||||||
activestorage-openstack (1.2.0)
|
activesupport (5.2.4.1)
|
||||||
fog-openstack (~> 1.0)
|
|
||||||
marcel
|
|
||||||
mime-types
|
|
||||||
rails (>= 5.2.2)
|
|
||||||
activesupport (5.2.3)
|
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
i18n (>= 0.7, < 2)
|
i18n (>= 0.7, < 2)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
|
@ -205,7 +211,7 @@ GEM
|
||||||
ethon (0.11.0)
|
ethon (0.11.0)
|
||||||
ffi (>= 1.3.0)
|
ffi (>= 1.3.0)
|
||||||
eventmachine (1.2.7)
|
eventmachine (1.2.7)
|
||||||
excon (0.71.0)
|
excon (0.72.0)
|
||||||
execjs (2.7.0)
|
execjs (2.7.0)
|
||||||
factory_bot (4.11.1)
|
factory_bot (4.11.1)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
|
@ -221,9 +227,9 @@ GEM
|
||||||
flipper (~> 0.17.2)
|
flipper (~> 0.17.2)
|
||||||
rack (>= 1.4, < 3)
|
rack (>= 1.4, < 3)
|
||||||
rack-protection (>= 1.5.3, < 2.1.0)
|
rack-protection (>= 1.5.3, < 2.1.0)
|
||||||
fog-core (2.1.2)
|
fog-core (2.2.0)
|
||||||
builder
|
builder
|
||||||
excon (~> 0.58)
|
excon (~> 0.71)
|
||||||
formatador (~> 0.2)
|
formatador (~> 0.2)
|
||||||
mime-types
|
mime-types
|
||||||
fog-json (1.2.0)
|
fog-json (1.2.0)
|
||||||
|
@ -239,8 +245,9 @@ GEM
|
||||||
geocoder (1.6.0)
|
geocoder (1.6.0)
|
||||||
globalid (0.4.2)
|
globalid (0.4.2)
|
||||||
activesupport (>= 4.2.0)
|
activesupport (>= 4.2.0)
|
||||||
gon (6.2.1)
|
gon (6.3.2)
|
||||||
actionpack (>= 3.0)
|
actionpack (>= 3.0.20)
|
||||||
|
i18n (>= 0.7)
|
||||||
multi_json
|
multi_json
|
||||||
request_store (>= 1.0)
|
request_store (>= 1.0)
|
||||||
graphiql-rails (1.7.0)
|
graphiql-rails (1.7.0)
|
||||||
|
@ -322,25 +329,25 @@ GEM
|
||||||
activesupport (>= 4.2)
|
activesupport (>= 4.2)
|
||||||
aes_key_wrap
|
aes_key_wrap
|
||||||
bindata
|
bindata
|
||||||
jsonapi-renderer (0.2.0)
|
jsonapi-renderer (0.2.2)
|
||||||
jwt (2.1.0)
|
jwt (2.1.0)
|
||||||
kaminari (1.1.1)
|
kaminari (1.2.0)
|
||||||
activesupport (>= 4.1.0)
|
activesupport (>= 4.1.0)
|
||||||
kaminari-actionview (= 1.1.1)
|
kaminari-actionview (= 1.2.0)
|
||||||
kaminari-activerecord (= 1.1.1)
|
kaminari-activerecord (= 1.2.0)
|
||||||
kaminari-core (= 1.1.1)
|
kaminari-core (= 1.2.0)
|
||||||
kaminari-actionview (1.1.1)
|
kaminari-actionview (1.2.0)
|
||||||
actionview
|
actionview
|
||||||
kaminari-core (= 1.1.1)
|
kaminari-core (= 1.2.0)
|
||||||
kaminari-activerecord (1.1.1)
|
kaminari-activerecord (1.2.0)
|
||||||
activerecord
|
activerecord
|
||||||
kaminari-core (= 1.1.1)
|
kaminari-core (= 1.2.0)
|
||||||
kaminari-core (1.1.1)
|
kaminari-core (1.2.0)
|
||||||
launchy (2.4.3)
|
launchy (2.4.3)
|
||||||
addressable (~> 2.3)
|
addressable (~> 2.3)
|
||||||
letter_opener (1.7.0)
|
letter_opener (1.7.0)
|
||||||
launchy (~> 2.2)
|
launchy (~> 2.2)
|
||||||
letter_opener_web (1.3.4)
|
letter_opener_web (1.4.0)
|
||||||
actionmailer (>= 3.2)
|
actionmailer (>= 3.2)
|
||||||
letter_opener (~> 1.0)
|
letter_opener (~> 1.0)
|
||||||
railties (>= 3.2)
|
railties (>= 3.2)
|
||||||
|
@ -367,10 +374,10 @@ GEM
|
||||||
marcel (0.3.3)
|
marcel (0.3.3)
|
||||||
mimemagic (~> 0.3.2)
|
mimemagic (~> 0.3.2)
|
||||||
method_source (0.9.2)
|
method_source (0.9.2)
|
||||||
mime-types (3.3)
|
mime-types (3.3.1)
|
||||||
mime-types-data (~> 3.2015)
|
mime-types-data (~> 3.2015)
|
||||||
mime-types-data (3.2019.1009)
|
mime-types-data (3.2019.1009)
|
||||||
mimemagic (0.3.3)
|
mimemagic (0.3.4)
|
||||||
mini_mime (1.0.2)
|
mini_mime (1.0.2)
|
||||||
mini_portile2 (2.4.0)
|
mini_portile2 (2.4.0)
|
||||||
minitest (5.14.0)
|
minitest (5.14.0)
|
||||||
|
@ -450,7 +457,7 @@ GEM
|
||||||
pry-byebug (3.6.0)
|
pry-byebug (3.6.0)
|
||||||
byebug (~> 10.0)
|
byebug (~> 10.0)
|
||||||
pry (~> 0.10)
|
pry (~> 0.10)
|
||||||
public_suffix (4.0.1)
|
public_suffix (4.0.3)
|
||||||
puma (3.12.2)
|
puma (3.12.2)
|
||||||
pundit (2.0.1)
|
pundit (2.0.1)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
|
@ -471,18 +478,18 @@ GEM
|
||||||
rack
|
rack
|
||||||
rack-test (1.1.0)
|
rack-test (1.1.0)
|
||||||
rack (>= 1.0, < 3)
|
rack (>= 1.0, < 3)
|
||||||
rails (5.2.3)
|
rails (5.2.4.1)
|
||||||
actioncable (= 5.2.3)
|
actioncable (= 5.2.4.1)
|
||||||
actionmailer (= 5.2.3)
|
actionmailer (= 5.2.4.1)
|
||||||
actionpack (= 5.2.3)
|
actionpack (= 5.2.4.1)
|
||||||
actionview (= 5.2.3)
|
actionview (= 5.2.4.1)
|
||||||
activejob (= 5.2.3)
|
activejob (= 5.2.4.1)
|
||||||
activemodel (= 5.2.3)
|
activemodel (= 5.2.4.1)
|
||||||
activerecord (= 5.2.3)
|
activerecord (= 5.2.4.1)
|
||||||
activestorage (= 5.2.3)
|
activestorage (= 5.2.4.1)
|
||||||
activesupport (= 5.2.3)
|
activesupport (= 5.2.4.1)
|
||||||
bundler (>= 1.3.0)
|
bundler (>= 1.3.0)
|
||||||
railties (= 5.2.3)
|
railties (= 5.2.4.1)
|
||||||
sprockets-rails (>= 2.0.0)
|
sprockets-rails (>= 2.0.0)
|
||||||
rails-controller-testing (1.0.4)
|
rails-controller-testing (1.0.4)
|
||||||
actionpack (>= 5.0.1.x)
|
actionpack (>= 5.0.1.x)
|
||||||
|
@ -496,9 +503,9 @@ GEM
|
||||||
rails-i18n (5.1.2)
|
rails-i18n (5.1.2)
|
||||||
i18n (>= 0.7, < 2)
|
i18n (>= 0.7, < 2)
|
||||||
railties (>= 5.0, < 6)
|
railties (>= 5.0, < 6)
|
||||||
railties (5.2.3)
|
railties (5.2.4.1)
|
||||||
actionpack (= 5.2.3)
|
actionpack (= 5.2.4.1)
|
||||||
activesupport (= 5.2.3)
|
activesupport (= 5.2.4.1)
|
||||||
method_source
|
method_source
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
thor (>= 0.19.0, < 2.0)
|
thor (>= 0.19.0, < 2.0)
|
||||||
|
@ -515,7 +522,7 @@ GEM
|
||||||
railties (>= 3.2)
|
railties (>= 3.2)
|
||||||
tilt
|
tilt
|
||||||
regexp_parser (1.6.0)
|
regexp_parser (1.6.0)
|
||||||
request_store (1.4.1)
|
request_store (1.5.0)
|
||||||
rack (>= 1.4)
|
rack (>= 1.4)
|
||||||
responders (3.0.0)
|
responders (3.0.0)
|
||||||
actionpack (>= 5.0)
|
actionpack (>= 5.0)
|
||||||
|
@ -716,7 +723,7 @@ DEPENDENCIES
|
||||||
active_link_to
|
active_link_to
|
||||||
active_model_serializers
|
active_model_serializers
|
||||||
active_storage_validations
|
active_storage_validations
|
||||||
activestorage-openstack
|
activestorage-openstack!
|
||||||
administrate
|
administrate
|
||||||
after_party
|
after_party
|
||||||
anchored
|
anchored
|
||||||
|
|
|
@ -48,7 +48,7 @@ class Admin::AttestationTemplatesController < AdminController
|
||||||
|
|
||||||
render 'admin/attestation_templates/show', formats: [:pdf]
|
render 'admin/attestation_templates/show', formats: [:pdf]
|
||||||
else
|
else
|
||||||
flash.alert = attestation_template.errors.full_messages.join('<br>')
|
flash.alert = attestation.errors.full_messages.join('<br>')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,11 @@ module NewAdministrateur
|
||||||
|
|
||||||
def reaffecter
|
def reaffecter
|
||||||
target_group = procedure.groupe_instructeurs.find(params[:target_group])
|
target_group = procedure.groupe_instructeurs.find(params[:target_group])
|
||||||
groupe_instructeur.dossiers.update_all(groupe_instructeur_id: target_group.id)
|
|
||||||
|
groupe_instructeur.dossiers.find_each do |dossier|
|
||||||
|
dossier.assign_to_groupe_instructeur(target_group, current_administrateur)
|
||||||
|
end
|
||||||
|
|
||||||
flash[:notice] = "Les dossiers du groupe « #{groupe_instructeur.label} » ont été réaffectés au groupe « #{target_group.label} »."
|
flash[:notice] = "Les dossiers du groupe « #{groupe_instructeur.label} » ont été réaffectés au groupe « #{target_group.label} »."
|
||||||
redirect_to procedure_groupe_instructeurs_path(procedure)
|
redirect_to procedure_groupe_instructeurs_path(procedure)
|
||||||
end
|
end
|
||||||
|
|
|
@ -297,14 +297,13 @@ module Users
|
||||||
end
|
end
|
||||||
|
|
||||||
# FIXME: require(:dossier) when all the champs are united
|
# FIXME: require(:dossier) when all the champs are united
|
||||||
def champs_and_groupe_instructeurs_params
|
def champs_params
|
||||||
params.permit(dossier: [
|
params.permit(dossier: {
|
||||||
:groupe_instructeur_id,
|
|
||||||
champs_attributes: [
|
champs_attributes: [
|
||||||
:id, :value, :primary_value, :secondary_value, :piece_justificative_file, value: [],
|
:id, :value, :primary_value, :secondary_value, :piece_justificative_file, value: [],
|
||||||
champs_attributes: [:id, :_destroy, :value, :primary_value, :secondary_value, :piece_justificative_file, value: []]
|
champs_attributes: [:id, :_destroy, :value, :primary_value, :secondary_value, :piece_justificative_file, value: []]
|
||||||
]
|
]
|
||||||
])
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
def dossier
|
def dossier
|
||||||
|
@ -315,11 +314,20 @@ module Users
|
||||||
Dossier.with_champs.find(params[:id])
|
Dossier.with_champs.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def change_groupe_instructeur?
|
||||||
|
params[:dossier][:groupe_instructeur_id].present? && @dossier.groupe_instructeur_id != params[:dossier][:groupe_instructeur_id].to_i
|
||||||
|
end
|
||||||
|
|
||||||
def update_dossier_and_compute_errors
|
def update_dossier_and_compute_errors
|
||||||
errors = []
|
errors = []
|
||||||
|
|
||||||
if champs_and_groupe_instructeurs_params[:dossier] && !@dossier.update(champs_and_groupe_instructeurs_params[:dossier])
|
if champs_params[:dossier]
|
||||||
errors += @dossier.errors.full_messages
|
if !@dossier.update(champs_params[:dossier])
|
||||||
|
errors += @dossier.errors.full_messages
|
||||||
|
elsif change_groupe_instructeur?
|
||||||
|
groupe_instructeur = @dossier.procedure.groupe_instructeurs.find(params[:dossier][:groupe_instructeur_id])
|
||||||
|
@dossier.assign_to_groupe_instructeur(groupe_instructeur)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if !save_draft?
|
if !save_draft?
|
||||||
|
|
|
@ -385,6 +385,7 @@ type Dossier {
|
||||||
"""
|
"""
|
||||||
dateTraitement: ISO8601DateTime
|
dateTraitement: ISO8601DateTime
|
||||||
demandeur: Demandeur!
|
demandeur: Demandeur!
|
||||||
|
groupeInstructeur: GroupeInstructeur!
|
||||||
id: ID!
|
id: ID!
|
||||||
instructeurs: [Profile!]!
|
instructeurs: [Profile!]!
|
||||||
messages: [Message!]!
|
messages: [Message!]!
|
||||||
|
|
|
@ -35,6 +35,8 @@ module Types
|
||||||
field :messages, [Types::MessageType], null: false
|
field :messages, [Types::MessageType], null: false
|
||||||
field :avis, [Types::AvisType], null: false
|
field :avis, [Types::AvisType], null: false
|
||||||
|
|
||||||
|
field :groupe_instructeur, Types::GroupeInstructeurType, null: false
|
||||||
|
|
||||||
def state
|
def state
|
||||||
object.state
|
object.state
|
||||||
end
|
end
|
||||||
|
@ -47,6 +49,10 @@ module Types
|
||||||
Loaders::Association.for(object.class, :followers_instructeurs).load(object)
|
Loaders::Association.for(object.class, :followers_instructeurs).load(object)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def groupe_instructeur
|
||||||
|
Loaders::Record.for(GroupeInstructeur).load(object.groupe_instructeur_id)
|
||||||
|
end
|
||||||
|
|
||||||
def messages
|
def messages
|
||||||
Loaders::Association.for(object.class, commentaires: [:instructeur, :user]).load(object)
|
Loaders::Association.for(object.class, commentaires: [:instructeur, :user]).load(object)
|
||||||
end
|
end
|
||||||
|
|
|
@ -213,7 +213,6 @@ class Dossier < ApplicationRecord
|
||||||
before_save :build_default_champs, if: Proc.new { groupe_instructeur_id_was.nil? }
|
before_save :build_default_champs, if: Proc.new { groupe_instructeur_id_was.nil? }
|
||||||
before_save :update_search_terms
|
before_save :update_search_terms
|
||||||
|
|
||||||
after_save :unfollow_stale_instructeurs
|
|
||||||
after_save :send_dossier_received
|
after_save :send_dossier_received
|
||||||
after_save :send_web_hook
|
after_save :send_web_hook
|
||||||
after_create :send_draft_notification_email
|
after_create :send_draft_notification_email
|
||||||
|
@ -300,6 +299,22 @@ class Dossier < ApplicationRecord
|
||||||
instruction_commencee? && retention_end_date <= Time.zone.now
|
instruction_commencee? && retention_end_date <= Time.zone.now
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def assign_to_groupe_instructeur(groupe_instructeur, author = nil)
|
||||||
|
if groupe_instructeur.procedure == procedure && groupe_instructeur != self.groupe_instructeur
|
||||||
|
if update(groupe_instructeur: groupe_instructeur)
|
||||||
|
unfollow_stale_instructeurs
|
||||||
|
|
||||||
|
if author.present?
|
||||||
|
log_dossier_operation(author, :changer_groupe_instructeur, self)
|
||||||
|
end
|
||||||
|
|
||||||
|
true
|
||||||
|
end
|
||||||
|
else
|
||||||
|
false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def text_summary
|
def text_summary
|
||||||
if brouillon?
|
if brouillon?
|
||||||
parts = [
|
parts = [
|
||||||
|
@ -647,14 +662,11 @@ class Dossier < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def unfollow_stale_instructeurs
|
def unfollow_stale_instructeurs
|
||||||
if saved_change_to_groupe_instructeur_id? && saved_change_to_groupe_instructeur_id[0].present?
|
followers_instructeurs.each do |instructeur|
|
||||||
followers_instructeurs.each do |instructeur|
|
if instructeur.groupe_instructeurs.exclude?(groupe_instructeur)
|
||||||
if instructeur.groupe_instructeurs.exclude?(groupe_instructeur)
|
instructeur.unfollow(self)
|
||||||
instructeur.unfollow(self)
|
DossierMailer.notify_groupe_instructeur_changed(instructeur, self).deliver_later
|
||||||
DossierMailer.notify_groupe_instructeur_changed(instructeur, self).deliver_later
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
log_dossier_operation(user, :changer_groupe_instructeur, self)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -201,6 +201,10 @@ describe API::V2::GraphqlController do
|
||||||
id
|
id
|
||||||
email
|
email
|
||||||
}
|
}
|
||||||
|
groupeInstructeur {
|
||||||
|
id
|
||||||
|
label
|
||||||
|
}
|
||||||
messages {
|
messages {
|
||||||
email
|
email
|
||||||
body
|
body
|
||||||
|
@ -255,6 +259,10 @@ describe API::V2::GraphqlController do
|
||||||
email: instructeur.email
|
email: instructeur.email
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
groupeInstructeur: {
|
||||||
|
id: dossier.groupe_instructeur.to_typed_id,
|
||||||
|
label: dossier.groupe_instructeur.label
|
||||||
|
},
|
||||||
demandeur: {
|
demandeur: {
|
||||||
id: dossier.individual.to_typed_id,
|
id: dossier.individual.to_typed_id,
|
||||||
nom: dossier.individual.nom,
|
nom: dossier.individual.nom,
|
||||||
|
|
|
@ -398,12 +398,29 @@ describe Dossier do
|
||||||
it { is_expected.to match([dossier3, dossier4, dossier2]) }
|
it { is_expected.to match([dossier3, dossier4, dossier2]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#assign_to_groupe_instructeur" do
|
||||||
|
let(:procedure) { create(:procedure) }
|
||||||
|
let(:new_groupe_instructeur_new_procedure) { create(:groupe_instructeur) }
|
||||||
|
let(:new_groupe_instructeur) { create(:groupe_instructeur, procedure: procedure) }
|
||||||
|
let(:dossier) { create(:dossier, :en_construction, procedure: procedure) }
|
||||||
|
|
||||||
|
it "can change groupe instructeur" do
|
||||||
|
expect(dossier.assign_to_groupe_instructeur(new_groupe_instructeur_new_procedure)).to be_falsey
|
||||||
|
expect(dossier.groupe_instructeur).not_to eq(new_groupe_instructeur_new_procedure)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "can not change groupe instructeur if new groupe is from another procedure" do
|
||||||
|
expect(dossier.assign_to_groupe_instructeur(new_groupe_instructeur)).to be_truthy
|
||||||
|
expect(dossier.groupe_instructeur).to eq(new_groupe_instructeur)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "#unfollow_stale_instructeurs" do
|
describe "#unfollow_stale_instructeurs" do
|
||||||
let(:procedure) { create(:procedure) }
|
let(:procedure) { create(:procedure) }
|
||||||
let(:instructeur) { create(:instructeur) }
|
let(:instructeur) { create(:instructeur) }
|
||||||
let(:new_groupe_instructeur) { create(:groupe_instructeur) }
|
let(:new_groupe_instructeur) { create(:groupe_instructeur, procedure: procedure) }
|
||||||
let(:instructeur2) { create(:instructeur, groupe_instructeurs: [procedure.defaut_groupe_instructeur, new_groupe_instructeur]) }
|
let(:instructeur2) { create(:instructeur, groupe_instructeurs: [procedure.defaut_groupe_instructeur, new_groupe_instructeur]) }
|
||||||
let(:dossier) { create(:dossier, procedure: procedure, state: Dossier.states.fetch(:en_construction)) }
|
let(:dossier) { create(:dossier, :en_construction, procedure: procedure) }
|
||||||
let(:last_operation) { DossierOperationLog.last }
|
let(:last_operation) { DossierOperationLog.last }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
@ -413,7 +430,7 @@ describe Dossier do
|
||||||
it "unfollows stale instructeurs when groupe instructeur change" do
|
it "unfollows stale instructeurs when groupe instructeur change" do
|
||||||
instructeur.follow(dossier)
|
instructeur.follow(dossier)
|
||||||
instructeur2.follow(dossier)
|
instructeur2.follow(dossier)
|
||||||
dossier.reload.update(groupe_instructeur: new_groupe_instructeur)
|
dossier.reload.assign_to_groupe_instructeur(new_groupe_instructeur, procedure.administrateurs.first)
|
||||||
|
|
||||||
expect(dossier.reload.followers_instructeurs).not_to include(instructeur)
|
expect(dossier.reload.followers_instructeurs).not_to include(instructeur)
|
||||||
expect(dossier.reload.followers_instructeurs).to include(instructeur2)
|
expect(dossier.reload.followers_instructeurs).to include(instructeur2)
|
||||||
|
|
|
@ -215,7 +215,10 @@ describe ProcedurePresentation do
|
||||||
let!(:follow1) { create(:follow, dossier: dossier, instructeur: create(:instructeur, email: 'user1@host')) }
|
let!(:follow1) { create(:follow, dossier: dossier, instructeur: create(:instructeur, email: 'user1@host')) }
|
||||||
let!(:follow2) { create(:follow, dossier: dossier, instructeur: create(:instructeur, email: 'user2@host')) }
|
let!(:follow2) { create(:follow, dossier: dossier, instructeur: create(:instructeur, email: 'user2@host')) }
|
||||||
|
|
||||||
it { is_expected.to eq('user1@host, user2@host') }
|
it "return emails of followers instructeurs" do
|
||||||
|
emails_to_display = procedure_presentation.displayed_field_values(dossier).first.split(', ').sort
|
||||||
|
expect(emails_to_display).to eq ["user1@host", "user2@host"]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'for type_de_champ table' do
|
context 'for type_de_champ table' do
|
||||||
|
|
Loading…
Reference in a new issue