|
3 | 3 | describe Champs::DossierLinkChamp, type: :model do |
4 | 4 | let(:types_de_champ_public) { [{ type: :dossier_link, mandatory: }] } |
5 | 5 | let(:procedure) { create(:procedure, types_de_champ_public:) } |
6 | | - let(:dossier) { create(:dossier, procedure:) } |
| 6 | + let(:dossier) { create(:dossier, :en_construction, procedure:) } |
7 | 7 | let(:champ) { dossier.champs.first.tap { _1.update(value:) } } |
8 | 8 | let(:value) { nil } |
9 | 9 | let(:mandatory) { false } |
10 | 10 |
|
11 | 11 | describe 'prefilling validations' do |
12 | | - let(:linked_dossier) { create(:dossier) } |
| 12 | + let(:linked_dossier) { create(:dossier, :en_construction) } |
13 | 13 | describe 'value' do |
14 | 14 | subject { champ.valid?(:prefill) } |
15 | 15 |
|
|
57 | 57 | context 'when mandatory' do |
58 | 58 | let(:mandatory) { true } |
59 | 59 | context 'when valid id' do |
60 | | - let(:value) { create(:dossier).id } |
| 60 | + let(:value) { create(:dossier, :en_construction).id } |
61 | 61 | it { is_expected.to be_truthy } |
62 | 62 | end |
63 | 63 |
|
64 | 64 | context 'when invalid id' do |
65 | 65 | let(:value) { 'kthxbye' } |
66 | 66 | it { is_expected.to be_falsey } |
67 | 67 | end |
| 68 | + |
| 69 | + context 'when id of a deleted dossier' do |
| 70 | + let(:value) { create(:deleted_dossier).dossier_id } |
| 71 | + |
| 72 | + it { is_expected.to be_truthy } |
| 73 | + end |
| 74 | + |
| 75 | + context 'when id of a brouillon dossier' do |
| 76 | + let(:value) { create(:dossier).id } |
| 77 | + |
| 78 | + it 'is invalid with brouillon_not_allowed error' do |
| 79 | + is_expected.to be_falsey |
| 80 | + expect(champ.errors.added?(:value, :brouillon_not_allowed)).to be(true) |
| 81 | + end |
| 82 | + end |
68 | 83 | end |
69 | 84 | end |
70 | 85 |
|
|
85 | 100 | end |
86 | 101 |
|
87 | 102 | context 'when dossier belongs to an allowed procedure and to the current user' do |
88 | | - let(:value) { create(:dossier, procedure: allowed_procedure, user:).id } |
| 103 | + let(:value) { create(:dossier, :en_construction, procedure: allowed_procedure, user:).id } |
89 | 104 | it { is_expected.to be_truthy } |
90 | 105 | end |
91 | 106 |
|
92 | 107 | context 'when dossier does not belong to an allowed procedure' do |
93 | | - let(:value) { create(:dossier, procedure: other_procedure, user:).id } |
| 108 | + let(:value) { create(:dossier, :en_construction, procedure: other_procedure, user:).id } |
94 | 109 |
|
95 | 110 | it 'is invalid with correct error message' do |
96 | 111 | is_expected.to be_falsey |
|
99 | 114 | end |
100 | 115 |
|
101 | 116 | context 'when dossier belongs to another user' do |
102 | | - let(:value) { create(:dossier, procedure: allowed_procedure).id } |
| 117 | + let(:value) { create(:dossier, :en_construction, procedure: allowed_procedure).id } |
| 118 | + |
| 119 | + it 'is invalid' do |
| 120 | + is_expected.to be_falsey |
| 121 | + end |
| 122 | + end |
| 123 | + |
| 124 | + context 'when deleted dossier belongs to an allowed procedure and to the current user' do |
| 125 | + let(:value) { create(:deleted_dossier, procedure: allowed_procedure, user_id: user.id).dossier_id } |
| 126 | + it { is_expected.to be_truthy } |
| 127 | + end |
| 128 | + |
| 129 | + context 'when deleted dossier does not belong to an allowed procedure' do |
| 130 | + let(:value) { create(:deleted_dossier, procedure: other_procedure, user_id: user.id).dossier_id } |
| 131 | + |
| 132 | + it 'is invalid with correct error message' do |
| 133 | + is_expected.to be_falsey |
| 134 | + expect(champ.errors.full_messages).to include("Ce dossier n’est pas dans une démarche autorisée") |
| 135 | + end |
| 136 | + end |
| 137 | + |
| 138 | + context 'when deleted dossier belongs to another user' do |
| 139 | + let(:value) { create(:deleted_dossier, procedure: allowed_procedure).dossier_id } |
103 | 140 |
|
104 | 141 | it 'is invalid' do |
105 | 142 | is_expected.to be_falsey |
|
111 | 148 | type_de_champ.update!(options: type_de_champ.options.merge('procedures_limit' => nil)) |
112 | 149 | end |
113 | 150 |
|
114 | | - let(:value) { create(:dossier, procedure: other_procedure, user:).id } |
| 151 | + let(:value) { create(:dossier, :en_construction, procedure: other_procedure, user:).id } |
115 | 152 | it { is_expected.to be_truthy } |
116 | 153 | end |
117 | 154 |
|
|
120 | 157 | type_de_champ.update!(options: type_de_champ.options.merge('dossier_link_procedure_ids' => [])) |
121 | 158 | end |
122 | 159 |
|
123 | | - let(:value) { create(:dossier, procedure: other_procedure, user:).id } |
| 160 | + let(:value) { create(:dossier, :en_construction, procedure: other_procedure, user:).id } |
124 | 161 | it { is_expected.to be_truthy } |
125 | 162 | end |
126 | 163 | end |
|
0 commit comments