feat: US5.1 US5.2 administrateur in admin
This commit is contained in:
parent
91602ee1c1
commit
c253e7dd65
24 changed files with 218 additions and 42 deletions
|
@ -1,5 +1,6 @@
|
||||||
class GroupeGestionnaire::Card::AdministrateursComponent < ApplicationComponent
|
class GroupeGestionnaire::Card::AdministrateursComponent < ApplicationComponent
|
||||||
def initialize(groupe_gestionnaire:)
|
def initialize(groupe_gestionnaire:, path:)
|
||||||
@groupe_gestionnaire = groupe_gestionnaire
|
@groupe_gestionnaire = groupe_gestionnaire
|
||||||
|
@path = path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
.fr-col-6.fr-col-md-4.fr-col-lg-3
|
.fr-col-6.fr-col-md-4.fr-col-lg-3
|
||||||
= link_to gestionnaire_groupe_gestionnaire_administrateurs_path(@groupe_gestionnaire), id: 'administrateurs', class: 'fr-tile fr-enlarge-link' do
|
= link_to @path, id: 'administrateurs', class: 'fr-tile fr-enlarge-link' do
|
||||||
.fr-tile__body.flex.column.align-center.justify-between
|
.fr-tile__body.flex.column.align-center.justify-between
|
||||||
%p.fr-badge.fr-badge--success Validé
|
%p.fr-badge.fr-badge--success Validé
|
||||||
%div
|
%div
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
class GroupeGestionnaire::Card::ChildrenComponent < ApplicationComponent
|
class GroupeGestionnaire::Card::ChildrenComponent < ApplicationComponent
|
||||||
def initialize(groupe_gestionnaire:)
|
def initialize(groupe_gestionnaire:, path:)
|
||||||
@groupe_gestionnaire = groupe_gestionnaire
|
@groupe_gestionnaire = groupe_gestionnaire
|
||||||
|
@path = path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
.fr-col-6.fr-col-md-4.fr-col-lg-3
|
.fr-col-6.fr-col-md-4.fr-col-lg-3
|
||||||
= link_to gestionnaire_groupe_gestionnaire_children_path(@groupe_gestionnaire), id: 'gestionnaires', class: 'fr-tile fr-enlarge-link' do
|
= link_to @path, id: 'gestionnaires', class: 'fr-tile fr-enlarge-link' do
|
||||||
.fr-tile__body.flex.column.align-center.justify-between
|
.fr-tile__body.flex.column.align-center.justify-between
|
||||||
%p.fr-badge.fr-badge--success Validé
|
%p.fr-badge.fr-badge--success Validé
|
||||||
%div
|
%div
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
class GroupeGestionnaire::Card::GestionnairesComponent < ApplicationComponent
|
class GroupeGestionnaire::Card::GestionnairesComponent < ApplicationComponent
|
||||||
def initialize(groupe_gestionnaire:)
|
def initialize(groupe_gestionnaire:, path:)
|
||||||
@groupe_gestionnaire = groupe_gestionnaire
|
@groupe_gestionnaire = groupe_gestionnaire
|
||||||
|
@path = path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
.fr-col-6.fr-col-md-4.fr-col-lg-3
|
.fr-col-6.fr-col-md-4.fr-col-lg-3
|
||||||
= link_to gestionnaire_groupe_gestionnaire_gestionnaires_path(@groupe_gestionnaire), id: 'gestionnaires', class: 'fr-tile fr-enlarge-link' do
|
= link_to @path, id: 'gestionnaires', class: 'fr-tile fr-enlarge-link' do
|
||||||
.fr-tile__body.flex.column.align-center.justify-between
|
.fr-tile__body.flex.column.align-center.justify-between
|
||||||
%p.fr-badge.fr-badge--success Validé
|
%p.fr-badge.fr-badge--success Validé
|
||||||
%div
|
%div
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
class GroupeGestionnaire::GroupeGestionnaireAdministrateurs::AdministrateurComponent < ApplicationComponent
|
class GroupeGestionnaire::GroupeGestionnaireAdministrateurs::AdministrateurComponent < ApplicationComponent
|
||||||
include ApplicationHelper
|
include ApplicationHelper
|
||||||
|
|
||||||
def initialize(groupe_gestionnaire:, administrateur:)
|
def initialize(groupe_gestionnaire:, administrateur:, is_gestionnaire: true)
|
||||||
@groupe_gestionnaire = groupe_gestionnaire
|
@groupe_gestionnaire = groupe_gestionnaire
|
||||||
@administrateur = administrateur
|
@administrateur = administrateur
|
||||||
|
@is_gestionnaire = is_gestionnaire
|
||||||
end
|
end
|
||||||
|
|
||||||
def email
|
def email
|
||||||
|
@ -23,7 +24,7 @@ class GroupeGestionnaire::GroupeGestionnaireAdministrateurs::AdministrateurCompo
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_button
|
def remove_button
|
||||||
if is_there_at_least_another_active_admin?
|
if is_there_at_least_another_active_admin? && @is_gestionnaire
|
||||||
button_to 'Retirer',
|
button_to 'Retirer',
|
||||||
remove_gestionnaire_groupe_gestionnaire_administrateur_path(@groupe_gestionnaire, @administrateur),
|
remove_gestionnaire_groupe_gestionnaire_administrateur_path(@groupe_gestionnaire, @administrateur),
|
||||||
method: :delete,
|
method: :delete,
|
||||||
|
|
|
@ -2,5 +2,6 @@
|
||||||
%td= email
|
%td= email
|
||||||
%td= created_at
|
%td= created_at
|
||||||
%td= registration_state
|
%td= registration_state
|
||||||
%td= remove_button
|
- if @is_gestionnaire
|
||||||
%td= destroy_button
|
%td= remove_button
|
||||||
|
%td= destroy_button
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
class GroupeGestionnaire::GroupeGestionnaireGestionnaires::GestionnaireComponent < ApplicationComponent
|
class GroupeGestionnaire::GroupeGestionnaireGestionnaires::GestionnaireComponent < ApplicationComponent
|
||||||
include ApplicationHelper
|
include ApplicationHelper
|
||||||
|
|
||||||
def initialize(groupe_gestionnaire:, gestionnaire:)
|
def initialize(groupe_gestionnaire:, gestionnaire:, is_gestionnaire: true)
|
||||||
@groupe_gestionnaire = groupe_gestionnaire
|
@groupe_gestionnaire = groupe_gestionnaire
|
||||||
@gestionnaire = gestionnaire
|
@gestionnaire = gestionnaire
|
||||||
|
@is_gestionnaire = is_gestionnaire
|
||||||
end
|
end
|
||||||
|
|
||||||
def email
|
def email
|
||||||
|
@ -23,7 +24,7 @@ class GroupeGestionnaire::GroupeGestionnaireGestionnaires::GestionnaireComponent
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_button
|
def remove_button
|
||||||
if is_there_at_least_another_active_admin?
|
if is_there_at_least_another_active_admin? && @is_gestionnaire
|
||||||
button_to 'Retirer',
|
button_to 'Retirer',
|
||||||
gestionnaire_groupe_gestionnaire_gestionnaire_path(@groupe_gestionnaire, @gestionnaire),
|
gestionnaire_groupe_gestionnaire_gestionnaire_path(@groupe_gestionnaire, @gestionnaire),
|
||||||
method: :delete,
|
method: :delete,
|
||||||
|
|
|
@ -2,4 +2,5 @@
|
||||||
%td= email
|
%td= email
|
||||||
%td= created_at
|
%td= created_at
|
||||||
%td= registration_state
|
%td= registration_state
|
||||||
%td= remove_button
|
- if @is_gestionnaire
|
||||||
|
%td= remove_button
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
module Administrateurs
|
||||||
|
class GroupeGestionnaireController < AdministrateurController
|
||||||
|
before_action :retrieve_groupe_gestionnaire, only: [:show, :administrateurs, :gestionnaires]
|
||||||
|
|
||||||
|
def show
|
||||||
|
end
|
||||||
|
|
||||||
|
def administrateurs
|
||||||
|
end
|
||||||
|
|
||||||
|
def gestionnaires
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def retrieve_groupe_gestionnaire
|
||||||
|
id = current_administrateur.groupe_gestionnaire_id
|
||||||
|
@groupe_gestionnaire = GroupeGestionnaire.find(id)
|
||||||
|
|
||||||
|
Sentry.configure_scope do |scope|
|
||||||
|
scope.set_tags(groupe_gestionnaire: @groupe_gestionnaire.id)
|
||||||
|
end
|
||||||
|
rescue ActiveRecord::RecordNotFound
|
||||||
|
flash.alert = 'Groupe inexistant'
|
||||||
|
redirect_to admin_procedures_path, status: 404
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -13,7 +13,8 @@ class GroupeGestionnaireDashboard < Administrate::BaseDashboard
|
||||||
created_at: Field::DateTime,
|
created_at: Field::DateTime,
|
||||||
updated_at: Field::DateTime,
|
updated_at: Field::DateTime,
|
||||||
gestionnaires: Field::HasMany,
|
gestionnaires: Field::HasMany,
|
||||||
administrateurs: Field::HasMany
|
administrateurs: Field::HasMany,
|
||||||
|
parent_name: Field::String
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
# COLLECTION_ATTRIBUTES
|
# COLLECTION_ATTRIBUTES
|
||||||
|
@ -26,7 +27,8 @@ class GroupeGestionnaireDashboard < Administrate::BaseDashboard
|
||||||
:created_at,
|
:created_at,
|
||||||
:name,
|
:name,
|
||||||
:gestionnaires,
|
:gestionnaires,
|
||||||
:administrateurs
|
:administrateurs,
|
||||||
|
:parent_name
|
||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
# SHOW_PAGE_ATTRIBUTES
|
# SHOW_PAGE_ATTRIBUTES
|
||||||
|
@ -35,7 +37,8 @@ class GroupeGestionnaireDashboard < Administrate::BaseDashboard
|
||||||
:gestionnaires,
|
:gestionnaires,
|
||||||
:administrateurs,
|
:administrateurs,
|
||||||
:id,
|
:id,
|
||||||
:created_at
|
:created_at,
|
||||||
|
:parent_name
|
||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
# FORM_ATTRIBUTES
|
# FORM_ATTRIBUTES
|
||||||
|
|
|
@ -21,4 +21,8 @@ class GroupeGestionnaire < ApplicationRecord
|
||||||
def can_be_deleted?(current_user)
|
def can_be_deleted?(current_user)
|
||||||
(gestionnaires.empty? || (gestionnaires == [current_user])) && administrateurs.empty? && children.empty?
|
(gestionnaires.empty? || (gestionnaires == [current_user])) && administrateurs.empty? && children.empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def parent_name
|
||||||
|
parent&.name
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
= render partial: 'gestionnaires/breadcrumbs',
|
||||||
|
locals: { steps: [['Mon groupe gestionnaire', admin_groupe_gestionnaire_path],
|
||||||
|
['Administrateurs']], preview: false }
|
||||||
|
|
||||||
|
.container
|
||||||
|
%h1 Administrateurs de « #{@groupe_gestionnaire.name} »
|
||||||
|
|
||||||
|
%table.table
|
||||||
|
%thead
|
||||||
|
%tr
|
||||||
|
%th= 'Adresse email'
|
||||||
|
%th= 'Enregistré le'
|
||||||
|
%th= 'État'
|
||||||
|
%tbody#administrateurs
|
||||||
|
= render(GroupeGestionnaire::GroupeGestionnaireAdministrateurs::AdministrateurComponent.with_collection(@groupe_gestionnaire.administrateurs.order('users.email'), groupe_gestionnaire: @groupe_gestionnaire, is_gestionnaire: false))
|
|
@ -0,0 +1,18 @@
|
||||||
|
= render partial: 'gestionnaires/breadcrumbs',
|
||||||
|
locals: { steps: [['Mon groupe gestionnaire', admin_groupe_gestionnaire_path],
|
||||||
|
['Gestionnaires']], preview: false }
|
||||||
|
|
||||||
|
.container
|
||||||
|
%h1 Gestionnaires de « #{@groupe_gestionnaire.name} »
|
||||||
|
|
||||||
|
%table.table
|
||||||
|
%thead
|
||||||
|
%tr
|
||||||
|
%th= 'Adresse email'
|
||||||
|
%th= 'Enregistré le'
|
||||||
|
%th= 'État'
|
||||||
|
%tbody#gestionnaires
|
||||||
|
= render(GroupeGestionnaire::GroupeGestionnaireGestionnaires::GestionnaireComponent.with_collection(@groupe_gestionnaire.gestionnaires.order('users.email'), groupe_gestionnaire: @groupe_gestionnaire, is_gestionnaire: false))
|
||||||
|
|
||||||
|
.fr-mt-4w
|
||||||
|
= #render 'add_admin_form', groupe_gestionnaire: @groupe_gestionnaire
|
|
@ -0,0 +1,9 @@
|
||||||
|
= render partial: 'gestionnaires/breadcrumbs',
|
||||||
|
locals: { steps: [["Mon groupe gestionnaire"]],
|
||||||
|
metadatas: true }
|
||||||
|
|
||||||
|
.fr-container
|
||||||
|
%h2= "Gestion du groupe gestionnaire № #{@groupe_gestionnaire.id}"
|
||||||
|
.fr-grid-row.fr-grid-row--gutters.fr-mb-5w
|
||||||
|
= render GroupeGestionnaire::Card::GestionnairesComponent.new(groupe_gestionnaire: @groupe_gestionnaire, path: admin_groupe_gestionnaire_gestionnaires_path)
|
||||||
|
= render GroupeGestionnaire::Card::AdministrateursComponent.new(groupe_gestionnaire: @groupe_gestionnaire, path: admin_groupe_gestionnaire_administrateurs_path)
|
|
@ -0,0 +1,8 @@
|
||||||
|
.fr-container
|
||||||
|
%nav#header-navigation.fr-nav{ role: 'navigation', 'aria-label': 'Menu principal administrateur' }
|
||||||
|
%ul.fr-nav__list
|
||||||
|
%li.fr-nav__item= link_to 'Mes démarches', admin_procedures_path, class:'fr-nav__link', 'aria-current': current_page?(controller: 'procedures', action: :index) ? 'true' : nil
|
||||||
|
- if Rails.application.config.ds_zonage_enabled
|
||||||
|
%li.fr-nav__item= link_to 'Toutes les démarches', all_admin_procedures_path(zone_ids: current_administrateur.zones), class:'fr-nav__link', 'aria-current': current_page?(all_admin_procedures_path) ? 'page' : nil
|
||||||
|
- if current_administrateur.groupe_gestionnaire_id
|
||||||
|
%li.fr-nav__item= link_to 'Mon groupe gestionnaire', admin_groupe_gestionnaire_path, class:'fr-nav__link', 'aria-current': current_page?(admin_groupe_gestionnaire_path) ? 'page' : nil
|
|
@ -19,6 +19,6 @@
|
||||||
groupe parent :
|
groupe parent :
|
||||||
%a{ href: gestionnaire_groupe_gestionnaire_path(@groupe_gestionnaire.groupe_gestionnaire) }= @groupe_gestionnaire.groupe_gestionnaire.name
|
%a{ href: gestionnaire_groupe_gestionnaire_path(@groupe_gestionnaire.groupe_gestionnaire) }= @groupe_gestionnaire.groupe_gestionnaire.name
|
||||||
.fr-grid-row.fr-grid-row--gutters.fr-mb-5w
|
.fr-grid-row.fr-grid-row--gutters.fr-mb-5w
|
||||||
= render GroupeGestionnaire::Card::GestionnairesComponent.new(groupe_gestionnaire: @groupe_gestionnaire)
|
= render GroupeGestionnaire::Card::GestionnairesComponent.new(groupe_gestionnaire: @groupe_gestionnaire, path: gestionnaire_groupe_gestionnaire_gestionnaires_path(@groupe_gestionnaire))
|
||||||
= render GroupeGestionnaire::Card::AdministrateursComponent.new(groupe_gestionnaire: @groupe_gestionnaire)
|
= render GroupeGestionnaire::Card::AdministrateursComponent.new(groupe_gestionnaire: @groupe_gestionnaire, path: gestionnaire_groupe_gestionnaire_administrateurs_path(@groupe_gestionnaire))
|
||||||
= render GroupeGestionnaire::Card::ChildrenComponent.new(groupe_gestionnaire: @groupe_gestionnaire)
|
= render GroupeGestionnaire::Card::ChildrenComponent.new(groupe_gestionnaire: @groupe_gestionnaire, path: gestionnaire_groupe_gestionnaire_children_path(@groupe_gestionnaire))
|
||||||
|
|
|
@ -650,6 +650,10 @@ Rails.application.routes.draw do
|
||||||
resource :sva_svr, only: [:show, :edit, :update], controller: 'sva_svr'
|
resource :sva_svr, only: [:show, :edit, :update], controller: 'sva_svr'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get 'mon-groupe' => 'groupe_gestionnaire#show', as: :groupe_gestionnaire
|
||||||
|
get 'mon-groupe/administrateurs' => 'groupe_gestionnaire#administrateurs', as: :groupe_gestionnaire_administrateurs
|
||||||
|
get 'mon-groupe/gestionnaires' => 'groupe_gestionnaire#gestionnaires', as: :groupe_gestionnaire_gestionnaires
|
||||||
|
|
||||||
resources :services, except: [:show] do
|
resources :services, except: [:show] do
|
||||||
collection do
|
collection do
|
||||||
patch 'add_to_procedure'
|
patch 'add_to_procedure'
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
describe Administrateurs::GroupeGestionnaireController, type: :controller do
|
||||||
|
let(:admin) { create(:administrateur) }
|
||||||
|
|
||||||
|
describe "#show" do
|
||||||
|
subject { get :show }
|
||||||
|
|
||||||
|
context "when not logged" do
|
||||||
|
before { subject }
|
||||||
|
it { expect(response).to redirect_to(new_user_session_path) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when logged in" do
|
||||||
|
let(:gestionnaire) { create(:gestionnaire) }
|
||||||
|
let!(:groupe_gestionnaire) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire], administrateurs: [admin]) }
|
||||||
|
before do
|
||||||
|
sign_in(admin.user)
|
||||||
|
subject
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(response).to have_http_status(:ok) }
|
||||||
|
it { expect(assigns(:groupe_gestionnaire)).to eq(groupe_gestionnaire) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#gestionnaires" do
|
||||||
|
subject { get :gestionnaires }
|
||||||
|
let(:gestionnaire) { create(:gestionnaire) }
|
||||||
|
let!(:groupe_gestionnaire) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire], administrateurs: [admin]) }
|
||||||
|
|
||||||
|
context "when not logged" do
|
||||||
|
before { subject }
|
||||||
|
it { expect(response).to redirect_to(new_user_session_path) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when logged in" do
|
||||||
|
before do
|
||||||
|
sign_in(admin.user)
|
||||||
|
subject
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(response).to have_http_status(:ok) }
|
||||||
|
it { expect(assigns(:groupe_gestionnaire)).to eq(groupe_gestionnaire) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#administrateurs" do
|
||||||
|
subject { get :administrateurs }
|
||||||
|
let(:gestionnaire) { create(:gestionnaire) }
|
||||||
|
let!(:groupe_gestionnaire) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire], administrateurs: [admin]) }
|
||||||
|
|
||||||
|
context "when not logged" do
|
||||||
|
before { subject }
|
||||||
|
it { expect(response).to redirect_to(new_user_session_path) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when logged in" do
|
||||||
|
before do
|
||||||
|
sign_in(admin.user)
|
||||||
|
subject
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(response).to have_http_status(:ok) }
|
||||||
|
it { expect(assigns(:groupe_gestionnaire)).to eq(groupe_gestionnaire) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -18,9 +18,11 @@ describe Gestionnaires::GroupeGestionnaireChildrenController, type: :controller
|
||||||
subject
|
subject
|
||||||
end
|
end
|
||||||
|
|
||||||
it { expect(response).to have_http_status(:ok) }
|
it do
|
||||||
it { expect(assigns(:groupe_gestionnaire).children).to include(child_groupe_gestionnaire) }
|
expect(response).to have_http_status(:ok)
|
||||||
it { expect(response.body).to include(child_groupe_gestionnaire.name) }
|
expect(assigns(:groupe_gestionnaire).children).to include(child_groupe_gestionnaire)
|
||||||
|
expect(response.body).to include(child_groupe_gestionnaire.name)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -42,9 +42,11 @@ describe Gestionnaires::GroupeGestionnaireGestionnairesController, type: :contro
|
||||||
context 'when there are many gestionnaires' do
|
context 'when there are many gestionnaires' do
|
||||||
before { remove_gestionnaire(new_gestionnaire) }
|
before { remove_gestionnaire(new_gestionnaire) }
|
||||||
|
|
||||||
it { expect(groupe_gestionnaire.gestionnaires).to include(gestionnaire) }
|
it do
|
||||||
it { expect(groupe_gestionnaire.reload.gestionnaires.count).to eq(1) }
|
expect(groupe_gestionnaire.gestionnaires).to include(gestionnaire)
|
||||||
it { expect(flash.notice).to eq("Le gestionnaire « #{new_gestionnaire.email} » a été retiré du groupe gestionnaire.") }
|
expect(groupe_gestionnaire.reload.gestionnaires.count).to eq(1)
|
||||||
|
expect(flash.notice).to eq("Le gestionnaire « #{new_gestionnaire.email} » a été retiré du groupe gestionnaire.")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when there is only one gestionnaire' do
|
context 'when there is only one gestionnaire' do
|
||||||
|
@ -53,9 +55,11 @@ describe Gestionnaires::GroupeGestionnaireGestionnairesController, type: :contro
|
||||||
remove_gestionnaire(gestionnaire)
|
remove_gestionnaire(gestionnaire)
|
||||||
end
|
end
|
||||||
|
|
||||||
it { expect(groupe_gestionnaire.gestionnaires).to include(gestionnaire) }
|
it do
|
||||||
it { expect(groupe_gestionnaire.gestionnaires.count).to eq(1) }
|
expect(groupe_gestionnaire.gestionnaires).to include(gestionnaire)
|
||||||
it { expect(flash.alert).to eq('Suppression impossible : il doit y avoir au moins un gestionnaire dans le groupe racine') }
|
expect(groupe_gestionnaire.gestionnaires.count).to eq(1)
|
||||||
|
expect(flash.alert).to eq('Suppression impossible : il doit y avoir au moins un gestionnaire dans le groupe racine')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,10 +18,12 @@ describe Gestionnaires::GroupeGestionnairesController, type: :controller do
|
||||||
subject
|
subject
|
||||||
end
|
end
|
||||||
|
|
||||||
it { expect(response).to have_http_status(:ok) }
|
it do
|
||||||
it { expect(assigns(:groupe_gestionnaires)).to include(groupe_gestionnaire) }
|
expect(response).to have_http_status(:ok)
|
||||||
it { expect(assigns(:groupe_gestionnaires)).to include(other_groupe_gestionnaire) }
|
expect(assigns(:groupe_gestionnaires)).to include(groupe_gestionnaire)
|
||||||
it { expect(assigns(:groupe_gestionnaires)).not_to include(not_my_groupe_gestionnaire) }
|
expect(assigns(:groupe_gestionnaires)).to include(other_groupe_gestionnaire)
|
||||||
|
expect(assigns(:groupe_gestionnaires)).not_to include(not_my_groupe_gestionnaire)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -37,9 +37,11 @@ describe Manager::GroupeGestionnairesController, type: :controller do
|
||||||
context 'of a new gestionnaire' do
|
context 'of a new gestionnaire' do
|
||||||
let(:new_gestionnaire_email) { 'new_gestionnaire@mail.com' }
|
let(:new_gestionnaire_email) { 'new_gestionnaire@mail.com' }
|
||||||
|
|
||||||
it { expect(groupe_gestionnaire.gestionnaires.map(&:email)).to include(new_gestionnaire_email) }
|
it do
|
||||||
it { expect(flash.notice).to be_present }
|
expect(groupe_gestionnaire.gestionnaires.map(&:email)).to include(new_gestionnaire_email)
|
||||||
it { expect(response).to redirect_to(manager_groupe_gestionnaire_path(groupe_gestionnaire)) }
|
expect(flash.notice).to be_present
|
||||||
|
expect(response).to redirect_to(manager_groupe_gestionnaire_path(groupe_gestionnaire))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -62,9 +64,11 @@ describe Manager::GroupeGestionnairesController, type: :controller do
|
||||||
context 'when there are many gestionnaires' do
|
context 'when there are many gestionnaires' do
|
||||||
before { remove_gestionnaire(new_gestionnaire) }
|
before { remove_gestionnaire(new_gestionnaire) }
|
||||||
|
|
||||||
it { expect(groupe_gestionnaire.gestionnaires).to include(gestionnaire) }
|
it do
|
||||||
it { expect(groupe_gestionnaire.reload.gestionnaires.count).to eq(1) }
|
expect(groupe_gestionnaire.gestionnaires).to include(gestionnaire)
|
||||||
it { expect(response).to redirect_to(manager_groupe_gestionnaire_path(groupe_gestionnaire)) }
|
expect(groupe_gestionnaire.reload.gestionnaires.count).to eq(1)
|
||||||
|
expect(response).to redirect_to(manager_groupe_gestionnaire_path(groupe_gestionnaire))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when there is only one gestionnaire' do
|
context 'when there is only one gestionnaire' do
|
||||||
|
@ -73,10 +77,12 @@ describe Manager::GroupeGestionnairesController, type: :controller do
|
||||||
remove_gestionnaire(gestionnaire)
|
remove_gestionnaire(gestionnaire)
|
||||||
end
|
end
|
||||||
|
|
||||||
it { expect(groupe_gestionnaire.gestionnaires).to include(gestionnaire) }
|
it do
|
||||||
it { expect(groupe_gestionnaire.gestionnaires.count).to eq(1) }
|
expect(groupe_gestionnaire.gestionnaires).to include(gestionnaire)
|
||||||
it { expect(flash.alert).to eq('Suppression impossible : il doit y avoir au moins un gestionnaire dans le groupe racine') }
|
expect(groupe_gestionnaire.gestionnaires.count).to eq(1)
|
||||||
it { expect(response).to redirect_to(manager_groupe_gestionnaire_path(groupe_gestionnaire)) }
|
expect(flash.alert).to eq('Suppression impossible : il doit y avoir au moins un gestionnaire dans le groupe racine')
|
||||||
|
expect(response).to redirect_to(manager_groupe_gestionnaire_path(groupe_gestionnaire))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue