All tests pass again.
This commit is contained in:
2043
resources/schema.edn
Normal file
2043
resources/schema.edn
Normal file
File diff suppressed because it is too large
Load Diff
@@ -129,28 +129,18 @@
|
||||
allowance
|
||||
search-pattern)
|
||||
(sequence xform))
|
||||
(->> (dc/q '[:find ?n (pull ?i pattern) ?s
|
||||
:in $ ?q ?allowance pattern
|
||||
:where [(fulltext $ :account/search-terms ?q) [[?i ?n _ ?s]]]
|
||||
[?i :account/numeric-code ?numeric-code]
|
||||
(or [?i :account/applicability :account-applicability/global]
|
||||
[?i :account/applicability :account-applicability/optional])]
|
||||
(->> (dc/q '[:find ?n (pull ?i pattern) ?s
|
||||
:in $ [[?i ?n ?s]] pattern
|
||||
:where (or [?i :account/applicability :account-applicability/global]
|
||||
[?i :account/applicability :account-applicability/optional])]
|
||||
(dc/db conn)
|
||||
query
|
||||
allowance
|
||||
(search/search {:q query} "account")
|
||||
search-pattern)
|
||||
(concat (when client
|
||||
(dc/q '[:find ?n (pull ?a pattern) ?s
|
||||
:in $ ?c ?q ?allowance pattern
|
||||
:where
|
||||
[?i :account-client-override/client ?c]
|
||||
[(fulltext $ :account-client-override/search-terms ?q) [[?i ?n _ ?s]]]
|
||||
[?a :account/client-overrides ?i]
|
||||
[?a :account/numeric-code ?numeric-code]]
|
||||
(dc/q '[:find ?n (pull ?i pattern) ?s
|
||||
:in $ [[?i ?n ?s]] pattern]
|
||||
(dc/db conn)
|
||||
client
|
||||
query
|
||||
allowance
|
||||
(search/search {:q query :client (str client)} "account-client-override")
|
||||
search-pattern)))
|
||||
(sort-by (comp - last))
|
||||
(sequence xform)))
|
||||
@@ -166,6 +156,7 @@
|
||||
(dc/db conn)))
|
||||
:when (:account/numeric-code (:account/_client-overrides result))]
|
||||
{:id (:db/id (:account/_client-overrides result))
|
||||
:account-client-override-id (:db/id result)
|
||||
:text (:account-client-override/search-terms result)
|
||||
:client (str (:db/id (:account-client-override/client result)))
|
||||
:numeric-code (:account/numeric-code (:account/_client-overrides result))
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
(ns auto-ap.search
|
||||
(:require [config.core :refer [env]])
|
||||
(:import
|
||||
(java.nio.file Paths)
|
||||
(org.apache.lucene.analysis.standard StandardAnalyzer)
|
||||
@@ -9,7 +10,7 @@
|
||||
(org.apache.lucene.store FSDirectory)))
|
||||
|
||||
(defn full-index-query [results index-name]
|
||||
(let [directory (FSDirectory/open (Paths/get (java.net.URI. (str "file:///tmp/" index-name))))
|
||||
(let [directory (FSDirectory/open (Paths/get (java.net.URI. (str "file:///tmp/search" (:dd-env env) "/" index-name))))
|
||||
analyzer (StandardAnalyzer.)
|
||||
index-writer-config (IndexWriterConfig. analyzer)
|
||||
index-writer (IndexWriter. directory index-writer-config)]
|
||||
@@ -52,20 +53,21 @@
|
||||
([n index-name]
|
||||
(search n index-name []))
|
||||
([n index-name other-keys]
|
||||
(let [directory (FSDirectory/open (Paths/get (java.net.URI. (str "file:///tmp/" index-name))))
|
||||
(let [directory (FSDirectory/open (Paths/get (java.net.URI. (str "file:///tmp/search" (:dd-env env) "/" index-name))))
|
||||
index-reader (DirectoryReader/open directory)
|
||||
index-searcher (IndexSearcher. index-reader)]
|
||||
(for [x (seq (.scoreDocs (.search index-searcher (make-query n) 10)))]
|
||||
(into
|
||||
[(.get (.doc index-searcher (.-doc x)) "id")
|
||||
(.get (.doc index-searcher (.-doc x)) "name")]
|
||||
[(Long/parseLong (.get (.doc index-searcher (.-doc x)) "id"))
|
||||
(.get (.doc index-searcher (.-doc x)) "name")
|
||||
(.-score x)]
|
||||
(map (fn [o]
|
||||
(.get (.doc index-searcher (.-doc x)) o))
|
||||
other-keys)))))
|
||||
)
|
||||
|
||||
(defn search-ids [n index-name]
|
||||
(let [directory (FSDirectory/open (Paths/get (java.net.URI. (str "file:///tmp/" index-name))))
|
||||
(let [directory (FSDirectory/open (Paths/get (java.net.URI. (str "file:///tmp/search" (:dd-env env) "/" index-name))))
|
||||
index-reader (DirectoryReader/open directory)
|
||||
index-searcher (IndexSearcher. index-reader)]
|
||||
(for [x (seq (.scoreDocs (.search index-searcher (make-query n) 100)))]
|
||||
|
||||
@@ -9,6 +9,13 @@
|
||||
|
||||
(deftest test-account-search
|
||||
(testing "It should find matching account names"
|
||||
(dc/transact conn {:tx-data [{:account/name "Food Research"
|
||||
:db/ident :client-specific-account
|
||||
:account/numeric-code 51100
|
||||
:account/search-terms "Food Research"
|
||||
:account/applicability :account-applicability/global
|
||||
:account/default-allowance :allowance/allowed}]})
|
||||
(sut/rebuild-search-index)
|
||||
(is (> (count (sut/search {:id (admin-token)}
|
||||
{:query "Food Research"}
|
||||
nil
|
||||
@@ -16,7 +23,7 @@
|
||||
0)))
|
||||
(testing "It should find exact matches by numbers"
|
||||
(is (= (count (sut/search {:id (admin-token)}
|
||||
{:query "5110"}
|
||||
{:query "51100"}
|
||||
nil
|
||||
))
|
||||
1)))
|
||||
@@ -27,10 +34,11 @@
|
||||
:account/search-terms "CLIENTSPECIFIC"
|
||||
:account/applicability :account-applicability/customized
|
||||
:account/default-allowance :allowance/allowed}]})
|
||||
(is (= 0 (count (sut/search {:id (admin-token)}
|
||||
{:query "CLIENTSPECIFIC"}
|
||||
nil
|
||||
))))
|
||||
(sut/rebuild-search-index)
|
||||
(is (= [] (sut/search {:id (admin-token)}
|
||||
{:query "CLIENTSPECIFIC"}
|
||||
nil
|
||||
)))
|
||||
|
||||
(testing "It should show up for the client specific version"
|
||||
(let [client-id (-> (dc/transact conn {:tx-data [{:client/name "CLIENT"
|
||||
@@ -41,6 +49,7 @@
|
||||
:account-client-override/search-terms "HELLOWORLD"}]}]})
|
||||
:tempids
|
||||
(get "client"))]
|
||||
(sut/rebuild-search-index)
|
||||
(is (= 1 (count (sut/search {:id (admin-token)}
|
||||
{:query "HELLOWORLD"
|
||||
:client_id client-id}
|
||||
@@ -76,6 +85,7 @@
|
||||
:account/default-allowance :allowance/warn
|
||||
:account/vendor-allowance :allowance/warn
|
||||
:account/invoice-allowance :allowance/warn}]})
|
||||
(sut/rebuild-search-index)
|
||||
(is (some? (:warning (first (sut/search {:id (admin-token)}
|
||||
{:query "WARNING"
|
||||
:allowance :global}
|
||||
@@ -97,10 +107,11 @@
|
||||
:account/default-allowance :allowance/admin-only
|
||||
:account/vendor-allowance :allowance/admin-only
|
||||
:account/invoice-allowance :allowance/admin-only}]})
|
||||
(sut/rebuild-search-index)
|
||||
(is (= 1 (count (sut/search {:id (admin-token)}
|
||||
{:query "ADMINONLY"}
|
||||
nil))))
|
||||
(is (= 0 (count (sut/search {:id (user-token 1)}
|
||||
(is (= 0 (count (sut/search {:id (user-token)}
|
||||
{:query "ADMINONLY"}
|
||||
nil)))))
|
||||
|
||||
@@ -120,6 +131,7 @@
|
||||
:db/id "vendor"}]})
|
||||
:tempids
|
||||
(get "vendor"))]
|
||||
(sut/rebuild-search-index)
|
||||
(is (= 0 (count (sut/search {:id (admin-token)}
|
||||
{:query "VENDORONLY"
|
||||
:allowance :invoice}
|
||||
@@ -130,5 +142,3 @@
|
||||
:allowance :invoice
|
||||
:vendor_id vendor-id}
|
||||
nil))))))))
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,17 @@
|
||||
(ns auto-ap.integration.util
|
||||
(:require
|
||||
[auto-ap.datomic :refer [conn uri]]
|
||||
[clj-time.core :as time]
|
||||
[datomic.api :as dc]
|
||||
[auto-ap.datomic.migrate :as migrate])
|
||||
)
|
||||
(:require [datomic.client.api :as dc]
|
||||
[auto-ap.datomic :refer [client conn transact-schema]]
|
||||
[clj-time.core :as time]))
|
||||
|
||||
(defn wrap-setup
|
||||
[f]
|
||||
(with-redefs [auto-ap.datomic/uri "datomic:mem://datomic-transactor:4334/invoice"]
|
||||
(dc/create-database uri)
|
||||
(with-redefs [auto-ap.datomic/conn (dc/connect uri)]
|
||||
(migrate/migrate conn)
|
||||
(with-redefs [auto-ap.datomic/client (dc/client {:server-type :dev-local
|
||||
:system "dev"})]
|
||||
(dc/create-database client {:db-name "test"})
|
||||
(with-redefs [auto-ap.datomic/conn (dc/connect client {:db-name "test"})]
|
||||
(transact-schema conn)
|
||||
(f)
|
||||
(dc/delete-database uri))))
|
||||
|
||||
(dc/delete-database client {:db-name "test"}))))
|
||||
|
||||
(defn admin-token []
|
||||
{:user "TEST ADMIN"
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
(ns auto-ap.routes.invoice-test
|
||||
(:require
|
||||
[auto-ap.datomic :refer [conn]]
|
||||
[auto-ap.integration.util :refer [user-token wrap-setup]]
|
||||
[auto-ap.datomic.clients :refer [rebuild-search-index]]
|
||||
[auto-ap.integration.util :refer [admin-token wrap-setup]]
|
||||
[auto-ap.routes.invoices :as sut]
|
||||
[datomic.client.api :as dc]
|
||||
[clj-time.coerce :as coerce]
|
||||
[clojure.test :as t]))
|
||||
[clojure.test :as t]
|
||||
[datomic.client.api :as dc]))
|
||||
|
||||
(t/use-fixtures :each wrap-setup)
|
||||
|
||||
(def user (user-token))
|
||||
(def user (admin-token))
|
||||
|
||||
(def client {:client/code "ABC"
|
||||
:client/name "ABC"
|
||||
@@ -39,6 +40,7 @@
|
||||
(t/deftest import-uploaded-invoices
|
||||
(t/testing "It should import one"
|
||||
(dc/transact conn {:tx-data [client expense-account vendor]})
|
||||
(rebuild-search-index)
|
||||
|
||||
(t/is (= 0 (invoice-count-for-client [:client/code "ABC"])))
|
||||
(sut/import-uploaded-invoice user [(assoc invoice :customer-identifier "ABC")])
|
||||
|
||||
Reference in New Issue
Block a user