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

Commit

Permalink
Merge pull request #928 from solita/feature/ae-1814-fixes
Browse files Browse the repository at this point in the history
Feature/ae 1814 fixes
  • Loading branch information
muep authored Jul 7, 2023
2 parents a871f0c + edbb7e3 commit ef7f6f9
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@
{:energiatodistus energiatodistus-schema/Energiatodistus2018}
{:energiatodistus
{:perustiedot
{:postinumero schema/Int}}}
{:nimi schema/Str
:postinumero schema/Int}}}
{:laatija
{:patevyystaso common-schema/Key
:toteamispaivamaara common-schema/Date
Expand All @@ -60,7 +61,8 @@
(deep/map-values second search-fields/computed-fields)
geo-schema/Search))

(def bilingual-fields #{"postinumero.label"})
(def bilingual-fields #{"energiatodistus.perustiedot.nimi"
"postinumero.label"})

(def public-search-schema
(schemas->search-schema
Expand Down Expand Up @@ -192,9 +194,10 @@
:message (str "Unknown predicate: " predicate-name)})))

(defn- expand-bilingual-expression [formatter search-schema predicate field & values]
(let [[fi-sql & fi-values] (apply formatter search-schema predicate (str field "-fi") values)
(let [logical-op (if (= predicate "not ilike") "and" "or")
[fi-sql & fi-values] (apply formatter search-schema predicate (str field "-fi") values)
[sv-sql & sv-values] (apply formatter search-schema predicate (str field "-sv") values)]
(concat [(str "((" fi-sql ")or(" sv-sql "))")]
(concat [(str "((" fi-sql ")" logical-op "(" sv-sql "))")]
fi-values sv-values)))

(defn predicate-expression->sql [search-schema expression]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,7 @@
(def computed-fields
"Computed field consists of sql expression and value schema [sql, schema]"
{:energiatodistus
{:perustiedot
{:nimi ["energiatodistus.pt$nimi_fi || '__' || energiatodistus.pt$nimi_fi" schema/Str]}
:lahtotiedot
{:lahtotiedot
{:rakennusvaippa (deep/deep-merge ua-fields osuus-lampohaviosta-fields)}
:tulokset
{:kaytettavat-energiamuodot
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -666,8 +666,7 @@
energiatodistus-adds
laatija-id)]
(sign-energiatodistukset! (map #(vec [laatija-id %]) energiatodistus-ids))
{:laatija (assoc laatija :id laatija-id)
:energiatodistukset (zipmap energiatodistus-ids energiatodistus-adds)}

(t/testing "Simple search in Finnish"
(let [results (search kayttaja-test-data/paakayttaja
[[["ilike" "postinumero.label" "purola"]]]
Expand All @@ -689,3 +688,44 @@
(t/is (= (count results) 2))
(doseq [et results]
(t/is (= (get-in et [:perustiedot :postinumero]) "49270")))))))

(t/deftest search-by-nimi-both-languages-test
(let [[laatija-id _] (-> (laatija-test-data/generate-and-insert! 1) first)
energiatodistus-adds (concat
(map (fn [et]
(-> et
(assoc-in [:perustiedot :nimi-fi] "Talo 12499")
(assoc-in [:perustiedot :nimi-sv] "Hus 12499")))
(energiatodistus-test-data/generate-adds 1 2018 true))
(energiatodistus-test-data/generate-adds 3 2018 true))
energiatodistus-ids (energiatodistus-test-data/insert!
energiatodistus-adds
laatija-id)]
(sign-energiatodistukset! (map #(vec [laatija-id %]) energiatodistus-ids))

(t/testing "Simple search in Finnish"
(let [results (search kayttaja-test-data/paakayttaja
[[["ilike" "energiatodistus.perustiedot.nimi" "%Talo 12499%"]]]
nil nil nil)]
(t/is (= (count results) 1))
(doseq [et results]
(t/is (= (get-in et [:perustiedot :nimi-fi]) "Talo 12499"))
(t/is (= (get-in et [:perustiedot :nimi-sv]) "Hus 12499")))))
(t/testing "Search in Swedish, using caps"
(let [results (search kayttaja-test-data/paakayttaja
[[["ilike" "energiatodistus.perustiedot.nimi" "%Hus 12499%"]]]
nil nil nil)]
(t/is (= (count results) 1))
(doseq [et results]
(t/is (= (get-in et [:perustiedot :nimi-fi]) "Talo 12499"))
(t/is (= (get-in et [:perustiedot :nimi-sv]) "Hus 12499")))))
(t/testing "Negation"
(let [results (search kayttaja-test-data/paakayttaja
[[["not ilike" "energiatodistus.perustiedot.nimi" "%12499%"]]]
nil nil nil)]
(t/is (= (count results) 3))))
(t/testing "Negation so that it is hitting only one language"
(let [results (search kayttaja-test-data/paakayttaja
[[["not ilike" "energiatodistus.perustiedot.nimi" "Hus 12499"]]]
nil nil nil)]
(t/is (= (count results) 3))))))

0 comments on commit ef7f6f9

Please sign in to comment.