|
103 | 103 | travel_to(5.months.ago) do |
104 | 104 | create(:dossier, |
105 | 105 | state: :brouillon, |
| 106 | + procedure: procedures.demo, |
106 | 107 | brouillon_close_to_expiration_notice_sent_at: 1.day.ago) |
107 | 108 | end |
108 | 109 | end |
109 | 110 |
|
110 | 111 | let!(:dossier_brouillon_not_expired) do |
111 | 112 | travel_to(1.month.ago) do |
112 | 113 | create(:dossier, |
113 | | - state: :brouillon) |
| 114 | + state: :brouillon, |
| 115 | + procedure: procedures.demo) |
114 | 116 | end |
115 | 117 | end |
116 | 118 |
|
117 | 119 | let!(:dossier_brouillon_expired_but_noticed_recently) do |
118 | 120 | travel_to(5.months.ago) do |
119 | 121 | create(:dossier, |
120 | 122 | state: :brouillon, |
| 123 | + procedure: procedures.demo, |
121 | 124 | brouillon_close_to_expiration_notice_sent_at: (4.months + 20.days).from_now) |
122 | 125 | end |
123 | 126 | end |
124 | 127 |
|
125 | 128 | let!(:dossier_brouillon_expired_but_not_noticed_yet) do |
126 | 129 | travel_to(5.months.ago) do |
127 | 130 | create(:dossier, |
128 | | - state: :brouillon) |
| 131 | + state: :brouillon, |
| 132 | + procedure: procedures.demo) |
129 | 133 | end |
130 | 134 | end |
131 | 135 |
|
132 | 136 | let!(:dossier_instruction_expired) do |
133 | 137 | travel_to(5.months.ago) do |
134 | 138 | create(:dossier, |
135 | 139 | state: :en_instruction, |
| 140 | + procedure: procedures.demo, |
136 | 141 | brouillon_close_to_expiration_notice_sent_at: 1.day.ago) |
137 | 142 | end |
138 | 143 | end |
|
141 | 146 | travel_to(5.months.ago) do |
142 | 147 | create(:dossier, |
143 | 148 | state: :brouillon, |
| 149 | + procedure: procedures.demo, |
144 | 150 | brouillon_close_to_expiration_notice_sent_at: 1.day.ago, |
145 | 151 | hidden_by_user_at: Time.zone.now) |
146 | 152 | end |
|
159 | 165 | end |
160 | 166 |
|
161 | 167 | describe '.brouillon_expired_without_notice' do |
162 | | - let(:published_procedure) { create(:procedure, :published) } |
163 | | - let(:closed_procedure) { create(:procedure, :closed) } |
164 | | - let(:draft_procedure) { create(:procedure, :draft) } |
| 168 | + let(:published_procedure) { procedures.demo } |
| 169 | + let_it_be(:closed_procedure) { create(:procedure, :closed) } |
| 170 | + let_it_be(:draft_procedure) { create(:procedure, :draft) } |
165 | 171 |
|
166 | 172 | # targets: expired + structurally never notified |
167 | 173 | let!(:expired_on_closed) { create(:dossier, procedure: closed_procedure).tap { |d| d.update_column(:expired_at, 1.day.ago) } } |
|
402 | 408 | end |
403 | 409 |
|
404 | 410 | context 'when the dossier belongs to a procedure for individuals' do |
405 | | - let(:procedure) { create(:procedure, for_individual: true) } |
| 411 | + let(:procedure) { procedures.demo } |
406 | 412 |
|
407 | 413 | it 'creates a default individual' do |
408 | 414 | subject |
|
435 | 441 | end |
436 | 442 |
|
437 | 443 | context 'when the dossier belongs to a procedure for moral personas' do |
438 | | - let(:procedure) { create(:procedure, for_individual: false) } |
| 444 | + let(:procedure) { procedures.entreprise } |
439 | 445 |
|
440 | 446 | it 'doesn’t create a individual' do |
441 | 447 | subject |
|
445 | 451 | end |
446 | 452 |
|
447 | 453 | describe '#prefill_champs_from_france_connect' do |
448 | | - let(:procedure) { create(:procedure, :for_individual, types_de_champ_public: [{ type: :date }]) } |
| 454 | + let_it_be(:procedure) { create(:procedure, :for_individual, types_de_champ_public: [{ type: :date }]) } |
449 | 455 | let(:user) { create(:user, france_connect_informations: [build(:france_connect_information)]) } |
450 | 456 | let(:dossier) { create(:dossier, procedure:, user:) } |
451 | 457 | let(:tdc) { procedure.active_revision.types_de_champ_public.first } |
|
515 | 521 | end |
516 | 522 |
|
517 | 523 | describe '#update_for_tiers' do |
518 | | - let(:procedure) { create(:procedure, :for_individual) } |
519 | 524 | let(:individual) { build(:individual, nom: 'Dupont', prenom: 'Jean', gender: Individual::GENDER_MALE, birthdate: Date.new(1980, 1, 1)) } |
520 | | - let(:dossier) { create(:dossier, procedure:, user:, individual:) } |
| 525 | + let(:dossier) { create(:dossier, procedure: procedures.demo, user:, individual:) } |
521 | 526 |
|
522 | 527 | context 'when user is connected via FranceConnect with one identity' do |
523 | 528 | let(:user) { create(:user, france_connect_informations: [build(:france_connect_information)]) } |
|
888 | 893 | end |
889 | 894 |
|
890 | 895 | describe '.with_unread_messages_for_user' do |
891 | | - let(:dossier_with_unread_instructeur) { create(:dossier, :en_construction, procedure: procedures.demo) } |
892 | | - let(:dossier_with_read_instructeur) { create(:dossier, :en_construction, procedure: procedures.demo) } |
893 | | - let(:dossier_with_unread_expert) { create(:dossier, :en_construction, procedure: procedures.demo) } |
894 | | - let(:dossier_with_only_usager_message) { create(:dossier, :en_construction, procedure: procedures.demo) } |
895 | | - let(:dossier_with_discarded_unread) { create(:dossier, :en_construction, procedure: procedures.demo) } |
| 896 | + let_it_be(:dossier_with_unread_instructeur) { create(:dossier, :en_construction, procedure: procedures.demo) } |
| 897 | + let_it_be(:dossier_with_read_instructeur) { create(:dossier, :en_construction, procedure: procedures.demo) } |
| 898 | + let_it_be(:dossier_with_unread_expert) { create(:dossier, :en_construction, procedure: procedures.demo) } |
| 899 | + let_it_be(:dossier_with_only_usager_message) { create(:dossier, :en_construction, procedure: procedures.demo) } |
| 900 | + let_it_be(:dossier_with_discarded_unread) { create(:dossier, :en_construction, procedure: procedures.demo) } |
896 | 901 |
|
897 | | - before do |
| 902 | + before_all do |
898 | 903 | create(:commentaire, dossier: dossier_with_unread_instructeur, instructeur: create(:instructeur), seen_by_recipient_at: nil) |
899 | 904 | create(:commentaire, dossier: dossier_with_read_instructeur, instructeur: create(:instructeur), seen_by_recipient_at: 1.day.ago) |
900 | 905 | create(:commentaire, dossier: dossier_with_unread_expert, expert: create(:expert), seen_by_recipient_at: nil) |
|
1112 | 1117 | end |
1113 | 1118 |
|
1114 | 1119 | describe "#unspecified_attestation_champs" do |
1115 | | - let(:procedure) { create(:procedure, attestation_acceptation_template:, types_de_champ_public:, types_de_champ_private:) } |
1116 | | - let(:dossier) { create(:dossier, :en_instruction, procedure:) } |
| 1120 | + def types_de_champ_public |
| 1121 | + [ |
| 1122 | + { libelle: "specified champ-in-title" }, |
| 1123 | + { libelle: "unspecified champ-in-title" }, |
| 1124 | + { libelle: "specified champ-in-body" }, |
| 1125 | + { libelle: "unspecified champ-in-body" }, |
| 1126 | + ] |
| 1127 | + end |
1117 | 1128 |
|
1118 | | - let(:types_de_champ_public) { [tdc_1, tdc_2, tdc_3, tdc_4] } |
1119 | | - let(:types_de_champ_private) { [tdc_5, tdc_6, tdc_7, tdc_8] } |
| 1129 | + def types_de_champ_private |
| 1130 | + [ |
| 1131 | + { libelle: "specified annotation privée-in-title" }, |
| 1132 | + { libelle: "unspecified annotation privée-in-title" }, |
| 1133 | + { libelle: "specified annotation privée-in-body" }, |
| 1134 | + { libelle: "unspecified annotation privée-in-body" }, |
| 1135 | + ] |
| 1136 | + end |
1120 | 1137 |
|
1121 | | - let(:tdc_1) { { libelle: "specified champ-in-title" } } |
1122 | | - let(:tdc_2) { { libelle: "unspecified champ-in-title" } } |
1123 | | - let(:tdc_3) { { libelle: "specified champ-in-body" } } |
1124 | | - let(:tdc_4) { { libelle: "unspecified champ-in-body" } } |
1125 | | - let(:tdc_5) { { libelle: "specified annotation privée-in-title" } } |
1126 | | - let(:tdc_6) { { libelle: "unspecified annotation privée-in-title" } } |
1127 | | - let(:tdc_7) { { libelle: "specified annotation privée-in-body" } } |
1128 | | - let(:tdc_8) { { libelle: "unspecified annotation privée-in-body" } } |
| 1138 | + let_it_be(:procedure) { create(:procedure, types_de_champ_public:, types_de_champ_private:) } |
| 1139 | + let_it_be(:dossier) { create(:dossier, :en_instruction, procedure:) } |
1129 | 1140 |
|
1130 | 1141 | before do |
| 1142 | + # reset association caches: each example rolls back to the group snapshot |
| 1143 | + procedure.reload |
| 1144 | + dossier.reload |
| 1145 | + |
| 1146 | + procedure.attestation_acceptation_template = attestation_acceptation_template if attestation_acceptation_template |
| 1147 | + |
1131 | 1148 | (dossier.project_champs_public + dossier.project_champs_private) |
1132 | 1149 | .filter { |c| c.libelle.match?(/^specified/) } |
1133 | 1150 | .each { |c| c.update_attribute(:value, "specified") } |
|
1586 | 1603 | describe '#accepter_automatiquement!' do |
1587 | 1604 | let(:last_operation) { dossier.dossier_operation_logs.last } |
1588 | 1605 | let!(:now) { Time.zone.parse('01/01/2100') } |
1589 | | - let(:procedure) { create(:procedure, :for_individual, :published) } |
| 1606 | + let(:procedure) { procedures.demo } |
1590 | 1607 | let!(:attestation_template) { create(:attestation_template, procedure:, kind: :acceptation, state: :published) } |
1591 | 1608 |
|
1592 | 1609 | before do |
|
1621 | 1638 | end |
1622 | 1639 |
|
1623 | 1640 | context 'as sva procedure' do |
1624 | | - let(:procedure) { create(:procedure, :for_individual, :published, :sva) } |
| 1641 | + let_it_be(:procedure) { create(:procedure, :for_individual, :published, :sva) } |
1625 | 1642 | let(:dossier) { create(:dossier, :en_instruction, :with_individual, procedure:, sva_svr_decision_on: Date.current, en_instruction_at: DateTime.new(2021, 5, 1, 12)) } |
1626 | 1643 | let!(:attestation_template) { create(:attestation_template, procedure:, kind: :acceptation, state: :published) } |
1627 | 1644 |
|
|
1644 | 1661 | describe '#refuser_automatiquement' do |
1645 | 1662 | context 'as svr procedure' do |
1646 | 1663 | let(:last_operation) { dossier.dossier_operation_logs.last } |
1647 | | - let(:procedure) { create(:procedure, :for_individual, :published, :svr) } |
| 1664 | + let_it_be(:procedure) { create(:procedure, :for_individual, :published, :svr) } |
1648 | 1665 | let(:dossier) { create(:dossier, :en_instruction, :with_individual, procedure:, sva_svr_decision_on: Date.current, en_instruction_at: DateTime.new(2021, 5, 1, 12)) } |
1649 | 1666 |
|
1650 | 1667 | before { |
|
1722 | 1739 | let(:instructeur) { create(:instructeur) } |
1723 | 1740 |
|
1724 | 1741 | context "via procedure declarative en instruction" do |
1725 | | - let(:dossier) { create(:dossier, :en_construction, :with_declarative_en_instruction) } |
| 1742 | + let(:dossier) { create(:dossier, :en_construction, :with_declarative_en_instruction, procedure: procedures.demo) } |
1726 | 1743 |
|
1727 | 1744 | subject do |
1728 | 1745 | dossier.process_declarative! |
|
1742 | 1759 | end |
1743 | 1760 |
|
1744 | 1761 | context "via procedure sva" do |
1745 | | - let(:procedure) { create(:procedure, :sva, :published, :for_individual) } |
| 1762 | + let_it_be(:procedure) { create(:procedure, :sva, :published, :for_individual) } |
1746 | 1763 | let(:dossier) { create(:dossier, :en_construction, :with_individual, procedure:, sva_svr_decision_on: 10.days.from_now) } |
1747 | 1764 | let(:sva_svr_decision_on) { SVASVRDecisionDateCalculatorService.new(dossier, procedure).decision_date } |
1748 | 1765 |
|
|
2047 | 2064 |
|
2048 | 2065 | describe "can't transition to terminer when annotations privees are not valid" do |
2049 | 2066 | let(:instructeur) { create(:instructeur) } |
2050 | | - let(:procedure) { create(:procedure, types_de_champ_private:) } |
| 2067 | + let_it_be(:procedure) { create(:procedure, types_de_champ_private: [{ type: :text, mandatory: true }]) } |
2051 | 2068 | let(:dossier_incomplete) { create(:dossier, :en_instruction, procedure:) } |
2052 | 2069 | let(:dossier_ok) { create(:dossier, :en_instruction, :with_populated_annotations, procedure:) } |
2053 | | - let(:types_de_champ_private) { [{ type: :text, mandatory: true }] } |
2054 | 2070 |
|
2055 | 2071 | context "when dossier is en_instruction" do |
2056 | 2072 | it "can't accepter" do |
|
2873 | 2889 | end |
2874 | 2890 |
|
2875 | 2891 | describe '#archivable_by_month' do |
2876 | | - let(:procedure) { create(:procedure, :published, groupe_instructeurs: [groupe_instructeurs]) } |
2877 | | - let(:groupe_instructeurs) { create(:groupe_instructeur) } |
| 2892 | + let_it_be(:groupe_instructeurs) { create(:groupe_instructeur) } |
| 2893 | + let_it_be(:procedure) { create(:procedure, :published, groupe_instructeurs: [groupe_instructeurs]) } |
2878 | 2894 |
|
2879 | | - before do |
| 2895 | + before_all do |
2880 | 2896 | create_dossier_for_month(procedure, 2021, 3) |
2881 | 2897 | create_dossier_for_month(procedure, 2021, 3) |
2882 | 2898 | create_archived_dossier_for_month(procedure, 2021, 3) |
|
0 commit comments