feat: US4.3 update and delete groupe gestionnaire

This commit is contained in:
seb-by-ouidou 2023-09-30 10:45:54 +00:00 committed by seb-by-ouidou
parent 043ffef79a
commit 96dd6bec52
2 changed files with 88 additions and 0 deletions

View file

@ -26,4 +26,8 @@ class GroupeGestionnaire < ApplicationRecord
def parent_name
parent&.name
end
def can_be_deleted?(current_user)
(gestionnaires.empty? || (gestionnaires == [current_user]))&& administrateurs.empty? && children.empty?
end
end

View file

@ -110,4 +110,88 @@ describe Gestionnaires::GroupeGestionnairesController, type: :controller do
it { expect(response).to redirect_to(gestionnaire_groupe_gestionnaires_path) }
end
end
describe "#show" do
subject { get :show, params: { id: child_groupe_gestionnaire.id } }
let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) }
let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire_root, gestionnaires: [gestionnaire]) }
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(gestionnaire.user)
subject
end
it { expect(response).to have_http_status(:ok) }
it { expect(assigns(:groupe_gestionnaire)).to eq(child_groupe_gestionnaire) }
end
end
describe "#edit" do
subject { get :edit, params: { id: child_groupe_gestionnaire.id } }
let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) }
let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire_root, gestionnaires: [gestionnaire]) }
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(gestionnaire.user)
subject
end
it { expect(response).to have_http_status(:ok) }
it { expect(assigns(:groupe_gestionnaire)).to eq(child_groupe_gestionnaire) }
end
end
describe "#update" do
subject { post :update, params: { id: child_groupe_gestionnaire.id, groupe_gestionnaire: { name: 'new child name' } } }
let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) }
let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire_root, gestionnaires: [gestionnaire]) }
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(gestionnaire.user)
subject
end
it { expect(child_groupe_gestionnaire.reload.name).to eq('new child name') }
it { expect(response).to redirect_to(gestionnaire_groupe_gestionnaire_path(child_groupe_gestionnaire)) }
end
end
describe "#destroy" do
subject { post :destroy, params: { id: child_groupe_gestionnaire.id } }
let!(:groupe_gestionnaire_root) { create(:groupe_gestionnaire, gestionnaires: [gestionnaire]) }
let!(:child_groupe_gestionnaire) { create(:groupe_gestionnaire, groupe_gestionnaire: groupe_gestionnaire_root, gestionnaires: [gestionnaire]) }
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(gestionnaire.user)
subject
end
it { expect(GroupeGestionnaire.all.count).to eq(1) }
it { expect(response).to redirect_to(gestionnaire_groupe_gestionnaires_path) }
end
end
end