expert can only revoke avis claimed by him/her
This commit is contained in:
parent
3ea34834a7
commit
52e8f32e19
5 changed files with 66 additions and 11 deletions
|
@ -132,25 +132,72 @@ RSpec.describe Avis, type: :model do
|
|||
end
|
||||
end
|
||||
|
||||
describe ".revoke!" do
|
||||
describe ".revoke_by!" do
|
||||
let(:claimant) { create(:instructeur) }
|
||||
|
||||
context "when no answer" do
|
||||
let(:avis) { create(:avis) }
|
||||
let(:avis) { create(:avis, claimant: claimant) }
|
||||
|
||||
it "supprime l'avis" do
|
||||
avis.revoke!
|
||||
avis.revoke_by!(claimant)
|
||||
expect(avis).to be_destroyed
|
||||
expect(Avis.count).to eq 0
|
||||
end
|
||||
end
|
||||
|
||||
context "with answer" do
|
||||
let(:avis) { create(:avis, :with_answer) }
|
||||
let(:avis) { create(:avis, :with_answer, claimant: claimant) }
|
||||
|
||||
it "revoque l'avis" do
|
||||
avis.revoke!
|
||||
avis.revoke_by!(claimant)
|
||||
expect(avis).not_to be_destroyed
|
||||
expect(avis).to be_revoked
|
||||
end
|
||||
end
|
||||
|
||||
context "by an instructeur who can't revoke" do
|
||||
let(:avis) { create(:avis, :with_answer, claimant: claimant) }
|
||||
let(:expert) { create(:instructeur) }
|
||||
|
||||
it "doesn't revoke avis and returns false" do
|
||||
result = avis.revoke_by!(expert)
|
||||
expect(result).to be_falsey
|
||||
expect(avis).not_to be_destroyed
|
||||
expect(avis).not_to be_revoked
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "revokable_by?" do
|
||||
let(:instructeur) { create(:instructeur) }
|
||||
let(:instructeurs) { [instructeur] }
|
||||
let(:procedure) { create(:procedure, :published, instructeurs: instructeurs) }
|
||||
let(:dossier) { create(:dossier, :en_instruction, procedure: procedure) }
|
||||
let(:claimant_expert) { create(:instructeur) }
|
||||
let(:expert) { create(:instructeur) }
|
||||
let(:another_expert) { create(:instructeur) }
|
||||
|
||||
context "when avis claimed by an expert" do
|
||||
let(:avis) { create(:avis, dossier: dossier, claimant: claimant_expert, instructeur: expert) }
|
||||
let(:another_avis) { create(:avis, dossier: dossier, claimant: instructeur, instructeur: another_expert) }
|
||||
it "is revokable by this expert or any instructeurs of the dossier" do
|
||||
expect(avis.revokable_by?(claimant_expert)).to be_truthy
|
||||
expect(avis.revokable_by?(another_expert)).to be_falsy
|
||||
expect(avis.revokable_by?(instructeur)).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
context "when avis claimed by an instructeur" do
|
||||
let(:avis) { create(:avis, dossier: dossier, claimant: instructeur, instructeur: expert) }
|
||||
let(:another_avis) { create(:avis, dossier: dossier, claimant: expert, instructeur: another_expert) }
|
||||
let(:another_instructeur) { create(:instructeur) }
|
||||
let(:instructeurs) { [instructeur, another_instructeur] }
|
||||
|
||||
it "is revokable by any instructeur of the dossier, not by an expert" do
|
||||
expect(avis.revokable_by?(instructeur)).to be_truthy
|
||||
expect(avis.revokable_by?(another_expert)).to be_falsy
|
||||
expect(avis.revokable_by?(another_instructeur)).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue