feat: US4.3 update and delete groupe gestionnaire
This commit is contained in:
parent
043ffef79a
commit
96dd6bec52
2 changed files with 88 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue