feat: as gestionnaire, contact gestionnaire of parent groupe
This commit is contained in:
parent
641a33e1e0
commit
fba3cbe331
14 changed files with 183 additions and 32 deletions
|
@ -10,7 +10,11 @@ class GroupeGestionnaire::Card::CommentairesComponent < ApplicationComponent
|
|||
if @administrateur
|
||||
@administrateur.commentaire_groupe_gestionnaires.size
|
||||
else
|
||||
@groupe_gestionnaire.commentaire_groupe_gestionnaires.select(:sender_id, :sender_type).distinct.size
|
||||
commentaires = @groupe_gestionnaire.current_commentaires_groupe_and_children_commentaires_groupe
|
||||
if @groupe_gestionnaire.parent_id && !current_gestionnaire.groupe_gestionnaires.exists?(id: @groupe_gestionnaire.parent_id)
|
||||
commentaires = commentaires.or(CommentaireGroupeGestionnaire.where(groupe_gestionnaire_id: @groupe_gestionnaire.id, sender: current_gestionnaire))
|
||||
end
|
||||
commentaires.select(:sender_id, :sender_type).distinct.size
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
class GroupeGestionnaire::GroupeGestionnaireCommentaires::CommentaireComponent < ApplicationComponent
|
||||
include ApplicationHelper
|
||||
|
||||
def initialize(commentaire:, connected_user:, commentaire_seen_at: nil, is_gestionnaire: true)
|
||||
def initialize(commentaire:, connected_user:, commentaire_seen_at: nil)
|
||||
@commentaire = commentaire
|
||||
@connected_user = connected_user
|
||||
@is_gestionnaire = is_gestionnaire
|
||||
@groupe_gestionnaire = commentaire.groupe_gestionnaire
|
||||
@groupe_gestionnaire = commentaire.sender_type == "Administrateur" ? commentaire.groupe_gestionnaire : commentaire.groupe_gestionnaire.parent
|
||||
@commentaire_seen_at = commentaire_seen_at
|
||||
end
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ class GroupeGestionnaire::GroupeGestionnaireListCommentaires::CommentaireCompone
|
|||
|
||||
def email
|
||||
if @commentaire.sender == current_gestionnaire
|
||||
"#{current_gestionnaire.email} (C’est vous !)"
|
||||
"Messages avec le groupe gestionnaire parent (#{@groupe_gestionnaire.parent.name})"
|
||||
else
|
||||
@commentaire.sender_email
|
||||
end
|
||||
|
@ -20,8 +20,8 @@ class GroupeGestionnaire::GroupeGestionnaireListCommentaires::CommentaireCompone
|
|||
|
||||
def see_button
|
||||
link_to 'Voir',
|
||||
gestionnaire_groupe_gestionnaire_commentaire_path(@groupe_gestionnaire, @commentaire),
|
||||
class: 'button'
|
||||
@commentaire.sender == current_gestionnaire ? parent_groupe_gestionnaire_gestionnaire_groupe_gestionnaire_commentaires_path(@groupe_gestionnaire) : gestionnaire_groupe_gestionnaire_commentaire_path(@groupe_gestionnaire, @commentaire),
|
||||
class: 'fr-btn fr-btn--sm fr-btn--tertiary'
|
||||
end
|
||||
|
||||
def highlight?
|
||||
|
|
|
@ -2,23 +2,24 @@ module Gestionnaires
|
|||
class GroupeGestionnaireCommentairesController < GestionnaireController
|
||||
before_action :retrieve_groupe_gestionnaire
|
||||
before_action :retrieve_last_commentaire, only: [:show, :create, :destroy]
|
||||
before_action :retrieve_last_parent_groupe_gestionnaire_commentaire, only: [:index, :parent_groupe_gestionnaire, :create_parent_groupe_gestionnaire]
|
||||
|
||||
def index
|
||||
end
|
||||
|
||||
def show
|
||||
@commentaire_seen_at = current_gestionnaire.commentaire_seen_at(@groupe_gestionnaire, @last_commentaire.sender_id, @last_commentaire.sender_type)
|
||||
@commentaire_seen_at = current_gestionnaire.commentaire_seen_at(@last_commentaire.groupe_gestionnaire, @last_commentaire.sender_id, @last_commentaire.sender_type)
|
||||
@commentaire = CommentaireGroupeGestionnaire.new
|
||||
current_gestionnaire.mark_commentaire_as_seen(@groupe_gestionnaire, @last_commentaire.sender_id, @last_commentaire.sender_type)
|
||||
current_gestionnaire.mark_commentaire_as_seen(@last_commentaire.groupe_gestionnaire, @last_commentaire.sender_id, @last_commentaire.sender_type)
|
||||
end
|
||||
|
||||
def create
|
||||
@commentaire = @groupe_gestionnaire.commentaire_groupe_gestionnaires.create(commentaire_params.merge(sender_id: @last_commentaire.sender_id, sender_type: @last_commentaire.sender_type, gestionnaire: current_gestionnaire))
|
||||
@commentaire = @last_commentaire.groupe_gestionnaire.commentaire_groupe_gestionnaires.create(commentaire_params.merge(sender_id: @last_commentaire.sender_id, sender_type: @last_commentaire.sender_type, gestionnaire: current_gestionnaire))
|
||||
|
||||
if @commentaire.errors.empty?
|
||||
GroupeGestionnaireMailer.notify_new_commentaire_groupe_gestionnaire(@groupe_gestionnaire, @commentaire, current_gestionnaire.email, @commentaire.sender_email, admin_groupe_gestionnaire_commentaires_path).deliver_later
|
||||
GroupeGestionnaireMailer.notify_new_commentaire_groupe_gestionnaire(@last_commentaire.groupe_gestionnaire, @commentaire, current_gestionnaire.email, @commentaire.sender_email, @commentaire.sender_type == "Administrateur" ? admin_groupe_gestionnaire_commentaires_path : parent_groupe_gestionnaire_gestionnaire_groupe_gestionnaire_commentaires_path(@last_commentaire.groupe_gestionnaire)).deliver_later
|
||||
flash.notice = "Message envoyé"
|
||||
current_gestionnaire.mark_commentaire_as_seen(@groupe_gestionnaire, @commentaire.sender_id, @commentaire.sender_type)
|
||||
current_gestionnaire.mark_commentaire_as_seen(@last_commentaire.groupe_gestionnaire, @commentaire.sender_id, @commentaire.sender_type)
|
||||
redirect_to gestionnaire_groupe_gestionnaire_commentaire_path(@groupe_gestionnaire, @commentaire)
|
||||
else
|
||||
flash.alert = @commentaire.errors.full_messages
|
||||
|
@ -26,11 +27,35 @@ module Gestionnaires
|
|||
end
|
||||
end
|
||||
|
||||
def parent_groupe_gestionnaire
|
||||
if (@last_commentaire)
|
||||
@commentaire_seen_at = current_gestionnaire.commentaire_seen_at(@groupe_gestionnaire, current_gestionnaire.id, "Gestionnaire")
|
||||
current_gestionnaire.mark_commentaire_as_seen(@groupe_gestionnaire, current_gestionnaire.id, "Gestionnaire")
|
||||
end
|
||||
@commentaire = CommentaireGroupeGestionnaire.new
|
||||
end
|
||||
|
||||
def create_parent_groupe_gestionnaire
|
||||
@commentaire = @groupe_gestionnaire.commentaire_groupe_gestionnaires.create(commentaire_params.merge(sender: current_gestionnaire))
|
||||
|
||||
if @commentaire.errors.empty?
|
||||
commentaire_url = gestionnaire_groupe_gestionnaire_commentaire_url(@groupe_gestionnaire.parent, @commentaire)
|
||||
@groupe_gestionnaire.parent.gestionnaires.each do |gestionnaire|
|
||||
GroupeGestionnaireMailer.notify_new_commentaire_groupe_gestionnaire(@groupe_gestionnaire.parent, @commentaire, @commentaire.sender_email, gestionnaire.email, commentaire_url).deliver_later
|
||||
end
|
||||
current_gestionnaire.mark_commentaire_as_seen(@groupe_gestionnaire, @commentaire.sender_id, @commentaire.sender_type)
|
||||
flash.notice = "Message envoyé"
|
||||
redirect_to parent_groupe_gestionnaire_gestionnaire_groupe_gestionnaire_commentaires_path(@groupe_gestionnaire)
|
||||
else
|
||||
flash.alert = @commentaire.errors.full_messages
|
||||
render :parent_groupe_gestionnaire
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
if @last_commentaire.soft_deletable?(current_gestionnaire)
|
||||
@last_commentaire.soft_delete!
|
||||
@commentaire_seen_at = current_gestionnaire.commentaire_seen_at(@groupe_gestionnaire, @last_commentaire.sender_id, @last_commentaire.sender_type)
|
||||
|
||||
@commentaire_seen_at = current_gestionnaire.commentaire_seen_at(@last_commentaire.groupe_gestionnaire, @last_commentaire.sender_id, @last_commentaire.sender_type)
|
||||
flash.notice = t('.notice')
|
||||
else
|
||||
flash.alert = t('.alert_acl')
|
||||
|
@ -42,7 +67,11 @@ module Gestionnaires
|
|||
private
|
||||
|
||||
def retrieve_last_commentaire
|
||||
@last_commentaire = @groupe_gestionnaire.commentaire_groupe_gestionnaires.find(params[:id])
|
||||
@last_commentaire = @groupe_gestionnaire.current_commentaires_groupe_and_children_commentaires_groupe.find(params[:id])
|
||||
end
|
||||
|
||||
def retrieve_last_parent_groupe_gestionnaire_commentaire
|
||||
@last_commentaire = @groupe_gestionnaire.commentaire_groupe_gestionnaires&.where(sender_id: current_gestionnaire.id, sender_type: "Gestionnaire")&.last
|
||||
end
|
||||
|
||||
def commentaire_params
|
||||
|
|
|
@ -147,7 +147,7 @@ class Administrateur < ApplicationRecord
|
|||
end
|
||||
|
||||
def unread_commentaires?
|
||||
commentaire_seen_at.nil? || commentaire_seen_at < commentaire_groupe_gestionnaires.last.created_at
|
||||
commentaire_groupe_gestionnaires.last && (commentaire_seen_at.nil? || commentaire_seen_at < commentaire_groupe_gestionnaires.last.created_at)
|
||||
end
|
||||
|
||||
def mark_commentaire_as_seen
|
||||
|
|
|
@ -36,12 +36,18 @@ class Gestionnaire < ApplicationRecord
|
|||
end
|
||||
|
||||
def unread_commentaires?(groupe_gestionnaire)
|
||||
CommentaireGroupeGestionnaire
|
||||
commentaires = CommentaireGroupeGestionnaire
|
||||
.joins(:groupe_gestionnaire)
|
||||
.joins("LEFT JOIN follow_commentaire_groupe_gestionnaires ON follow_commentaire_groupe_gestionnaires.groupe_gestionnaire_id = commentaire_groupe_gestionnaires.groupe_gestionnaire_id AND follow_commentaire_groupe_gestionnaires.sender_id = commentaire_groupe_gestionnaires.sender_id AND follow_commentaire_groupe_gestionnaires.sender_type = commentaire_groupe_gestionnaires.sender_type AND follow_commentaire_groupe_gestionnaires.gestionnaire_id = #{self.id}")
|
||||
.where(groupe_gestionnaire: groupe_gestionnaire)
|
||||
.where('follow_commentaire_groupe_gestionnaires.commentaire_seen_at IS NULL OR follow_commentaire_groupe_gestionnaires.commentaire_seen_at < commentaire_groupe_gestionnaires.created_at')
|
||||
.exists?
|
||||
.where(groupe_gestionnaire_id: groupe_gestionnaire.id, sender_type: "Administrateur")
|
||||
unless groupe_gestionnaire.child_ids.empty?
|
||||
commentaires = commentaires.or(CommentaireGroupeGestionnaire.where(groupe_gestionnaire_id: groupe_gestionnaire.child_ids, sender_type: "Gestionnaire"))
|
||||
end
|
||||
if groupe_gestionnaire.parent_id && !groupe_gestionnaires.exists?(id: groupe_gestionnaire.parent_id)
|
||||
commentaires = commentaires.or(CommentaireGroupeGestionnaire.where(groupe_gestionnaire_id: groupe_gestionnaire.id, sender: self))
|
||||
end
|
||||
commentaires = commentaires.where('follow_commentaire_groupe_gestionnaires.commentaire_seen_at IS NULL OR follow_commentaire_groupe_gestionnaires.commentaire_seen_at <= commentaire_groupe_gestionnaires.created_at')
|
||||
commentaires.exists?
|
||||
end
|
||||
|
||||
def commentaire_seen_at(groupe_gestionnaire, sender_id, sender_type)
|
||||
|
|
|
@ -27,4 +27,12 @@ class GroupeGestionnaire < ApplicationRecord
|
|||
def parent_name
|
||||
parent&.name
|
||||
end
|
||||
|
||||
def current_commentaires_groupe_and_children_commentaires_groupe
|
||||
commentaires = CommentaireGroupeGestionnaire.where(groupe_gestionnaire_id: id, sender_type: "Administrateur")
|
||||
unless child_ids.empty?
|
||||
commentaires = commentaires.or(CommentaireGroupeGestionnaire.where(groupe_gestionnaire_id: child_ids, sender_type: "Gestionnaire"))
|
||||
end
|
||||
commentaires
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,5 +9,5 @@
|
|||
%ul.messages-list{ data: { controller: 'scroll-to' } }
|
||||
- current_administrateur.commentaire_groupe_gestionnaires.where(groupe_gestionnaire: @groupe_gestionnaire).each do |commentaire|
|
||||
%li.message{ class: commentaire_is_from_me_class(commentaire, current_administrateur), id: dom_id(commentaire) }
|
||||
= render(GroupeGestionnaire::GroupeGestionnaireCommentaires::CommentaireComponent.new(commentaire: commentaire, connected_user: current_administrateur, is_gestionnaire: false, commentaire_seen_at: @commentaire_seen_at))
|
||||
= render(GroupeGestionnaire::GroupeGestionnaireCommentaires::CommentaireComponent.new(commentaire: commentaire, connected_user: current_administrateur, commentaire_seen_at: @commentaire_seen_at))
|
||||
= render partial: "shared/groupe_gestionnaires/commentaires/form", locals: { commentaire: @commentaire, form_url: admin_groupe_gestionnaire_create_commentaire_path }
|
||||
|
|
|
@ -13,4 +13,13 @@
|
|||
%th= 'Dernier message'
|
||||
%th
|
||||
%tbody#commentaires
|
||||
= render(GroupeGestionnaire::GroupeGestionnaireListCommentaires::CommentaireComponent.with_collection(@groupe_gestionnaire.commentaire_groupe_gestionnaires.select("sender_id, sender_type, sender_email, MAX(id) as id, MAX(created_at) as created_at").group(:sender_id, :sender_type, :sender_email).order("MAX(id) DESC"), groupe_gestionnaire: @groupe_gestionnaire))
|
||||
- commentaires = @groupe_gestionnaire.current_commentaires_groupe_and_children_commentaires_groupe
|
||||
- if @groupe_gestionnaire.parent_id && !current_gestionnaire.groupe_gestionnaires.where(id: @groupe_gestionnaire.parent_id).exists?
|
||||
- commentaires = commentaires.or(CommentaireGroupeGestionnaire.where(groupe_gestionnaire_id: @groupe_gestionnaire.id, sender: current_gestionnaire))
|
||||
= render(GroupeGestionnaire::GroupeGestionnaireListCommentaires::CommentaireComponent.with_collection(commentaires.select("sender_id, sender_type, sender_email, MAX(id) as id, MAX(created_at) as created_at").group(:sender_id, :sender_type, :sender_email).order("MAX(id) DESC"), groupe_gestionnaire: @groupe_gestionnaire))
|
||||
- if @groupe_gestionnaire.parent_id && !current_gestionnaire.groupe_gestionnaires.where(id: @groupe_gestionnaire.parent_id).exists? && @last_commentaire.nil?
|
||||
%tr
|
||||
%td= "Messages avec le groupe gestionnaire parent (#{@groupe_gestionnaire.parent.name})"
|
||||
%td
|
||||
%td
|
||||
= link_to 'Voir', parent_groupe_gestionnaire_gestionnaire_groupe_gestionnaire_commentaires_path(@groupe_gestionnaire), class: 'fr-btn fr-btn--sm fr-btn--tertiary'
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
= render partial: 'gestionnaires/breadcrumbs',
|
||||
locals: { steps: [['Groupes gestionnaire', gestionnaire_groupe_gestionnaires_path],
|
||||
["#{@groupe_gestionnaire.name.truncate_words(10)}", gestionnaire_groupe_gestionnaire_path(@groupe_gestionnaire)],
|
||||
["Messagerie", gestionnaire_groupe_gestionnaire_commentaires_path(@groupe_gestionnaire)],
|
||||
["Messages avec le groupe gestionnaire parent (#{@groupe_gestionnaire.parent.name})"]], preview: false }
|
||||
|
||||
.container
|
||||
%h1 Messages avec le groupe gestionnaire parent « #{ "(#{@groupe_gestionnaire.parent.name})" } »
|
||||
.messagerie.container
|
||||
- unless (commentaires = @groupe_gestionnaire.commentaire_groupe_gestionnaires.where(sender_id: current_gestionnaire.id, sender_type: "Gestionnaire")).empty?
|
||||
%ul.messages-list{ data: { controller: 'scroll-to' } }
|
||||
- commentaires.each do |commentaire|
|
||||
%li.message{ class: commentaire_is_from_me_class(commentaire, current_gestionnaire), id: dom_id(commentaire) }
|
||||
= render(GroupeGestionnaire::GroupeGestionnaireCommentaires::CommentaireComponent.new(commentaire: commentaire, connected_user: current_gestionnaire, commentaire_seen_at: @commentaire_seen_at))
|
||||
= render partial: "shared/groupe_gestionnaires/commentaires/form", locals: { commentaire: @commentaire, form_url: create_parent_groupe_gestionnaire_gestionnaire_groupe_gestionnaire_commentaires_path(@groupe_gestionnaire) }
|
|
@ -8,7 +8,7 @@
|
|||
%h1 Messages de « #{ @last_commentaire.sender_email } »
|
||||
.messagerie.container
|
||||
%ul.messages-list{ data: { controller: 'scroll-to' } }
|
||||
- @groupe_gestionnaire.commentaire_groupe_gestionnaires.where(sender_id: @last_commentaire.sender_id, sender_type: @last_commentaire.sender_type).each do |commentaire|
|
||||
- @groupe_gestionnaire.current_commentaires_groupe_and_children_commentaires_groupe.where(sender_id: @last_commentaire.sender_id, sender_type: @last_commentaire.sender_type).each do |commentaire|
|
||||
%li.message{ class: commentaire_is_from_me_class(commentaire, current_gestionnaire), id: dom_id(commentaire) }
|
||||
= render(GroupeGestionnaire::GroupeGestionnaireCommentaires::CommentaireComponent.new(commentaire: commentaire, connected_user: current_gestionnaire, commentaire_seen_at: @commentaire_seen_at))
|
||||
- if @last_commentaire.sender
|
||||
|
|
|
@ -515,7 +515,12 @@ Rails.application.routes.draw do
|
|||
delete :remove, on: :member
|
||||
end
|
||||
resources :children, controller: 'groupe_gestionnaire_children', only: [:index, :create, :destroy]
|
||||
resources :commentaires, controller: 'groupe_gestionnaire_commentaires', only: [:index, :show, :create, :destroy]
|
||||
resources :commentaires, controller: 'groupe_gestionnaire_commentaires', only: [:index, :show, :create, :destroy] do
|
||||
collection do
|
||||
get 'parent_groupe_gestionnaire'
|
||||
post 'create_parent_groupe_gestionnaire'
|
||||
end
|
||||
end
|
||||
member do
|
||||
get :tree_structure, path: 'arborescence'
|
||||
end
|
||||
|
|
|
@ -98,7 +98,6 @@ ActiveRecord::Schema[7.0].define(version: 2024_01_26_071130) do
|
|||
t.datetime "created_at", null: false
|
||||
t.string "encrypted_token", null: false
|
||||
t.date "expiration_notices_sent_at", default: [], array: true
|
||||
t.date "expires_at"
|
||||
t.datetime "last_v1_authenticated_at"
|
||||
t.datetime "last_v2_authenticated_at"
|
||||
t.string "name", null: false
|
||||
|
@ -106,6 +105,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_01_26_071130) do
|
|||
t.datetime "updated_at", null: false
|
||||
t.integer "version", default: 3, null: false
|
||||
t.boolean "write_access", default: true, null: false
|
||||
t.date "expires_at"
|
||||
t.index ["administrateur_id"], name: "index_api_tokens_on_administrateur_id"
|
||||
end
|
||||
|
||||
|
|
|
@ -5,24 +5,44 @@ describe Gestionnaires::GroupeGestionnaireCommentairesController, type: :control
|
|||
let!(:commentaire) { create(:commentaire_groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire, sender: administrateur) }
|
||||
|
||||
describe "#index" do
|
||||
let(:subject_gestionnaire) { gestionnaire }
|
||||
let(:subject_groupe_gestionnaire) { groupe_gestionnaire }
|
||||
render_views
|
||||
subject { get :index, params: { groupe_gestionnaire_id: groupe_gestionnaire.id } }
|
||||
subject { get :index, params: { groupe_gestionnaire_id: subject_groupe_gestionnaire.id } }
|
||||
|
||||
context "when not logged" do
|
||||
before { subject }
|
||||
it { expect(response).to redirect_to(new_user_session_path) }
|
||||
end
|
||||
|
||||
context "when logged in" do
|
||||
describe "when logged in" do
|
||||
before do
|
||||
sign_in(gestionnaire.user)
|
||||
sign_in(subject_gestionnaire.user)
|
||||
subject
|
||||
end
|
||||
|
||||
it do
|
||||
expect(response).to have_http_status(:ok)
|
||||
expect(assigns(:groupe_gestionnaire).commentaire_groupe_gestionnaires.select("sender_id, sender_type, sender_email, MAX(id) as id, MAX(created_at) as created_at").group(:sender_id, :sender_type, :sender_email).order("MAX(id) DESC")).to include(commentaire)
|
||||
expect(response.body).to include(commentaire.sender_email)
|
||||
context "in a root group" do
|
||||
it do
|
||||
expect(response).to have_http_status(:ok)
|
||||
expect(assigns(:groupe_gestionnaire).current_commentaires_groupe_and_children_commentaires_groupe.select("sender_id, sender_type, sender_email, MAX(id) as id, MAX(created_at) as created_at").group(:sender_id, :sender_type, :sender_email).order("MAX(id) DESC")).to include(commentaire)
|
||||
expect(response.body).to include(commentaire.sender_email)
|
||||
expect(response.body).not_to include("Messages avec le groupe gestionnaire parent")
|
||||
end
|
||||
end
|
||||
|
||||
context "in a child group" do
|
||||
let(:child_gestionnaire) { create(:gestionnaire).tap { _1.user.update(last_sign_in_at: Time.zone.now) } }
|
||||
let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, ancestry: "/#{groupe_gestionnaire.id}/", gestionnaires: [child_gestionnaire]) }
|
||||
let(:subject_groupe_gestionnaire) { child_groupe_gestionnaire }
|
||||
let(:subject_gestionnaire) { child_gestionnaire }
|
||||
let!(:commentaire_to_parent_groupe_gestionnaire) { create(:commentaire_groupe_gestionnaire, groupe_gestionnaire: child_groupe_gestionnaire, sender: child_gestionnaire) }
|
||||
|
||||
it do
|
||||
expect(response).to have_http_status(:ok)
|
||||
expect(assigns(:groupe_gestionnaire).current_commentaires_groupe_and_children_commentaires_groupe.or(CommentaireGroupeGestionnaire.where(groupe_gestionnaire_id: child_groupe_gestionnaire.id, sender: child_gestionnaire)).select("sender_id, sender_type, sender_email, MAX(id) as id, MAX(created_at) as created_at").group(:sender_id, :sender_type, :sender_email).order("MAX(id) DESC")).to include(commentaire_to_parent_groupe_gestionnaire)
|
||||
expect(response.body).to include(commentaire_to_parent_groupe_gestionnaire.sender_email)
|
||||
expect(response.body).to include("Messages avec le groupe gestionnaire parent")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -69,6 +89,62 @@ describe Gestionnaires::GroupeGestionnaireCommentairesController, type: :control
|
|||
end
|
||||
end
|
||||
|
||||
describe "#parent_groupe_gestionnaire" do
|
||||
let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, ancestry: "/#{groupe_gestionnaire.id}/", gestionnaires: [gestionnaire]) }
|
||||
render_views
|
||||
subject { get :parent_groupe_gestionnaire, params: { groupe_gestionnaire_id: child_groupe_gestionnaire.id } }
|
||||
|
||||
context "when not logged" do
|
||||
before { subject }
|
||||
it { expect(response).to redirect_to(new_user_session_path) }
|
||||
end
|
||||
|
||||
describe "when logged in" do
|
||||
before do
|
||||
sign_in(gestionnaire.user)
|
||||
subject
|
||||
end
|
||||
|
||||
context "without a commentaire to parent_group_gestionnaire" do
|
||||
it do
|
||||
expect(response).to have_http_status(:ok)
|
||||
expect(assigns(:groupe_gestionnaire).commentaire_groupe_gestionnaires.where(sender: gestionnaire)).not_to include(commentaire)
|
||||
expect(response.body).not_to include(commentaire.body)
|
||||
end
|
||||
end
|
||||
|
||||
context "with a commentaire to parent_group_gestionnaire" do
|
||||
let!(:commentaire) { create(:commentaire_groupe_gestionnaire, groupe_gestionnaire: child_groupe_gestionnaire, sender: gestionnaire) }
|
||||
|
||||
it do
|
||||
expect(response).to have_http_status(:ok)
|
||||
expect(assigns(:groupe_gestionnaire).commentaire_groupe_gestionnaires.where(sender: gestionnaire)).to include(commentaire)
|
||||
expect(response.body).to include(commentaire.body)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#create_parent_groupe_gestionnaire" do
|
||||
let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, ancestry: "/#{groupe_gestionnaire.id}/", gestionnaires: [gestionnaire]) }
|
||||
before do
|
||||
sign_in(gestionnaire.user)
|
||||
post :create_parent_groupe_gestionnaire,
|
||||
params: {
|
||||
id: commentaire.id,
|
||||
groupe_gestionnaire_id: child_groupe_gestionnaire.id,
|
||||
commentaire_groupe_gestionnaire: { body: "avant\napres" }
|
||||
}
|
||||
end
|
||||
|
||||
context 'of a new commentaire' do
|
||||
it do
|
||||
expect(child_groupe_gestionnaire.reload.commentaire_groupe_gestionnaires.map(&:body)).to include("avant\napres")
|
||||
expect(flash.notice).to eq("Message envoyé")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#destroy" do
|
||||
before do
|
||||
sign_in(gestionnaire.user)
|
||||
|
|
Loading…
Reference in a new issue