From 793f9fb57b105b1b862a223b586fdccea55f5352 Mon Sep 17 00:00:00 2001 From: Juho Leinonen Date: Wed, 15 Nov 2023 12:39:41 +0200 Subject: [PATCH 1/3] =?UTF-8?q?AE-2029:=20Fix=20henkilo=20and=20yritys=20-?= =?UTF-8?q?osapuoli=20id=20collision=20in=20k=C3=A4skyp=C3=A4=C3=A4t=C3=B6?= =?UTF-8?q?s=20and=20sakkop=C3=A4=C3=A4t=C3=B6s=20toimenpide?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Henkilosapuoli and yritysosapuoli ids can be same so osapuoli-specific-data could get mixed up between the two if present in the same toimenpide - Added osapuoli-type to osapuoli-specific-data which is then checked together with the osapuoli-id if the osapuoli is the correct one --- .../clj/solita/etp/schema/valvonta_kaytto.clj | 39 +++-- .../etp/service/valvonta_kaytto/asha.clj | 20 ++- .../etp/service/valvonta_kaytto/osapuoli.clj | 9 +- .../toimenpide_type_specific_data.clj | 56 +++--- .../etp/service/valvonta_kaytto/asha_test.clj | 144 +++++++++++++-- .../toimenpide_type_specific_data_test.clj | 11 +- ...skypaatos_tiedoksianto_haastemies_test.clj | 19 +- .../kaskypaatos_varsinainen_paatos_test.clj | 164 +++++++++++++++++- .../sakkopaatos_kuulemiskirje_test.clj | 1 + ...kkopaatos_tiedoksianto_haastemies_test.clj | 18 +- .../sakkopaatos_varsinainen_paatos_test.clj | 8 + 11 files changed, 412 insertions(+), 77 deletions(-) diff --git a/etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj b/etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj index 768bdb141..e222308e3 100644 --- a/etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj +++ b/etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj @@ -48,11 +48,14 @@ (def KarajaoikeusId (apply schema/enum (range 0 20))) +(def OsapuoliType (schema/enum "henkilo" "yritys")) + (def KaskypaatosVarsinainenPaatosOsapuoliSpecificData (schema/conditional ;; Osapuoli has a document and has answered to kuulemiskirje, so all fields are required (every-pred toimenpide/osapuoli-has-document? toimenpide/recipient-answered?) {:osapuoli-id common-schema/Key + :osapuoli-type OsapuoliType :hallinto-oikeus-id HallintoOikeusId :document schema/Bool :recipient-answered schema/Bool @@ -64,14 +67,16 @@ ;; Osapuoli has document but has not answered to kuulemiskirje, so answer and statement are not allowed toimenpide/osapuoli-has-document? {:osapuoli-id common-schema/Key + :osapuoli-type OsapuoliType :hallinto-oikeus-id HallintoOikeusId :document schema/Bool :recipient-answered schema/Bool} ;; Osapuoli has no document so no other fields are allowed :else - {:osapuoli-id common-schema/Key - :document schema/Bool})) + {:osapuoli-id common-schema/Key + :osapuoli-type OsapuoliType + :document schema/Bool})) (def KaskypaatosVarsinainenPaatosData {:fine common-schema/NonNegative :osapuoli-specific-data [KaskypaatosVarsinainenPaatosOsapuoliSpecificData] @@ -83,13 +88,15 @@ (schema/conditional toimenpide/osapuoli-has-document? {:osapuoli-id common-schema/Key + :osapuoli-type OsapuoliType :karajaoikeus-id KarajaoikeusId :haastemies-email common-schema/Email :document schema/Bool} :else - {:osapuoli-id common-schema/Key - :document schema/Bool})) + {:osapuoli-id common-schema/Key + :osapuoli-type OsapuoliType + :document schema/Bool})) (def KaskypaatosTiedoksiantoHaastemiesData {:osapuoli-specific-data [KaskypaatosTiedoksiantoHaastemiesOsapuoliSpecificData]}) @@ -101,19 +108,21 @@ ;; Osapuoli has a document so all fields are required to have values ;; answer-commentary fields are optional but if present, values are required toimenpide/osapuoli-has-document? - {:osapuoli-id common-schema/Key - :hallinto-oikeus-id HallintoOikeusId - :document schema/Bool - :recipient-answered schema/Bool + {:osapuoli-id common-schema/Key + :osapuoli-type OsapuoliType + :hallinto-oikeus-id HallintoOikeusId + :document schema/Bool + :recipient-answered schema/Bool (schema/optional-key :answer-commentary-fi) schema/Str (schema/optional-key :answer-commentary-sv) schema/Str - :statement-fi schema/Str - :statement-sv schema/Str} + :statement-fi schema/Str + :statement-sv schema/Str} ;; Osapuoli has no document so no other fields are allowed :else - {:osapuoli-id common-schema/Key - :document schema/Bool})) + {:osapuoli-id common-schema/Key + :osapuoli-type OsapuoliType + :document schema/Bool})) (def SakkopaatosVarsinainenPaatosData {:fine common-schema/NonNegative :osapuoli-specific-data [SakkopaatosVarsinainenPaatosOsapuoliSpecificData] @@ -125,13 +134,15 @@ (schema/conditional toimenpide/osapuoli-has-document? {:osapuoli-id common-schema/Key + :osapuoli-type OsapuoliType :karajaoikeus-id KarajaoikeusId :haastemies-email common-schema/Email :document schema/Bool} :else - {:osapuoli-id common-schema/Key - :document schema/Bool})) + {:osapuoli-id common-schema/Key + :osapuoli-type OsapuoliType + :document schema/Bool})) (def SakkopaatosTiedoksiantoHaastemiesData {:osapuoli-specific-data [SakkopaatosTiedoksiantoHaastemiesOsapuoliSpecificData]}) diff --git a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/asha.clj b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/asha.clj index 3d3af31b0..72809be0f 100644 --- a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/asha.clj +++ b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/asha.clj @@ -90,7 +90,11 @@ :tietopyynto {:tietopyynto-pvm (time/format-date (:rfi-request dokumentit)) :tietopyynto-kehotus-pvm (time/format-date (:rfi-order dokumentit))} :tiedoksi (map (partial tiedoksi-saaja roolit) tiedoksi) - :tyyppikohtaiset-tiedot (type-specific-data/format-type-specific-data db toimenpide (:id osapuoli)) + :tyyppikohtaiset-tiedot (type-specific-data/format-type-specific-data + db + toimenpide + (:id osapuoli) + (osapuoli/osapuoli->osapuoli-type osapuoli)) :aiemmat-toimenpiteet (previous-toimenpide/formatted-previous-toimenpide-data db toimenpide (:id valvonta))}) (defn- request-id [valvonta-id toimenpide-id] @@ -250,16 +254,20 @@ :type-specific-data :osapuoli-specific-data (filter toimenpide/osapuoli-has-document?) - (map :osapuoli-id) - set)] - (filter #(contains? osapuolet-with-document (:id %)) osapuolet)) + (map #(select-keys % [:osapuoli-id :osapuoli-type]))) + henkilo-osapuolet-with-documents (map :osapuoli-id (filter #(= (:osapuoli-type %) "henkilo") osapuolet-with-document)) + yritys-osapuolet-with-documents (map :osapuoli-id (filter #(= (:osapuoli-type %) "yritys") osapuolet-with-document))] + (concat + (filter #(contains? (set henkilo-osapuolet-with-documents) (:id %)) (filter osapuoli/henkilo? osapuolet)) + (filter #(contains? (set yritys-osapuolet-with-documents) (:id %)) (filter osapuoli/yritys? osapuolet)))) osapuolet)) (defn store-hallinto-oikeus-attachment! [db aws-s3-client valvonta-id toimenpide osapuoli] - (let [hallinto-oikeus-id (-> toimenpide + (let [osapuoli-type (osapuoli/osapuoli->osapuoli-type osapuoli) + hallinto-oikeus-id (-> toimenpide :type-specific-data :osapuoli-specific-data - (type-specific-data/find-administrative-court-id-from-osapuoli-specific-data (:id osapuoli))) + (type-specific-data/find-administrative-court-id-from-osapuoli-specific-data (:id osapuoli) osapuoli-type)) attachment (hao-attachment/attachment-for-hallinto-oikeus-id db hallinto-oikeus-id)] (store/store-hallinto-oikeus-attachment! aws-s3-client valvonta-id (:id toimenpide) osapuoli attachment) attachment)) diff --git a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/osapuoli.clj b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/osapuoli.clj index 5621fdefa..d19503a42 100644 --- a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/osapuoli.clj +++ b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/osapuoli.clj @@ -14,4 +14,11 @@ (def yritys? #(contains? % :nimi)) (defn ilmoituspaikka-other? [valvonta] - (= (:ilmoituspaikka-id valvonta) 2)) \ No newline at end of file + (= (:ilmoituspaikka-id valvonta) 2)) + +(defn osapuoli->osapuoli-type + "Given osapuoli map, returns whether the osapuoli is henkilo or yritys" + [osapuoli] + (if (henkilo? osapuoli) + "henkilo" + "yritys")) \ No newline at end of file diff --git a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data.clj b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data.clj index cc66b7041..6c8eff8bc 100644 --- a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data.clj +++ b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data.clj @@ -7,11 +7,12 @@ (db/require-queries 'karajaoikeus) (defmulti format-type-specific-data - (fn [_db toimenpide _osapuoli-id] (-> toimenpide :type-id toimenpide/type-key))) + (fn [_db toimenpide _osapuoli-id _osapuoli-type] (-> toimenpide :type-id toimenpide/type-key))) -(defn- find-value-from-osapuoli-specific-data [key osapuoli-specific-data osapuoli-id] +(defn- find-value-from-osapuoli-specific-data [key osapuoli-specific-data osapuoli-id osapuoli-type] (->> osapuoli-specific-data - (filter #(= (:osapuoli-id %) osapuoli-id)) + (filter #(= ((juxt :osapuoli-id :osapuoli-type) %) + [osapuoli-id osapuoli-type])) first key)) @@ -27,22 +28,22 @@ (exception/throw-ex-info! {:message (str "Unknown hallinto-oikeus-id: " hallinto-oikeus-id)}))) -(defn format-actual-decision-data [db toimenpide osapuoli-id] +(defn format-actual-decision-data [db toimenpide osapuoli-id osapuoli-type] (let [recipient-answered? (-> toimenpide :type-specific-data :osapuoli-specific-data - (find-recipient-answered-from-osapuoli-specific-data osapuoli-id)) + (find-recipient-answered-from-osapuoli-specific-data osapuoli-id osapuoli-type)) hallinto-oikeus-strings (hallinto-oikeus-id->formatted-strings db (-> toimenpide :type-specific-data :osapuoli-specific-data - (find-administrative-court-id-from-osapuoli-specific-data osapuoli-id)))] + (find-administrative-court-id-from-osapuoli-specific-data osapuoli-id osapuoli-type)))] {:recipient-answered recipient-answered? :vastaus-fi (let [answer-commentary (-> toimenpide :type-specific-data :osapuoli-specific-data - ((partial find-value-from-osapuoli-specific-data :answer-commentary-fi) osapuoli-id)) + ((partial find-value-from-osapuoli-specific-data :answer-commentary-fi) osapuoli-id osapuoli-type)) recipient-answered-string (if recipient-answered? "Asianosainen antoi vastineen kuulemiskirjeeseen. " "Asianosainen ei vastannut kuulemiskirjeeseen. ")] @@ -50,7 +51,7 @@ :vastaus-sv (let [answer-commentary (-> toimenpide :type-specific-data :osapuoli-specific-data - ((partial find-value-from-osapuoli-specific-data :answer-commentary-sv) osapuoli-id)) + ((partial find-value-from-osapuoli-specific-data :answer-commentary-sv) osapuoli-id osapuoli-type)) recipient-answered-string (if recipient-answered? "gav ett bemötande till brevet om hörande. " "svarade inte på brevet om hörande. ")] @@ -61,40 +62,41 @@ :statement-fi (-> toimenpide :type-specific-data :osapuoli-specific-data - ((partial find-value-from-osapuoli-specific-data :statement-fi) osapuoli-id)) + ((partial find-value-from-osapuoli-specific-data :statement-fi) osapuoli-id osapuoli-type)) :statement-sv (-> toimenpide :type-specific-data :osapuoli-specific-data - ((partial find-value-from-osapuoli-specific-data :statement-sv) osapuoli-id)) + ((partial find-value-from-osapuoli-specific-data :statement-sv) osapuoli-id osapuoli-type)) :department-head-name (-> toimenpide :type-specific-data :department-head-name) :department-head-title-fi (-> toimenpide :type-specific-data :department-head-title-fi) :department-head-title-sv (-> toimenpide :type-specific-data :department-head-title-sv)})) -(defmethod format-type-specific-data :decision-order-actual-decision [db toimenpide osapuoli-id] - (format-actual-decision-data db toimenpide osapuoli-id)) +(defmethod format-type-specific-data :decision-order-actual-decision [db toimenpide osapuoli-id osapuoli-type] + (format-actual-decision-data db toimenpide osapuoli-id osapuoli-type)) -(defmethod format-type-specific-data :penalty-decision-actual-decision [db toimenpide osapuoli-id] - (format-actual-decision-data db toimenpide osapuoli-id)) +(defmethod format-type-specific-data :penalty-decision-actual-decision [db toimenpide osapuoli-id osapuoli-type] + (format-actual-decision-data db toimenpide osapuoli-id osapuoli-type)) (defn- karajaoikeus-id->name [db id] (first (karajaoikeus-db/find-karajaoikeus-name-by-id db {:karajaoikeus-id id}))) -(defn- format-notice-bailiff [db toimenpide osapuoli-id] - (let [osapuoli (->> toimenpide - :type-specific-data - :osapuoli-specific-data - (filter #(= (:osapuoli-id %) osapuoli-id)) - first) - karajaoikeus-id (:karajaoikeus-id osapuoli) - haastemies-email (:haastemies-email osapuoli)] +(defn- format-notice-bailiff [db toimenpide osapuoli-id osapuoli-type] + (let [karajaoikeus-id (-> toimenpide + :type-specific-data + :osapuoli-specific-data + ((partial find-value-from-osapuoli-specific-data :karajaoikeus-id) osapuoli-id osapuoli-type)) + haastemies-email (-> toimenpide + :type-specific-data + :osapuoli-specific-data + ((partial find-value-from-osapuoli-specific-data :haastemies-email) osapuoli-id osapuoli-type))] {:karajaoikeus (karajaoikeus-id->name db karajaoikeus-id) :haastemies-email haastemies-email})) -(defmethod format-type-specific-data :decision-order-notice-bailiff [db toimenpide osapuoli-id] - (format-notice-bailiff db toimenpide osapuoli-id)) +(defmethod format-type-specific-data :decision-order-notice-bailiff [db toimenpide osapuoli-id osapuoli-type] + (format-notice-bailiff db toimenpide osapuoli-id osapuoli-type)) -(defmethod format-type-specific-data :penalty-decision-notice-bailiff [db toimenpide osapuoli-id] - (format-notice-bailiff db toimenpide osapuoli-id)) +(defmethod format-type-specific-data :penalty-decision-notice-bailiff [db toimenpide osapuoli-id osapuoli-type] + (format-notice-bailiff db toimenpide osapuoli-id osapuoli-type)) -(defmethod format-type-specific-data :default [_ toimenpide _] +(defmethod format-type-specific-data :default [_ toimenpide _ _] (:type-specific-data toimenpide)) diff --git a/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/asha_test.clj b/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/asha_test.clj index b2e4eec9c..f0976f3f9 100644 --- a/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/asha_test.clj +++ b/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/asha_test.clj @@ -6,7 +6,7 @@ (t/use-fixtures :each ts/fixture) (t/deftest remove-osapuolet-with-no-document-if-varsinainen-paatos-test - (t/testing "Two osapuolis, one hallinto-oikeus, only the osapuoli with the hallinto-oikeus should be returned" + (t/testing "Two osapuolis, only the osapuoli with document set to true should be returned" (let [osapuolet [{:toimitustapa-description nil :toimitustapa-id 0 :email nil @@ -52,10 +52,11 @@ :department-head-name "Yli Päällikkö" :osapuoli-specific-data [{:hallinto-oikeus-id 1 :osapuoli-id 2 + :osapuoli-type "henkilo" :document true} - {:hallinto-oikeus-id nil - :osapuoli-id 3 - :document false}] + {:osapuoli-id 3 + :osapuoli-type "henkilo" + :document false}] :recipient-answered true :statement-sv "Han vet inte. Vi förlotar." :statement-fi "Tämän kerran annetaan anteeksi kun hän ei tiennyt." @@ -82,24 +83,141 @@ :vastaanottajan-tarkenne nil :maa "FI"}])))) - (t/testing "Two osapuolis and two hallinto-oikeus selections, both osapuolet are returned" + (t/testing "Henkilo-osapuoli and yritysosapuoli with the same id" + (let [osapuolet [{:toimitustapa-description nil, + :toimitustapa-id 0, + :email nil, + :rooli-id 0, + :jakeluosoite "Testikatu 12", + :valvonta-id 1, + :postitoimipaikka "Helsinki", + :puhelin nil, + :sukunimi "Talonomistaja", + :postinumero "00100", + :id 1, + :henkilotunnus "000000-0000", + :rooli-description "", + :etunimi "Testi", + :vastaanottajan-tarkenne nil, + :maa "FI"} + {:toimitustapa-description nil, + :toimitustapa-id 0, + :email nil, + :rooli-id 0, + :jakeluosoite "Testikatu 12", + :valvonta-id 1, + :postitoimipaikka "Helsinki", + :ytunnus nil, + :puhelin nil, + :nimi "Yritysomistaja", + :postinumero "00100", + :id 1, + :rooli-description "Omistaja", + :vastaanottajan-tarkenne "Lisäselite C/O", + :maa "FI"}]] + (t/testing "only the henkilo-osapuoli has a document so it should be returned" + (t/is (= (asha/remove-osapuolet-with-no-document + {:type-id 8 + :type-specific-data {:osapuoli-specific-data [{:hallinto-oikeus-id 1 + :osapuoli-id 1 + :osapuoli-type "henkilo" + :document true} + {:hallinto-oikeus-id 3 + :osapuoli-id 1 + :osapuoli-type "yritys" + :document false}]}} + osapuolet) + [{:toimitustapa-description nil, + :toimitustapa-id 0, + :email nil, + :rooli-id 0, + :jakeluosoite "Testikatu 12", + :valvonta-id 1, + :postitoimipaikka "Helsinki", + :puhelin nil, + :sukunimi "Talonomistaja", + :postinumero "00100", + :id 1, + :henkilotunnus "000000-0000", + :rooli-description "", + :etunimi "Testi", + :vastaanottajan-tarkenne nil, + :maa "FI"}]))) + + (t/testing "only the yritys-osapuoli has a document so it should be returned" + (t/is (= (asha/remove-osapuolet-with-no-document + {:type-id 8 + :type-specific-data {:osapuoli-specific-data [{:hallinto-oikeus-id 1 + :osapuoli-id 1 + :osapuoli-type "henkilo" + :document false} + {:hallinto-oikeus-id 3 + :osapuoli-id 1 + :osapuoli-type "yritys" + :document true}]}} + osapuolet) + [{:toimitustapa-description nil, + :toimitustapa-id 0, + :email nil, + :rooli-id 0, + :jakeluosoite "Testikatu 12", + :valvonta-id 1, + :postitoimipaikka "Helsinki", + :ytunnus nil, + :puhelin nil, + :nimi "Yritysomistaja", + :postinumero "00100", + :id 1, + :rooli-description "Omistaja", + :vastaanottajan-tarkenne "Lisäselite C/O", + :maa "FI"}]))) + + (t/testing "both have a document so both should be returned" + (t/is (= (asha/remove-osapuolet-with-no-document + {:type-id 8 + :type-specific-data {:osapuoli-specific-data [{:hallinto-oikeus-id 1 + :osapuoli-id 1 + :osapuoli-type "henkilo" + :document true} + {:hallinto-oikeus-id 3 + :osapuoli-id 1 + :osapuoli-type "yritys" + :document true}]}} + osapuolet) + osapuolet))))) + + (t/testing "Two osapuolis and two documents, both osapuolet are returned" (t/is (= (asha/remove-osapuolet-with-no-document {:type-id 8 :type-specific-data {:osapuoli-specific-data [{:hallinto-oikeus-id 1 :osapuoli-id 2 + :osapuoli-type "henkilo" :document true} {:hallinto-oikeus-id 3 :osapuoli-id 3 + :osapuoli-type "yritys" :document true}]}} - [{:id 2} - {:id 3}]) - [{:id 2} - {:id 3}]))) + [{:id 2 + :etunimi "Testi" + :sukunimi "Testerson"} + {:id 3 + :nimi "Testiyritys"}]) + [{:id 2 + :etunimi "Testi" + :sukunimi "Testerson"} + {:id 3 + :nimi "Testiyritys"}]))) (t/testing "Two osapuolis and toimenpide is not varsinainen päätös, so both should be returned" (t/is (= (asha/remove-osapuolet-with-no-document {:type-id 7} - [{:id 2} - {:id 3}]) - [{:id 2} - {:id 3}])))) + [{:id 2 + :etunimi "Testi" + :sukunimi "Testerson"} + {:id 3 + :nimi "Testiyritys"}]) + [{:id 2 + :etunimi "Testi" + :sukunimi "Testerson"} + {:id 3 + :nimi "Testiyritys"}])))) diff --git a/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data_test.clj b/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data_test.clj index 7b0f25e02..49dfd08eb 100644 --- a/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data_test.clj +++ b/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data_test.clj @@ -13,6 +13,7 @@ {:type-id 8 :type-specific-data {:fine 129 :osapuoli-specific-data [{:osapuoli-id 1 + :osapuoli-type "henkilo" :hallinto-oikeus-id 0 :document true :recipient-answered true @@ -23,7 +24,8 @@ :department-head-name "Jorma Jormanen" :department-head-title-fi "Hallinto-oikeuden presidentti" :department-head-title-sv "Hallinto-oikeuden kuningas"}} - 1) + 1 + "henkilo") {:fine 129 :vastaus-fi "Asianosainen antoi vastineen kuulemiskirjeeseen. Voi anteeksi, en tiennyt." :oikeus-fi "Helsingin hallinto-oikeudelta" @@ -41,6 +43,7 @@ ts/*db* {:type-id 7 :type-specific-data {:fine 800}} + nil nil) {:fine 800}))))) @@ -93,10 +96,14 @@ (t/testing "Correct court id is found for the osapuoli" (t/is (= (type-specific-data/find-administrative-court-id-from-osapuoli-specific-data [{:osapuoli-id 1 + :osapuoli-type "henkilo" :hallinto-oikeus-id 0} {:osapuoli-id 3 + :osapuoli-type "henkilo" :hallinto-oikeus-id 5} {:osapuoli-id 643 + :osapuoli-type "yritys" :hallinto-oikeus-id 2}] - 3) + 3 + "henkilo") 5)))) diff --git a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_tiedoksianto_haastemies_test.clj b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_tiedoksianto_haastemies_test.clj index a37755efc..b6bc02127 100644 --- a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_tiedoksianto_haastemies_test.clj +++ b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_tiedoksianto_haastemies_test.clj @@ -57,11 +57,13 @@ :template-id 8 :description "Kuvaus" :type-specific-data {:osapuoli-specific-data [{:osapuoli-id 1 + :osapuoli-type "henkilo" :karajaoikeus-id 1 :haastemies-email "haaste@mie.het" :document true} - {:osapuoli-id 2 - :document false}]}} + {:osapuoli-id 2 + :osapuoli-type "yritys" + :document false}]}} response (ts/handler (-> (mock/request :post (format "/api/private/valvonta/kaytto/%s/toimenpiteet" valvonta-id)) (mock/json-body new-toimenpide) (test-kayttajat/with-virtu-user) @@ -108,9 +110,12 @@ :type-specific-data {:osapuoli-specific-data [{:document true :haastemies-email "haaste@mie.het" :karajaoikeus-id 1 - :osapuoli-id 1} - {:document false - :osapuoli-id 2}]} + :osapuoli-id 1 + :osapuoli-type "henkilo" + } + {:document false + :osapuoli-id 2 + :osapuoli-type "yritys"}]} :valvonta-id valvonta-id :yritykset []})))))) @@ -150,6 +155,7 @@ :template-id 8 :description "Kuvaus" :type-specific-data {:osapuoli-specific-data [{:osapuoli-id 1 + :osapuoli-type "yritys" :karajaoikeus-id 1 :haastemies-email "haaste@mie.het" :document true}]}} @@ -184,7 +190,8 @@ :type-specific-data {:osapuoli-specific-data [{:document true :haastemies-email "haaste@mie.het" :karajaoikeus-id 1 - :osapuoli-id 1}]} + :osapuoli-id 1 + :osapuoli-type "yritys"}]} :valvonta-id valvonta-id :yritykset [{:toimitustapa-description nil, :toimitustapa-id 0, diff --git a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_varsinainen_paatos_test.clj b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_varsinainen_paatos_test.clj index 9601c162a..ae6a028a8 100644 --- a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_varsinainen_paatos_test.clj +++ b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_varsinainen_paatos_test.clj @@ -101,6 +101,7 @@ :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 :osapuoli-specific-data [{:osapuoli-id osapuoli-id + :osapuoli-type "henkilo" :hallinto-oikeus-id 1 :document true :recipient-answered true @@ -221,6 +222,7 @@ :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 :osapuoli-specific-data [{:osapuoli-id osapuoli-id + :osapuoli-type "yritys" :hallinto-oikeus-id 2 :document true :recipient-answered false}] @@ -277,6 +279,7 @@ :osapuoli-specific-data [{:hallinto-oikeus-id 2 :osapuoli-id 1 + :osapuoli-type "yritys" :document true :recipient-answered false}] :department-head-title-sv "Kungen" @@ -400,6 +403,7 @@ :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 :osapuoli-specific-data [{:osapuoli-id osapuoli-id + :osapuoli-type "henkilo" :hallinto-oikeus-id 1 :document true :recipient-answered true @@ -407,8 +411,9 @@ :answer-commentary-sv "Jag visste inte att ett intyg behövs :(" :statement-fi "Tämän kerran annetaan anteeksi, kun hän ei tiennyt." :statement-sv "Han vet inte. Vi förlotar."} - {:osapuoli-id osapuoli-id-2 - :document false}] + {:osapuoli-id osapuoli-id-2 + :osapuoli-type "henkilo" + :document false}] :department-head-title-fi "Apulaisjohtaja" :department-head-title-sv "Apulaisjohtaja på svenska" :department-head-name "Yli Päällikkö"}} @@ -448,6 +453,7 @@ :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 :osapuoli-specific-data [{:osapuoli-id osapuoli-id + :osapuoli-type "henkilo" :hallinto-oikeus-id 3 :document true :recipient-answered false}] @@ -485,6 +491,7 @@ :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 :osapuoli-specific-data [{:osapuoli-id osapuoli-id + :osapuoli-type "yritys" :hallinto-oikeus-id 5 :document true :recipient-answered true @@ -554,3 +561,156 @@ (t/is (= response-body {:department-head-name "Testi Testinen" :department-head-title-fi "Ylitarkastaja" :department-head-title-sv "Ylitarkastaja på svenska"}))))))) + +(t/deftest two-osapuolet-one-id-test + ;; Add the main user for the following tests + (test-kayttajat/insert-virtu-paakayttaja! + {:etunimi "Asian" + :sukunimi "Tuntija" + :email "testi@ara.fi" + :puhelin "0504363675457"}) + (t/testing "Käskypäätös / varsinainen päätös toimenpide is created successfully for yksityishenkilö even though yritysosapuoli with same id exists" + ;; Add the valvonta and previous toimenpides + ;; so that käskypäätös / kuulemiskirje toimenpide can be created + (let [valvonta-id (valvonta-service/add-valvonta! ts/*db* {:katuosoite "Testitie 5" + :postinumero "90100" + :ilmoituspaikka-id 0}) + kehotus-timestamp (-> (LocalDate/of 2023 6 12) + (.atStartOfDay (ZoneId/systemDefault)) + .toInstant) + varoitus-timestamp (-> (LocalDate/of 2023 7 13) + (.atStartOfDay (ZoneId/systemDefault)) + .toInstant) + kuulemiskirje-timestamp (-> (LocalDate/of 2023 7 13) + (.atStartOfDay (ZoneId/systemDefault)) + .toInstant) + html->pdf-called? (atom false) + store-hallinto-oikeus-attachment-called? (atom false) + ;; Add osapuoli to the valvonta + osapuoli-id (valvonta-service/add-henkilo! + ts/*db* + valvonta-id + {:toimitustapa-description nil + :toimitustapa-id 0 + :email nil + :rooli-id 0 + :jakeluosoite "Testikatu 12" + :postitoimipaikka "Helsinki" + :puhelin nil + :sukunimi "Talonomistaja" + :postinumero "00100" + :henkilotunnus "000000-0000" + :rooli-description "" + :etunimi "Testi" + :vastaanottajan-tarkenne nil + :maa "FI"}) + + ;; Add yritysosapuoli to ensure that different types of osapuolis with the same id + ;; do not affect each other + yritysosapuoli-id (valvonta-service/add-yritys! + ts/*db* + valvonta-id + {:nimi "Yritysomistaja" + :toimitustapa-description nil + :toimitustapa-id 0 + :email nil + :rooli-id 0 + :jakeluosoite "Testikatu 12" + :vastaanottajan-tarkenne "Lisäselite C/O" + :postitoimipaikka "Helsinki" + :puhelin nil + :postinumero "00100" + :rooli-description "Omistaja" + :maa "FI"})] + + (t/is (= osapuoli-id yritysosapuoli-id)) + ;; Add kehotus-toimenpide to the valvonta + (jdbc/insert! ts/*db* :vk_toimenpide {:valvonta_id valvonta-id + :type_id 2 + :create_time kehotus-timestamp + :publish_time kehotus-timestamp + :deadline_date (LocalDate/of 2023 7 12)}) + ;; Add varoitus-toimenpide to the valvonta + (jdbc/insert! ts/*db* :vk_toimenpide {:valvonta_id valvonta-id + :type_id 3 + :create_time varoitus-timestamp + :publish_time varoitus-timestamp + :deadline_date (LocalDate/of 2023 8 13)}) + + ;; Add käskypäätös / kuulemiskirje toimenpide to the valvonta + (jdbc/insert! ts/*db* :vk_toimenpide {:valvonta_id valvonta-id + :type_id 7 + :create_time kuulemiskirje-timestamp + :publish_time kuulemiskirje-timestamp + :deadline_date (LocalDate/of 2023 8 27) + :type_specific_data {:fine 9000} + :diaarinumero "ARA-05.03.01-2023-159"}) + ;; Mock the current time to ensure that the document has a fixed date + (with-bindings {#'time/clock (Clock/fixed (-> (LocalDate/of 2023 8 28) + (.atStartOfDay time/timezone) + .toInstant) + time/timezone) + #'pdf/html->pdf (partial html->pdf-with-assertion + "documents/kaskypaatos-varsinainen-paatos-yksityishenkilo.html" + html->pdf-called?) + #'file-store/store-hallinto-oikeus-attachment! + (fn [aws-s3-client valvonta-id toimenpide-id osapuoli document] + (reset! store-hallinto-oikeus-attachment-called? true) + (original-store-hallinto-oikeus-attachment aws-s3-client valvonta-id toimenpide-id osapuoli document))} + (let [new-toimenpide {:type-id 8 + :deadline-date (str (LocalDate/of 2023 10 4)) + :template-id 6 + :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" + :type-specific-data {:fine 857 + :osapuoli-specific-data [{:osapuoli-id yritysosapuoli-id + :osapuoli-type "yritys" + :document false} + {:osapuoli-id osapuoli-id + :osapuoli-type "henkilo" + :hallinto-oikeus-id 1 + :document true + :recipient-answered true + :answer-commentary-fi "En tiennyt, että todistus tarvitaan :(" + :answer-commentary-sv "Jag visste inte att ett intyg behövs :(" + :statement-fi "Tämän kerran annetaan anteeksi, kun hän ei tiennyt." + :statement-sv "Han vet inte. Vi förlotar."}] + :department-head-title-fi "Apulaisjohtaja" + :department-head-title-sv "Apulaisjohtaja på svenska" + :department-head-name "Yli Päällikkö"}} + response (ts/handler (-> (mock/request :post (format "/api/private/valvonta/kaytto/%s/toimenpiteet" valvonta-id)) + (mock/json-body new-toimenpide) + (test-kayttajat/with-virtu-user) + (mock/header "Accept" "application/json")))] + (t/is (true? @html->pdf-called?)) + (t/is (true? @store-hallinto-oikeus-attachment-called?)) + (t/is (= (:status response) 201)))) + + (t/testing "Created document can be downloaded through the api" + (let [response (ts/handler (-> (mock/request :get (format "/api/private/valvonta/kaytto/%s/toimenpiteet/%s/henkilot/%s/document/kaskypaatos.pdf" valvonta-id 4 osapuoli-id)) + (test-kayttajat/with-virtu-user) + (mock/header "Accept" "application/pdf")))] + (t/is (= (-> response :headers (get "Content-Type")) "application/pdf")) + (t/is (= (:status response) 200)))) + + (t/testing "Created document is not available without authentication" + (let [response (ts/handler (-> (mock/request :get (format "/api/private/valvonta/kaytto/%s/toimenpiteet/%s/henkilot/%s/document/kaskypaatos.pdf" valvonta-id 4 osapuoli-id)) + (mock/header "Accept" "application/pdf")))] + (t/is (= (:status response) 403)) + (t/is (= (:body response) "Forbidden")))) + + (t/testing "hallinto-oikeus-liite can be downloaded through the api" + (let [response (ts/handler (-> (mock/request :get (format "/api/private/valvonta/kaytto/%s/toimenpiteet/%s/henkilot/%s/attachment/hallinto-oikeus.pdf" valvonta-id 4 osapuoli-id)) + (test-kayttajat/with-virtu-user) + (mock/header "Accept" "application/pdf")))] + (t/is (= (-> response :headers (get "Content-Type")) "application/pdf")) + (t/is (= (:status response) 200)) + + (t/testing "hallinto-oikeus-liite is the correct one" + (t/is (= (slurp (io/input-stream (io/resource "pdf/hallinto-oikeudet/Valitusosoitus_30_pv_HAMEENLINNAN_HAO.pdf"))) + (slurp (:body response))))))) + + (t/testing "hallinto-oikeus-liite is not available without authentication" + (let [response (ts/handler (-> (mock/request :get (format "/api/private/valvonta/kaytto/%s/toimenpiteet/%s/henkilot/%s/attachment/hallinto-oikeus.pdf" valvonta-id 4 osapuoli-id)) + (mock/header "Accept" "application/pdf")))] + (t/is (= (:status response) 403)) + (t/is (= (:body response) "Forbidden"))))))) \ No newline at end of file diff --git a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_kuulemiskirje_test.clj b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_kuulemiskirje_test.clj index c44c754ba..769e11ead 100644 --- a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_kuulemiskirje_test.clj +++ b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_kuulemiskirje_test.clj @@ -123,6 +123,7 @@ :statement-fi "Tämän kerran annetaan anteeksi, kun hän ei tiennyt." :statement-sv "Han vet inte. Vi förlotar." :osapuoli-specific-data [{:osapuoli-id osapuoli-id + :osapuoli-type "henkilo" :hallinto-oikeus-id 1 :document true}] :department-head-title-fi "Apulaisjohtaja" diff --git a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_tiedoksianto_haastemies_test.clj b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_tiedoksianto_haastemies_test.clj index d9beb1023..240b9b42d 100644 --- a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_tiedoksianto_haastemies_test.clj +++ b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_tiedoksianto_haastemies_test.clj @@ -58,11 +58,13 @@ :template-id 10 :description "Kuvaus" :type-specific-data {:osapuoli-specific-data [{:osapuoli-id 1 + :osapuoli-type "henkilo" :karajaoikeus-id 1 :haastemies-email "haaste@mie.het" :document true} - {:osapuoli-id 2 - :document false}]}} + {:osapuoli-id 2 + :osapuoli-type "henkilo" + :document false}]}} response (ts/handler (-> (mock/request :post (format "/api/private/valvonta/kaytto/%s/toimenpiteet" valvonta-id)) (mock/json-body new-toimenpide) (test-kayttajat/with-virtu-user) @@ -109,9 +111,11 @@ :type-specific-data {:osapuoli-specific-data [{:document true :haastemies-email "haaste@mie.het" :karajaoikeus-id 1 - :osapuoli-id 1} - {:document false - :osapuoli-id 2}]} + :osapuoli-id 1 + :osapuoli-type "henkilo"} + {:document false + :osapuoli-id 2 + :osapuoli-type "henkilo"}]} :valvonta-id valvonta-id :yritykset []})))))) @@ -151,6 +155,7 @@ :template-id 10 :description "Kuvaus" :type-specific-data {:osapuoli-specific-data [{:osapuoli-id 1 + :osapuoli-type "yritys" :karajaoikeus-id 1 :haastemies-email "haaste@mie.het" :document true}]}} @@ -185,7 +190,8 @@ :type-specific-data {:osapuoli-specific-data [{:document true :haastemies-email "haaste@mie.het" :karajaoikeus-id 1 - :osapuoli-id 1}]} + :osapuoli-id 1 + :osapuoli-type "yritys"}]} :valvonta-id valvonta-id :yritykset [{:toimitustapa-description nil, :toimitustapa-id 0, diff --git a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_varsinainen_paatos_test.clj b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_varsinainen_paatos_test.clj index 0dc339683..8e60ab850 100644 --- a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_varsinainen_paatos_test.clj +++ b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_varsinainen_paatos_test.clj @@ -99,6 +99,7 @@ :diaarinumero "ARA-05.03.01-2023-159" :type_specific_data {:fine 857 :osapuoli-specific-data [{:osapuoli-id osapuoli-id + :osapuoli-type "henkilo" :hallinto-oikeus-id 1 :document true :recipient-answered true @@ -139,6 +140,7 @@ :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 8572 :osapuoli-specific-data [{:osapuoli-id osapuoli-id + :osapuoli-type "henkilo" :hallinto-oikeus-id 3 :document true :recipient-answered true @@ -200,6 +202,7 @@ :osapuoli-specific-data [{:hallinto-oikeus-id 3 :osapuoli-id 1 + :osapuoli-type "henkilo" :recipient-answered true :document true :statement-sv "Han vet inte. Vi förlotar." @@ -299,6 +302,7 @@ :diaarinumero "ARA-05.03.01-2023-159" :type_specific_data {:fine 857 :osapuoli-specific-data [{:osapuoli-id osapuoli-id + :osapuoli-type "yritys" :hallinto-oikeus-id 1 :document true :recipient-answered true @@ -335,6 +339,7 @@ :description "Tehdään varsinainen päätös, omistaja ei vastannut kuulemiskirjeeseen" :type-specific-data {:fine 857 :osapuoli-specific-data [{:osapuoli-id osapuoli-id + :osapuoli-type "yritys" :hallinto-oikeus-id 4 :statement-fi "ARAn päätökseen ei ole haettu muutosta, eli päätös on lainvoimainen. Maksuun tuomittavan uhkasakon määrä on sama kuin mitä se on ollut ARAn päätöksessä. ARAn näkemyksen mukaan uhkasakko tuomitaan maksuun täysimääräisenä, koska Asianosainen ei ole noudattanut päävelvoitetta lainkaan, eikä ole myöskään esittänyt noudattamatta jättämiselle pätevää syytä." :statement-sv "Placeholder" @@ -396,6 +401,7 @@ :osapuoli-specific-data [{:hallinto-oikeus-id 4, :osapuoli-id 1, + :osapuoli-type "yritys", :recipient-answered false, :document true, :statement-sv "Placeholder", @@ -435,6 +441,7 @@ :description "Tehdään varsinainen päätös, omistaja ei vastannut kuulemiskirjeeseen" :type-specific-data {:fine 857 :osapuoli-specific-data [{:osapuoli-id osapuoli-id + :osapuoli-type "henkilo" :hallinto-oikeus-id 3 :document true :recipient-answered false @@ -476,6 +483,7 @@ :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 :osapuoli-specific-data [{:osapuoli-id osapuoli-id + :osapuoli-type "yritys" :hallinto-oikeus-id 5 :document true :recipient-answered true From 1f59fb3b919513cbe6c1e5ce8f0328d517b31c00 Mon Sep 17 00:00:00 2001 From: Juho Leinonen Date: Mon, 20 Nov 2023 11:31:17 +0200 Subject: [PATCH 2/3] AE-2029: Refactor henkilo and yritys type values to defs --- .../src/main/clj/solita/etp/schema/valvonta_kaytto.clj | 5 ++++- .../main/clj/solita/etp/service/valvonta_kaytto/asha.clj | 8 ++++---- .../clj/solita/etp/service/valvonta_kaytto/osapuoli.clj | 7 ++++--- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj b/etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj index e222308e3..b5c27970b 100644 --- a/etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj +++ b/etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj @@ -48,7 +48,10 @@ (def KarajaoikeusId (apply schema/enum (range 0 20))) -(def OsapuoliType (schema/enum "henkilo" "yritys")) +(def henkilo "henkilo") +(def yritys "yritys") + +(def OsapuoliType (schema/enum henkilo yritys)) (def KaskypaatosVarsinainenPaatosOsapuoliSpecificData (schema/conditional diff --git a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/asha.clj b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/asha.clj index 72809be0f..989961b88 100644 --- a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/asha.clj +++ b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/asha.clj @@ -1,8 +1,8 @@ (ns solita.etp.service.valvonta-kaytto.asha - (:require [clojure.java.io :as io] - [clojure.string :as string] + (:require [clojure.string :as string] [solita.common.time :as time] [solita.etp.service.asha :as asha] + [solita.etp.schema.valvonta-kaytto :as vk-schema] [solita.etp.service.valvonta-kaytto.hallinto-oikeus-attachment :as hao-attachment] [solita.etp.service.valvonta-kaytto.previous-toimenpide-data :as previous-toimenpide] [solita.etp.service.valvonta-kaytto.toimenpide :as toimenpide] @@ -255,8 +255,8 @@ :osapuoli-specific-data (filter toimenpide/osapuoli-has-document?) (map #(select-keys % [:osapuoli-id :osapuoli-type]))) - henkilo-osapuolet-with-documents (map :osapuoli-id (filter #(= (:osapuoli-type %) "henkilo") osapuolet-with-document)) - yritys-osapuolet-with-documents (map :osapuoli-id (filter #(= (:osapuoli-type %) "yritys") osapuolet-with-document))] + henkilo-osapuolet-with-documents (map :osapuoli-id (filter #(= (:osapuoli-type %) vk-schema/henkilo) osapuolet-with-document)) + yritys-osapuolet-with-documents (map :osapuoli-id (filter #(= (:osapuoli-type %) vk-schema/yritys) osapuolet-with-document))] (concat (filter #(contains? (set henkilo-osapuolet-with-documents) (:id %)) (filter osapuoli/henkilo? osapuolet)) (filter #(contains? (set yritys-osapuolet-with-documents) (:id %)) (filter osapuoli/yritys? osapuolet)))) diff --git a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/osapuoli.clj b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/osapuoli.clj index d19503a42..b448f95a6 100644 --- a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/osapuoli.clj +++ b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/osapuoli.clj @@ -1,4 +1,5 @@ -(ns solita.etp.service.valvonta-kaytto.osapuoli) +(ns solita.etp.service.valvonta-kaytto.osapuoli + (:require [solita.etp.schema.valvonta-kaytto :as vk-schema])) (def omistaja? #(= (:rooli-id %) 0)) (def tiedoksi? (complement omistaja?)) @@ -20,5 +21,5 @@ "Given osapuoli map, returns whether the osapuoli is henkilo or yritys" [osapuoli] (if (henkilo? osapuoli) - "henkilo" - "yritys")) \ No newline at end of file + vk-schema/henkilo + vk-schema/yritys)) From a847354dcec4f209c176cecd7d9c1e984643bbc9 Mon Sep 17 00:00:00 2001 From: Juho Leinonen Date: Mon, 20 Nov 2023 15:11:55 +0200 Subject: [PATCH 3/3] AE-2029: Refactor osapuoli-id and osapuoli-type to osapuoli-map in osapuoli-specific-data - Makes it clearer that both need to be checked for osapuoli to match --- .../clj/solita/etp/schema/valvonta_kaytto.clj | 39 +++++++--------- .../etp/service/valvonta_kaytto/asha.clj | 13 +++--- .../toimenpide_type_specific_data.clj | 46 +++++++++---------- .../etp/service/valvonta_kaytto/asha_test.clj | 42 ++++++++--------- .../toimenpide_type_specific_data_test.clj | 25 +++++----- ...skypaatos_tiedoksianto_haastemies_test.clj | 29 ++++++------ .../kaskypaatos_varsinainen_paatos_test.clj | 40 ++++++++-------- .../sakkopaatos_kuulemiskirje_test.clj | 4 +- ...kkopaatos_tiedoksianto_haastemies_test.clj | 31 ++++++------- .../sakkopaatos_varsinainen_paatos_test.clj | 32 ++++++------- 10 files changed, 147 insertions(+), 154 deletions(-) diff --git a/etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj b/etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj index b5c27970b..a516c7c40 100644 --- a/etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj +++ b/etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj @@ -53,12 +53,15 @@ (def OsapuoliType (schema/enum henkilo yritys)) +(def OsapuoliSpecificDataOsapuoli + {:id common-schema/Key + :type OsapuoliType}) + (def KaskypaatosVarsinainenPaatosOsapuoliSpecificData (schema/conditional ;; Osapuoli has a document and has answered to kuulemiskirje, so all fields are required (every-pred toimenpide/osapuoli-has-document? toimenpide/recipient-answered?) - {:osapuoli-id common-schema/Key - :osapuoli-type OsapuoliType + {:osapuoli OsapuoliSpecificDataOsapuoli :hallinto-oikeus-id HallintoOikeusId :document schema/Bool :recipient-answered schema/Bool @@ -69,17 +72,15 @@ ;; Osapuoli has document but has not answered to kuulemiskirje, so answer and statement are not allowed toimenpide/osapuoli-has-document? - {:osapuoli-id common-schema/Key - :osapuoli-type OsapuoliType + {:osapuoli OsapuoliSpecificDataOsapuoli :hallinto-oikeus-id HallintoOikeusId :document schema/Bool :recipient-answered schema/Bool} ;; Osapuoli has no document so no other fields are allowed :else - {:osapuoli-id common-schema/Key - :osapuoli-type OsapuoliType - :document schema/Bool})) + {:osapuoli OsapuoliSpecificDataOsapuoli + :document schema/Bool})) (def KaskypaatosVarsinainenPaatosData {:fine common-schema/NonNegative :osapuoli-specific-data [KaskypaatosVarsinainenPaatosOsapuoliSpecificData] @@ -90,16 +91,14 @@ (def KaskypaatosTiedoksiantoHaastemiesOsapuoliSpecificData (schema/conditional toimenpide/osapuoli-has-document? - {:osapuoli-id common-schema/Key - :osapuoli-type OsapuoliType + {:osapuoli OsapuoliSpecificDataOsapuoli :karajaoikeus-id KarajaoikeusId :haastemies-email common-schema/Email :document schema/Bool} :else - {:osapuoli-id common-schema/Key - :osapuoli-type OsapuoliType - :document schema/Bool})) + {:osapuoli OsapuoliSpecificDataOsapuoli + :document schema/Bool})) (def KaskypaatosTiedoksiantoHaastemiesData {:osapuoli-specific-data [KaskypaatosTiedoksiantoHaastemiesOsapuoliSpecificData]}) @@ -111,8 +110,7 @@ ;; Osapuoli has a document so all fields are required to have values ;; answer-commentary fields are optional but if present, values are required toimenpide/osapuoli-has-document? - {:osapuoli-id common-schema/Key - :osapuoli-type OsapuoliType + {:osapuoli OsapuoliSpecificDataOsapuoli :hallinto-oikeus-id HallintoOikeusId :document schema/Bool :recipient-answered schema/Bool @@ -123,9 +121,8 @@ ;; Osapuoli has no document so no other fields are allowed :else - {:osapuoli-id common-schema/Key - :osapuoli-type OsapuoliType - :document schema/Bool})) + {:osapuoli OsapuoliSpecificDataOsapuoli + :document schema/Bool})) (def SakkopaatosVarsinainenPaatosData {:fine common-schema/NonNegative :osapuoli-specific-data [SakkopaatosVarsinainenPaatosOsapuoliSpecificData] @@ -136,16 +133,14 @@ (def SakkopaatosTiedoksiantoHaastemiesOsapuoliSpecificData (schema/conditional toimenpide/osapuoli-has-document? - {:osapuoli-id common-schema/Key - :osapuoli-type OsapuoliType + {:osapuoli OsapuoliSpecificDataOsapuoli :karajaoikeus-id KarajaoikeusId :haastemies-email common-schema/Email :document schema/Bool} :else - {:osapuoli-id common-schema/Key - :osapuoli-type OsapuoliType - :document schema/Bool})) + {:osapuoli OsapuoliSpecificDataOsapuoli + :document schema/Bool})) (def SakkopaatosTiedoksiantoHaastemiesData {:osapuoli-specific-data [SakkopaatosTiedoksiantoHaastemiesOsapuoliSpecificData]}) diff --git a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/asha.clj b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/asha.clj index 989961b88..0d5323ff3 100644 --- a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/asha.clj +++ b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/asha.clj @@ -93,8 +93,8 @@ :tyyppikohtaiset-tiedot (type-specific-data/format-type-specific-data db toimenpide - (:id osapuoli) - (osapuoli/osapuoli->osapuoli-type osapuoli)) + {:id (:id osapuoli) + :type (osapuoli/osapuoli->osapuoli-type osapuoli)}) :aiemmat-toimenpiteet (previous-toimenpide/formatted-previous-toimenpide-data db toimenpide (:id valvonta))}) (defn- request-id [valvonta-id toimenpide-id] @@ -254,9 +254,9 @@ :type-specific-data :osapuoli-specific-data (filter toimenpide/osapuoli-has-document?) - (map #(select-keys % [:osapuoli-id :osapuoli-type]))) - henkilo-osapuolet-with-documents (map :osapuoli-id (filter #(= (:osapuoli-type %) vk-schema/henkilo) osapuolet-with-document)) - yritys-osapuolet-with-documents (map :osapuoli-id (filter #(= (:osapuoli-type %) vk-schema/yritys) osapuolet-with-document))] + (map :osapuoli)) + henkilo-osapuolet-with-documents (map :id (filter #(= (:type %) vk-schema/henkilo) osapuolet-with-document)) + yritys-osapuolet-with-documents (map :id (filter #(= (:type %) vk-schema/yritys) osapuolet-with-document))] (concat (filter #(contains? (set henkilo-osapuolet-with-documents) (:id %)) (filter osapuoli/henkilo? osapuolet)) (filter #(contains? (set yritys-osapuolet-with-documents) (:id %)) (filter osapuoli/yritys? osapuolet)))) @@ -267,7 +267,8 @@ hallinto-oikeus-id (-> toimenpide :type-specific-data :osapuoli-specific-data - (type-specific-data/find-administrative-court-id-from-osapuoli-specific-data (:id osapuoli) osapuoli-type)) + (type-specific-data/find-administrative-court-id-from-osapuoli-specific-data {:id (:id osapuoli) + :type osapuoli-type})) attachment (hao-attachment/attachment-for-hallinto-oikeus-id db hallinto-oikeus-id)] (store/store-hallinto-oikeus-attachment! aws-s3-client valvonta-id (:id toimenpide) osapuoli attachment) attachment)) diff --git a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data.clj b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data.clj index 6c8eff8bc..0ef72295e 100644 --- a/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data.clj +++ b/etp-backend/src/main/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data.clj @@ -7,12 +7,12 @@ (db/require-queries 'karajaoikeus) (defmulti format-type-specific-data - (fn [_db toimenpide _osapuoli-id _osapuoli-type] (-> toimenpide :type-id toimenpide/type-key))) + (fn [_db toimenpide _osapuoli] (-> toimenpide :type-id toimenpide/type-key))) -(defn- find-value-from-osapuoli-specific-data [key osapuoli-specific-data osapuoli-id osapuoli-type] +(defn- find-value-from-osapuoli-specific-data [key osapuoli-specific-data osapuoli] (->> osapuoli-specific-data - (filter #(= ((juxt :osapuoli-id :osapuoli-type) %) - [osapuoli-id osapuoli-type])) + (filter #(= (:osapuoli %) + osapuoli)) first key)) @@ -28,22 +28,22 @@ (exception/throw-ex-info! {:message (str "Unknown hallinto-oikeus-id: " hallinto-oikeus-id)}))) -(defn format-actual-decision-data [db toimenpide osapuoli-id osapuoli-type] +(defn format-actual-decision-data [db toimenpide osapuoli] (let [recipient-answered? (-> toimenpide :type-specific-data :osapuoli-specific-data - (find-recipient-answered-from-osapuoli-specific-data osapuoli-id osapuoli-type)) + (find-recipient-answered-from-osapuoli-specific-data osapuoli)) hallinto-oikeus-strings (hallinto-oikeus-id->formatted-strings db (-> toimenpide :type-specific-data :osapuoli-specific-data - (find-administrative-court-id-from-osapuoli-specific-data osapuoli-id osapuoli-type)))] + (find-administrative-court-id-from-osapuoli-specific-data osapuoli)))] {:recipient-answered recipient-answered? :vastaus-fi (let [answer-commentary (-> toimenpide :type-specific-data :osapuoli-specific-data - ((partial find-value-from-osapuoli-specific-data :answer-commentary-fi) osapuoli-id osapuoli-type)) + ((partial find-value-from-osapuoli-specific-data :answer-commentary-fi) osapuoli)) recipient-answered-string (if recipient-answered? "Asianosainen antoi vastineen kuulemiskirjeeseen. " "Asianosainen ei vastannut kuulemiskirjeeseen. ")] @@ -51,7 +51,7 @@ :vastaus-sv (let [answer-commentary (-> toimenpide :type-specific-data :osapuoli-specific-data - ((partial find-value-from-osapuoli-specific-data :answer-commentary-sv) osapuoli-id osapuoli-type)) + ((partial find-value-from-osapuoli-specific-data :answer-commentary-sv) osapuoli)) recipient-answered-string (if recipient-answered? "gav ett bemötande till brevet om hörande. " "svarade inte på brevet om hörande. ")] @@ -62,41 +62,41 @@ :statement-fi (-> toimenpide :type-specific-data :osapuoli-specific-data - ((partial find-value-from-osapuoli-specific-data :statement-fi) osapuoli-id osapuoli-type)) + ((partial find-value-from-osapuoli-specific-data :statement-fi) osapuoli)) :statement-sv (-> toimenpide :type-specific-data :osapuoli-specific-data - ((partial find-value-from-osapuoli-specific-data :statement-sv) osapuoli-id osapuoli-type)) + ((partial find-value-from-osapuoli-specific-data :statement-sv) osapuoli)) :department-head-name (-> toimenpide :type-specific-data :department-head-name) :department-head-title-fi (-> toimenpide :type-specific-data :department-head-title-fi) :department-head-title-sv (-> toimenpide :type-specific-data :department-head-title-sv)})) -(defmethod format-type-specific-data :decision-order-actual-decision [db toimenpide osapuoli-id osapuoli-type] - (format-actual-decision-data db toimenpide osapuoli-id osapuoli-type)) +(defmethod format-type-specific-data :decision-order-actual-decision [db toimenpide osapuoli] + (format-actual-decision-data db toimenpide osapuoli)) -(defmethod format-type-specific-data :penalty-decision-actual-decision [db toimenpide osapuoli-id osapuoli-type] - (format-actual-decision-data db toimenpide osapuoli-id osapuoli-type)) +(defmethod format-type-specific-data :penalty-decision-actual-decision [db toimenpide osapuoli] + (format-actual-decision-data db toimenpide osapuoli)) (defn- karajaoikeus-id->name [db id] (first (karajaoikeus-db/find-karajaoikeus-name-by-id db {:karajaoikeus-id id}))) -(defn- format-notice-bailiff [db toimenpide osapuoli-id osapuoli-type] +(defn- format-notice-bailiff [db toimenpide osapuoli] (let [karajaoikeus-id (-> toimenpide :type-specific-data :osapuoli-specific-data - ((partial find-value-from-osapuoli-specific-data :karajaoikeus-id) osapuoli-id osapuoli-type)) + ((partial find-value-from-osapuoli-specific-data :karajaoikeus-id) osapuoli)) haastemies-email (-> toimenpide :type-specific-data :osapuoli-specific-data - ((partial find-value-from-osapuoli-specific-data :haastemies-email) osapuoli-id osapuoli-type))] + ((partial find-value-from-osapuoli-specific-data :haastemies-email) osapuoli))] {:karajaoikeus (karajaoikeus-id->name db karajaoikeus-id) :haastemies-email haastemies-email})) -(defmethod format-type-specific-data :decision-order-notice-bailiff [db toimenpide osapuoli-id osapuoli-type] - (format-notice-bailiff db toimenpide osapuoli-id osapuoli-type)) +(defmethod format-type-specific-data :decision-order-notice-bailiff [db toimenpide osapuoli] + (format-notice-bailiff db toimenpide osapuoli)) -(defmethod format-type-specific-data :penalty-decision-notice-bailiff [db toimenpide osapuoli-id osapuoli-type] - (format-notice-bailiff db toimenpide osapuoli-id osapuoli-type)) +(defmethod format-type-specific-data :penalty-decision-notice-bailiff [db toimenpide osapuoli] + (format-notice-bailiff db toimenpide osapuoli)) -(defmethod format-type-specific-data :default [_ toimenpide _ _] +(defmethod format-type-specific-data :default [_ toimenpide _] (:type-specific-data toimenpide)) diff --git a/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/asha_test.clj b/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/asha_test.clj index f0976f3f9..a23b303a9 100644 --- a/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/asha_test.clj +++ b/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/asha_test.clj @@ -51,12 +51,12 @@ {:department-head-title-fi "Apulaisjohtaja" :department-head-name "Yli Päällikkö" :osapuoli-specific-data [{:hallinto-oikeus-id 1 - :osapuoli-id 2 - :osapuoli-type "henkilo" + :osapuoli {:id 2 + :type "henkilo"} :document true} - {:osapuoli-id 3 - :osapuoli-type "henkilo" - :document false}] + {:osapuoli {:id 3 + :type "henkilo"} + :document false}] :recipient-answered true :statement-sv "Han vet inte. Vi förlotar." :statement-fi "Tämän kerran annetaan anteeksi kun hän ei tiennyt." @@ -119,12 +119,12 @@ (t/is (= (asha/remove-osapuolet-with-no-document {:type-id 8 :type-specific-data {:osapuoli-specific-data [{:hallinto-oikeus-id 1 - :osapuoli-id 1 - :osapuoli-type "henkilo" + :osapuoli {:id 1 + :type "henkilo"} :document true} {:hallinto-oikeus-id 3 - :osapuoli-id 1 - :osapuoli-type "yritys" + :osapuoli {:id 1 + :type "yritys"} :document false}]}} osapuolet) [{:toimitustapa-description nil, @@ -148,12 +148,12 @@ (t/is (= (asha/remove-osapuolet-with-no-document {:type-id 8 :type-specific-data {:osapuoli-specific-data [{:hallinto-oikeus-id 1 - :osapuoli-id 1 - :osapuoli-type "henkilo" + :osapuoli {:id 1 + :type "henkilo"} :document false} {:hallinto-oikeus-id 3 - :osapuoli-id 1 - :osapuoli-type "yritys" + :osapuoli {:id 1 + :type "yritys"} :document true}]}} osapuolet) [{:toimitustapa-description nil, @@ -176,12 +176,12 @@ (t/is (= (asha/remove-osapuolet-with-no-document {:type-id 8 :type-specific-data {:osapuoli-specific-data [{:hallinto-oikeus-id 1 - :osapuoli-id 1 - :osapuoli-type "henkilo" + :osapuoli {:id 1 + :type "henkilo"} :document true} {:hallinto-oikeus-id 3 - :osapuoli-id 1 - :osapuoli-type "yritys" + :osapuoli {:id 1 + :type "yritys"} :document true}]}} osapuolet) osapuolet))))) @@ -190,12 +190,12 @@ (t/is (= (asha/remove-osapuolet-with-no-document {:type-id 8 :type-specific-data {:osapuoli-specific-data [{:hallinto-oikeus-id 1 - :osapuoli-id 2 - :osapuoli-type "henkilo" + :osapuoli {:id 2 + :type "henkilo"} :document true} {:hallinto-oikeus-id 3 - :osapuoli-id 3 - :osapuoli-type "yritys" + :osapuoli {:id 3 + :type "yritys"} :document true}]}} [{:id 2 :etunimi "Testi" diff --git a/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data_test.clj b/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data_test.clj index 49dfd08eb..ae47f09a3 100644 --- a/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data_test.clj +++ b/etp-backend/src/test/clj/solita/etp/service/valvonta_kaytto/toimenpide_type_specific_data_test.clj @@ -12,8 +12,8 @@ ts/*db* {:type-id 8 :type-specific-data {:fine 129 - :osapuoli-specific-data [{:osapuoli-id 1 - :osapuoli-type "henkilo" + :osapuoli-specific-data [{:osapuoli {:id 1 + :type "henkilo"} :hallinto-oikeus-id 0 :document true :recipient-answered true @@ -24,8 +24,8 @@ :department-head-name "Jorma Jormanen" :department-head-title-fi "Hallinto-oikeuden presidentti" :department-head-title-sv "Hallinto-oikeuden kuningas"}} - 1 - "henkilo") + {:id 1 + :type "henkilo"}) {:fine 129 :vastaus-fi "Asianosainen antoi vastineen kuulemiskirjeeseen. Voi anteeksi, en tiennyt." :oikeus-fi "Helsingin hallinto-oikeudelta" @@ -43,7 +43,6 @@ ts/*db* {:type-id 7 :type-specific-data {:fine 800}} - nil nil) {:fine 800}))))) @@ -95,15 +94,15 @@ (t/deftest find-court-id-from-osapuoli-specific-data-test (t/testing "Correct court id is found for the osapuoli" (t/is (= (type-specific-data/find-administrative-court-id-from-osapuoli-specific-data - [{:osapuoli-id 1 - :osapuoli-type "henkilo" + [{:osapuoli {:id 1 + :type "henkilo"} :hallinto-oikeus-id 0} - {:osapuoli-id 3 - :osapuoli-type "henkilo" + {:osapuoli {:id 3 + :type "henkilo"} :hallinto-oikeus-id 5} - {:osapuoli-id 643 - :osapuoli-type "yritys" + {:osapuoli {:id 643 + :type "yritys"} :hallinto-oikeus-id 2}] - 3 - "henkilo") + {:id 3 + :type "henkilo"}) 5)))) diff --git a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_tiedoksianto_haastemies_test.clj b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_tiedoksianto_haastemies_test.clj index b6bc02127..cd85c9b59 100644 --- a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_tiedoksianto_haastemies_test.clj +++ b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_tiedoksianto_haastemies_test.clj @@ -56,14 +56,14 @@ :deadline-date (str (LocalDate/of 2023 7 22)) :template-id 8 :description "Kuvaus" - :type-specific-data {:osapuoli-specific-data [{:osapuoli-id 1 - :osapuoli-type "henkilo" + :type-specific-data {:osapuoli-specific-data [{:osapuoli {:id 1 + :type "henkilo"} :karajaoikeus-id 1 :haastemies-email "haaste@mie.het" :document true} - {:osapuoli-id 2 - :osapuoli-type "yritys" - :document false}]}} + {:osapuoli {:id 2 + :type "yritys"} + :document false}]}} response (ts/handler (-> (mock/request :post (format "/api/private/valvonta/kaytto/%s/toimenpiteet" valvonta-id)) (mock/json-body new-toimenpide) (test-kayttajat/with-virtu-user) @@ -110,12 +110,11 @@ :type-specific-data {:osapuoli-specific-data [{:document true :haastemies-email "haaste@mie.het" :karajaoikeus-id 1 - :osapuoli-id 1 - :osapuoli-type "henkilo" - } - {:document false - :osapuoli-id 2 - :osapuoli-type "yritys"}]} + :osapuoli {:id 1 + :type "henkilo"}} + {:document false + :osapuoli {:id 2 + :type "yritys"}}]} :valvonta-id valvonta-id :yritykset []})))))) @@ -154,8 +153,8 @@ :deadline-date (str (LocalDate/of 2023 7 22)) :template-id 8 :description "Kuvaus" - :type-specific-data {:osapuoli-specific-data [{:osapuoli-id 1 - :osapuoli-type "yritys" + :type-specific-data {:osapuoli-specific-data [{:osapuoli {:id 1 + :type "yritys"} :karajaoikeus-id 1 :haastemies-email "haaste@mie.het" :document true}]}} @@ -190,8 +189,8 @@ :type-specific-data {:osapuoli-specific-data [{:document true :haastemies-email "haaste@mie.het" :karajaoikeus-id 1 - :osapuoli-id 1 - :osapuoli-type "yritys"}]} + :osapuoli {:id 1 + :type "yritys"}}]} :valvonta-id valvonta-id :yritykset [{:toimitustapa-description nil, :toimitustapa-id 0, diff --git a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_varsinainen_paatos_test.clj b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_varsinainen_paatos_test.clj index ae6a028a8..09e925571 100644 --- a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_varsinainen_paatos_test.clj +++ b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/kaskypaatos_varsinainen_paatos_test.clj @@ -100,8 +100,8 @@ :template-id 6 :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 - :osapuoli-specific-data [{:osapuoli-id osapuoli-id - :osapuoli-type "henkilo" + :osapuoli-specific-data [{:osapuoli {:id osapuoli-id + :type "henkilo"} :hallinto-oikeus-id 1 :document true :recipient-answered true @@ -221,8 +221,8 @@ :template-id 6 :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 - :osapuoli-specific-data [{:osapuoli-id osapuoli-id - :osapuoli-type "yritys" + :osapuoli-specific-data [{:osapuoli {:id osapuoli-id + :type "yritys"} :hallinto-oikeus-id 2 :document true :recipient-answered false}] @@ -278,8 +278,8 @@ :department-head-name "Jane Doe", :osapuoli-specific-data [{:hallinto-oikeus-id 2 - :osapuoli-id 1 - :osapuoli-type "yritys" + :osapuoli {:id 1 + :type "yritys"} :document true :recipient-answered false}] :department-head-title-sv "Kungen" @@ -402,8 +402,8 @@ :template-id 6 :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 - :osapuoli-specific-data [{:osapuoli-id osapuoli-id - :osapuoli-type "henkilo" + :osapuoli-specific-data [{:osapuoli {:id osapuoli-id + :type "henkilo"} :hallinto-oikeus-id 1 :document true :recipient-answered true @@ -411,9 +411,9 @@ :answer-commentary-sv "Jag visste inte att ett intyg behövs :(" :statement-fi "Tämän kerran annetaan anteeksi, kun hän ei tiennyt." :statement-sv "Han vet inte. Vi förlotar."} - {:osapuoli-id osapuoli-id-2 - :osapuoli-type "henkilo" - :document false}] + {:osapuoli {:id osapuoli-id-2 + :type "henkilo"} + :document false}] :department-head-title-fi "Apulaisjohtaja" :department-head-title-sv "Apulaisjohtaja på svenska" :department-head-name "Yli Päällikkö"}} @@ -452,8 +452,8 @@ :template-id 6 :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 - :osapuoli-specific-data [{:osapuoli-id osapuoli-id - :osapuoli-type "henkilo" + :osapuoli-specific-data [{:osapuoli {:id osapuoli-id + :type "henkilo"} :hallinto-oikeus-id 3 :document true :recipient-answered false}] @@ -490,8 +490,8 @@ :template-id 6 :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 - :osapuoli-specific-data [{:osapuoli-id osapuoli-id - :osapuoli-type "yritys" + :osapuoli-specific-data [{:osapuoli {:id osapuoli-id + :type "yritys"} :hallinto-oikeus-id 5 :document true :recipient-answered true @@ -662,11 +662,11 @@ :template-id 6 :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 - :osapuoli-specific-data [{:osapuoli-id yritysosapuoli-id - :osapuoli-type "yritys" - :document false} - {:osapuoli-id osapuoli-id - :osapuoli-type "henkilo" + :osapuoli-specific-data [{:osapuoli {:id yritysosapuoli-id + :type "yritys"} + :document false} + {:osapuoli {:id osapuoli-id + :type "henkilo"} :hallinto-oikeus-id 1 :document true :recipient-answered true diff --git a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_kuulemiskirje_test.clj b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_kuulemiskirje_test.clj index 769e11ead..921ba6e33 100644 --- a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_kuulemiskirje_test.clj +++ b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_kuulemiskirje_test.clj @@ -122,8 +122,8 @@ :answer-commentary-sv "Jag visste inte att ett intyg behövs :(" :statement-fi "Tämän kerran annetaan anteeksi, kun hän ei tiennyt." :statement-sv "Han vet inte. Vi förlotar." - :osapuoli-specific-data [{:osapuoli-id osapuoli-id - :osapuoli-type "henkilo" + :osapuoli-specific-data [{:osapuoli {:id osapuoli-id + :type "henkilo"} :hallinto-oikeus-id 1 :document true}] :department-head-title-fi "Apulaisjohtaja" diff --git a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_tiedoksianto_haastemies_test.clj b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_tiedoksianto_haastemies_test.clj index 240b9b42d..d2622ecce 100644 --- a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_tiedoksianto_haastemies_test.clj +++ b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_tiedoksianto_haastemies_test.clj @@ -9,8 +9,7 @@ [solita.etp.service.valvonta-kaytto :as valvonta-service] [solita.etp.test-data.kayttaja :as test-kayttajat] [solita.etp.test-system :as ts]) - (:import (java.time Clock LocalDate)) - ) + (:import (java.time Clock LocalDate))) (t/use-fixtures :each ts/fixture) @@ -57,14 +56,14 @@ :deadline-date (str (LocalDate/of 2023 7 22)) :template-id 10 :description "Kuvaus" - :type-specific-data {:osapuoli-specific-data [{:osapuoli-id 1 - :osapuoli-type "henkilo" + :type-specific-data {:osapuoli-specific-data [{:osapuoli {:id 1 + :type "henkilo"} :karajaoikeus-id 1 :haastemies-email "haaste@mie.het" :document true} - {:osapuoli-id 2 - :osapuoli-type "henkilo" - :document false}]}} + {:osapuoli {:id 2 + :type "henkilo"} + :document false}]}} response (ts/handler (-> (mock/request :post (format "/api/private/valvonta/kaytto/%s/toimenpiteet" valvonta-id)) (mock/json-body new-toimenpide) (test-kayttajat/with-virtu-user) @@ -111,11 +110,11 @@ :type-specific-data {:osapuoli-specific-data [{:document true :haastemies-email "haaste@mie.het" :karajaoikeus-id 1 - :osapuoli-id 1 - :osapuoli-type "henkilo"} - {:document false - :osapuoli-id 2 - :osapuoli-type "henkilo"}]} + :osapuoli {:id 1 + :type "henkilo"}} + {:document false + :osapuoli {:id 2 + :type "henkilo"}}]} :valvonta-id valvonta-id :yritykset []})))))) @@ -154,8 +153,8 @@ :deadline-date (str (LocalDate/of 2023 7 22)) :template-id 10 :description "Kuvaus" - :type-specific-data {:osapuoli-specific-data [{:osapuoli-id 1 - :osapuoli-type "yritys" + :type-specific-data {:osapuoli-specific-data [{:osapuoli {:id 1 + :type "yritys"} :karajaoikeus-id 1 :haastemies-email "haaste@mie.het" :document true}]}} @@ -190,8 +189,8 @@ :type-specific-data {:osapuoli-specific-data [{:document true :haastemies-email "haaste@mie.het" :karajaoikeus-id 1 - :osapuoli-id 1 - :osapuoli-type "yritys"}]} + :osapuoli {:id 1 + :type "yritys"}}]} :valvonta-id valvonta-id :yritykset [{:toimitustapa-description nil, :toimitustapa-id 0, diff --git a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_varsinainen_paatos_test.clj b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_varsinainen_paatos_test.clj index 8e60ab850..c43b77bf3 100644 --- a/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_varsinainen_paatos_test.clj +++ b/etp-backend/src/test/clj/solita/etp/valvonta_kaytto/sakkopaatos_varsinainen_paatos_test.clj @@ -98,8 +98,8 @@ :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :diaarinumero "ARA-05.03.01-2023-159" :type_specific_data {:fine 857 - :osapuoli-specific-data [{:osapuoli-id osapuoli-id - :osapuoli-type "henkilo" + :osapuoli-specific-data [{:osapuoli {:id osapuoli-id + :type "henkilo"} :hallinto-oikeus-id 1 :document true :recipient-answered true @@ -139,8 +139,8 @@ :template-id 9 :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 8572 - :osapuoli-specific-data [{:osapuoli-id osapuoli-id - :osapuoli-type "henkilo" + :osapuoli-specific-data [{:osapuoli {:id osapuoli-id + :type "henkilo"} :hallinto-oikeus-id 3 :document true :recipient-answered true @@ -201,8 +201,8 @@ :department-head-name "Yli Päällikkö" :osapuoli-specific-data [{:hallinto-oikeus-id 3 - :osapuoli-id 1 - :osapuoli-type "henkilo" + :osapuoli {:id 1 + :type "henkilo"} :recipient-answered true :document true :statement-sv "Han vet inte. Vi förlotar." @@ -301,8 +301,8 @@ :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :diaarinumero "ARA-05.03.01-2023-159" :type_specific_data {:fine 857 - :osapuoli-specific-data [{:osapuoli-id osapuoli-id - :osapuoli-type "yritys" + :osapuoli-specific-data [{:osapuoli {:id osapuoli-id + :type "yritys"} :hallinto-oikeus-id 1 :document true :recipient-answered true @@ -338,8 +338,8 @@ :template-id 9 :description "Tehdään varsinainen päätös, omistaja ei vastannut kuulemiskirjeeseen" :type-specific-data {:fine 857 - :osapuoli-specific-data [{:osapuoli-id osapuoli-id - :osapuoli-type "yritys" + :osapuoli-specific-data [{:osapuoli {:id osapuoli-id + :type "yritys"} :hallinto-oikeus-id 4 :statement-fi "ARAn päätökseen ei ole haettu muutosta, eli päätös on lainvoimainen. Maksuun tuomittavan uhkasakon määrä on sama kuin mitä se on ollut ARAn päätöksessä. ARAn näkemyksen mukaan uhkasakko tuomitaan maksuun täysimääräisenä, koska Asianosainen ei ole noudattanut päävelvoitetta lainkaan, eikä ole myöskään esittänyt noudattamatta jättämiselle pätevää syytä." :statement-sv "Placeholder" @@ -400,8 +400,8 @@ :department-head-name "Jane Doe", :osapuoli-specific-data [{:hallinto-oikeus-id 4, - :osapuoli-id 1, - :osapuoli-type "yritys", + :osapuoli {:id 1, + :type "yritys"}, :recipient-answered false, :document true, :statement-sv "Placeholder", @@ -440,8 +440,8 @@ :template-id 9 :description "Tehdään varsinainen päätös, omistaja ei vastannut kuulemiskirjeeseen" :type-specific-data {:fine 857 - :osapuoli-specific-data [{:osapuoli-id osapuoli-id - :osapuoli-type "henkilo" + :osapuoli-specific-data [{:osapuoli {:id osapuoli-id + :type "henkilo"} :hallinto-oikeus-id 3 :document true :recipient-answered false @@ -482,8 +482,8 @@ :template-id 9 :description "Tehdään varsinainen päätös, omistaja vastasi kuulemiskirjeeseen" :type-specific-data {:fine 857 - :osapuoli-specific-data [{:osapuoli-id osapuoli-id - :osapuoli-type "yritys" + :osapuoli-specific-data [{:osapuoli {:id osapuoli-id + :type "yritys"} :hallinto-oikeus-id 5 :document true :recipient-answered true