From 36576d9df4bdf53fcb5cee0ea2f24f218a7365f9 Mon Sep 17 00:00:00 2001 From: Juho Haapakoski Date: Fri, 8 Dec 2023 14:08:29 +0200 Subject: [PATCH] Approach for testing that does not work --- .../clj/solita/etp/service/aineisto_test.clj | 141 +++++++++++++++--- 1 file changed, 123 insertions(+), 18 deletions(-) diff --git a/etp-backend/src/test/clj/solita/etp/service/aineisto_test.clj b/etp-backend/src/test/clj/solita/etp/service/aineisto_test.clj index 23b001835..0be453a71 100644 --- a/etp-backend/src/test/clj/solita/etp/service/aineisto_test.clj +++ b/etp-backend/src/test/clj/solita/etp/service/aineisto_test.clj @@ -1,9 +1,20 @@ (ns solita.etp.service.aineisto-test (:require [solita.etp.service.aineisto :as aineisto] - [solita.etp.test-system :as ts] + [solita.etp.test-data.generators :as generators] + [solita.etp.test-data.laatija :as test-data.laatija] [clojure.test :as t] - [clojure.java.jdbc :as jdbc]) - (:import (java.time Instant))) + [jsonista.core :as j] + [ring.mock.request :as mock] + [solita.etp.test-data.kayttaja :as test-kayttajat] + [solita.etp.test-system :as ts] + [solita.etp.test-data.energiatodistus :as energiatodistus-test-data] + [solita.etp.test-data.laatija :as laatija-test-data] + [solita.etp.service.energiatodistus-search-test :as energiatodistus-search-test] + [clojure.java.jdbc :as jdbc] + [solita.etp.test-data.energiatodistus :as test-data.energiatodistus] + [solita.etp.service.file :as file]) + (:import (java.time Instant) + (java.io BufferedReader InputStreamReader))) (t/use-fixtures :each ts/fixture) @@ -75,20 +86,114 @@ actual-ip]) (t/is (true? (aineisto/check-access ts/*db*, user-id-with-allowed-ip, allowed-aineisto-type, actual-ip))))) +(defn read-line-from-input-stream [input-stream] + (let [reader (BufferedReader. (InputStreamReader. input-stream))] + (.readLine reader) + )) + (t/deftest update-aineistot-test - (let [] - (t/testing "Aineistot don't exist before generating" - (t/is (not (solita.etp.service.file/file-exists? ts/*aws-s3-client* "/aineistot/1/energiatodistukset.csv"))) - (t/is (not (solita.etp.service.file/file-exists? ts/*aws-s3-client* "/aineistot/2/energiatodistukset.csv"))) - (t/is (not (solita.etp.service.file/file-exists? ts/*aws-s3-client* "/aineistot/3/energiatodistukset.csv")))) - (t/testing "Aineistot exist after generating" - (aineisto/update-aineistot-in-s3! ts/*db* {:id -5 :rooli 2} ts/*aws-s3-client*) - (t/is (solita.etp.service.file/file-exists? ts/*aws-s3-client* "/aineistot/1/energiatodistukset.csv")) - (t/is (solita.etp.service.file/file-exists? ts/*aws-s3-client* "/aineistot/2/energiatodistukset.csv")) - (t/is (solita.etp.service.file/file-exists? ts/*aws-s3-client* "/aineistot/3/energiatodistukset.csv"))) - #_(t/testing "Adding some new energiatodistus has an effect on the aineistot" - ;;TODO: Could get object size via GetObjectAttributes request parameter `x-amz-object-attributes ObjectSize` - ;; and look that the size increases when energiatodistus is added and aineistot generated again. - ;; Might be too heavy of an operation and takes time to implement. + (t/testing "Aineistot don't exist before generating" + (t/is (false? (file/file-exists? ts/*aws-s3-client* "/aineistot/1/energiatodistukset.csv"))) + (t/is (false? (file/file-exists? ts/*aws-s3-client* "/aineistot/2/energiatodistukset.csv"))) + (t/is (false? (file/file-exists? ts/*aws-s3-client* "/aineistot/3/energiatodistukset.csv")))) + (t/testing "Aineistot exist after generating" + (aineisto/update-aineistot-in-s3! ts/*db* {:id -5 :rooli 2} ts/*aws-s3-client*) + (t/is (true? (file/file-exists? ts/*aws-s3-client* "/aineistot/1/energiatodistukset.csv"))) + (t/is (true? (file/file-exists? ts/*aws-s3-client* "/aineistot/2/energiatodistukset.csv"))) + (t/is (true? (file/file-exists? ts/*aws-s3-client* "/aineistot/3/energiatodistukset.csv")))) + (t/testing "Adding some new energiatodistus has an effect on the aineistot" + ;; Lisää aineistot + (aineisto/update-aineistot-in-s3! ts/*db* {:id -5 :rooli 2} ts/*aws-s3-client*) + ;;Katso aineistoa lisäämisen jälkeen + (with-open [aineisto1 (file/find-file ts/*aws-s3-client* "/aineistot/3/energiatodistukset.csv")] + (let [line-1-1-insert (read-line-from-input-stream aineisto1) + line-1-2-insert (read-line-from-input-stream aineisto1)] + (let [_ (laatija-test-data/insert! (laatija-test-data/generate-adds 1)) + energiatodistus-adds (energiatodistus-test-data/generate-adds 1 2018 true) + ;; Lisää todistukset + ids (energiatodistus-test-data/insert! energiatodistus-adds 1)] + ;; Allekirjoita todistukset + (energiatodistus-search-test/sign-energiatodistukset! (map vector (repeatedly (constantly 1)) ids)) + ;; Päivitä aineistot + (aineisto/update-aineistot-in-s3! ts/*db* {:id -5 :rooli 2} ts/*aws-s3-client*) + ;; Hae aineisto uudelleen + (with-open [aineisto2 (file/find-file ts/*aws-s3-client* "/aineistot/3/energiatodistukset.csv")] + (let [line-2-1-insert (read-line-from-input-stream aineisto2) + line-2-2-insert (read-line-from-input-stream aineisto2)] + ;; Nyt pitäisi olla eri line1-2 ja line 2-2... mutta molemmat onkin tyhjiä. + ;; Eli pelkästään otsikkorivi on paikallaan. + (println "READ line1-1: " (count line-1-1-insert)) + (println "READ line1-2: " (count line-1-2-insert)) + (println "READ line2-1: " (count line-2-1-insert)) + (println "READ line2-2: " (count line-2-2-insert))) + (println (str ids)))))))) + +(t/deftest test-that-finds-something-in-the-csv + (t/testing "Energiatodistus is in the csv" + (let [; Add laatija + laatija-id (first (keys (test-data.laatija/generate-and-insert! 1))) + + ; Generate two different rakennustunnus + rakennustunnus-1 (generators/generate-rakennustunnus) + rakennustunnus-2 (generators/generate-rakennustunnus) + + ; Create two energiatodistus. One with rakennustunnus 1, one with rakennustunnus 2. + todistus-1 (-> (test-data.energiatodistus/generate-add 2018 true) (assoc-in [:perustiedot :rakennustunnus] rakennustunnus-1)) + todistus-2 (-> (test-data.energiatodistus/generate-add 2018 true) (assoc-in [:perustiedot :rakennustunnus] rakennustunnus-2)) + + ; Insert todistus-1 + [todistus-1-id] (test-data.energiatodistus/insert! [todistus-1] laatija-id)] + + ; Sign todistus-1 + (test-data.energiatodistus/sign! todistus-1-id laatija-id true) + + ; Update aineistot (aineisto/update-aineistot-in-s3! ts/*db* {:id -5 :rooli 2} ts/*aws-s3-client*) - ))) + + ; Read lines from csv + (with-open [aineisto1 (file/find-file ts/*aws-s3-client* "/aineistot/2/energiatodistukset.csv")] + (let [line-1-1 (read-line-from-input-stream aineisto1) + line-1-2 (read-line-from-input-stream aineisto1)] + ;; Nyt tässä on otsikkorivi + (println (str "Line 1-1?" line-1-1)) + ;; Tässä pitäisi olla todistus-1, mutta onkin tyhjä + (println (str "Line 1-2" line-1-2))))))) +#_(t/deftest search-energiatodistus + (laatija-test-data/insert! (laatija-te t-data/generate-adds 1)) + + (test-kayttajat/insert-virtu-paakayttaja!) + (let [energiatodistus-adds (concat + (map (fn [et] + (-> et + (assoc-in [:lahtotiedot :lammitys :lammitysmuoto-1 :id] 1) + (assoc-in [:lahtotiedot :lammitys :lammitysmuoto-2 :id] 2))) + (energiatodistus-test-data/generate-adds 1 2018 true)) + (map (fn [et] + (-> et + (assoc-in [:lahtotiedot :lammitys :lammitysmuoto-1 :id] 2) + (assoc-in [:lahtotiedot :lammitys :lammitysmuoto-2 :id] 1))) + (energiatodistus-test-data/generate-adds 1 2018 true)) + (map (fn [et] + (-> et + (assoc-in [:lahtotiedot :lammitys :lammitysmuoto-1 :id] 3) + (assoc-in [:lahtotiedot :lammitys :lammitysmuoto-2 :id] 4))) + (energiatodistus-test-data/generate-adds 2 2018 true))) + ids (energiatodistus-test-data/insert! energiatodistus-adds 1)] + (energiatodistus-search-test/sign-energiatodistukset! (map vector (repeatedly (constantly 1)) ids)) + (t/testing "Haku ilman parametrejä palauttaa kaikki energiatodisukset" + (let [response (ts/handler (-> (mock/request :get "/api/private/energiatodistukset") + (test-kayttajat/with-virtu-user) + (mock/header "Accept" "application/json"))) + response-body (j/read-value (:body response) j/keyword-keys-object-mapper)] + (t/is (= (:status response) 200)) + (t/is (= (count response-body) 4)))) + (t/testing "Haku löytää energiatodistukset, joissa kumpi tahansa lämmitysmuoto on haettu" + (let [response (ts/handler (-> (mock/request :get "/api/private/energiatodistukset?where=%5B%5B%5B%22%3D%22%2C%22energiatodistus.lahtotiedot.lammitys.lammitysmuoto.id%22%2C1%5D%5D%5D") + (test-kayttajat/with-virtu-user) + (mock/header "Accept" "application/json"))) + response-body (j/read-value (:body response) j/keyword-keys-object-mapper)] + (t/is (= (:status response) 200)) + (t/is (= (count response-body) 2)) + (t/is (every? (fn [et] (or (= (->> et :lahtotiedot :lammitys :lammitysmuoto-1 :id) 1) + (= (->> et :lahtotiedot :lammitys :lammitysmuoto-2 :id) 1))) + response-body)))))) \ No newline at end of file