Skip to content
This repository has been archived by the owner on Feb 7, 2024. It is now read-only.

Commit

Permalink
Approach for testing that does not work
Browse files Browse the repository at this point in the history
  • Loading branch information
solita-juhohaa committed Dec 8, 2023
1 parent e785491 commit 36576d9
Showing 1 changed file with 123 additions and 18 deletions.
141 changes: 123 additions & 18 deletions etp-backend/src/test/clj/solita/etp/service/aineisto_test.clj
Original file line number Diff line number Diff line change
@@ -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)

Expand Down Expand Up @@ -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))))))

0 comments on commit 36576d9

Please sign in to comment.