diff --git a/config/dev.edn b/config/dev.edn index 24248471..e0b68e0c 100644 --- a/config/dev.edn +++ b/config/dev.edn @@ -7,17 +7,17 @@ :system "dev"} :db-name "prod-migration2" :jwt-secret "auto ap invoices are awesome" - :aws-access-key-id "AKIAJIS67OSJARD2E6VQ" - :aws-secret-access-key "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" + :aws-access-key-id "AKIAINHACMVQJ6NYD26A" + :aws-secret-access-key "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" :aws-region "us-east-1" :datomic-url "datomic:dev://localhost:4334/dev2" - :invoice-import-queue-url "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-mail-staging" - :background-task-definition "integreat_background-worker_prod" - :requests-queue-url "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-background-request-prod" - :scheduled-jobs-queue-url "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-scheduled-jobs-prod" + :invoice-import-queue-url "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-mail-staging" + :background-task-definition "integreat_background-worker_prod" + :requests-queue-url "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-background-request-prod" + :scheduled-jobs-queue-url "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-scheduled-jobs-prod" :invoice-email "invoices-staging@mail.app.integreatconsult.com" :import-failure-destination-email "bryce@brycecovertoperations.com" - :data-bucket "data.staging.app.integreatconsult.com" + :data-bucket "data.dev.app.integreatconsult.com" :plaid {:base-url "https://sandbox.plaid.com" :client-id "61bfab05f7e762001b323f79" :secret-key "f902743e6f4cef86b7f3b51141aeea"} @@ -41,88 +41,6 @@ :yodlee2-client-secret "8I0mmq1wmAWSSpr9" :yodlee2-base-url "https://sandbox.api.yodlee.com/ysl" :yodlee2-fastlink "https://fl4.sandbox.yodlee.com/authenticate/restserver/fastlink" - - :square-config {"NGE1" - {:square-location "SCX0Y8CTGM1S0", - :location "UC", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGOP" - {:square-location "L3GMNBFARX9GG", - :location "OP", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGDG" - {:square-location "LQTHXQY69MYB6", - :location "DB", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGPG" - {:square-location "AMQ0NPA8FGDEF", - :location "SZ", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGEZ" - {:square-location "L0Z167T2T7W7F", - :location "JS", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGLK" - {:square-location "LRC7WVD77ZM81", - :location "SM", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGA1" - {:square-location "FZ3ZYC77T3W1T", - :location "KA", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGKG" - {:square-location "8JT71V8XGYAT3", - :location "NB", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGEB" - {:square-location "LEV4GM1JPJS6R", - :location "CV", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGGG" - {:square-location "L7S9MXZBJ00HY", - :location "LM", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGRV" - {:square-location "L0J45VZKHWXVR", - :location "RV", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGSM" - {:square-location "LG5X0MHA4NZDM", - :location "SM", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGZO" - {:square-location "KMVFQ9CRCXJ10", - :location "VT", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGWL" - {:square-location "LSWNP14T0YKD9", - :location "WL", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGMJ" - {:square-location "FNH5VRT890WK8", - :location "SC", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGHG" - {:square-location "LXJCAHYGZVNEJ", - :location "DC", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGVZ" - {:square-location "ACNTYY8WVZ6DV", - :location "NP", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGAK" - {:square-location "2RVBYER6QSV7W", - :location "MH", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, - "NGGH" - {:square-location "LT322EK0S2TRD", - :location "FM", - :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"} - "20TY" - {:square-location "L2579ATQ0X1ET", - :location "WG", - :token "EAAAEEr749Ea6AdPTdngsmUPwIM3ETbPwcx3QQl_NS0KWuIL-JNzAg4f3W9DGQhb"}} - :intuit {:client-id "ABBAQI0qeck149vEC1e8tV6b3YJNujOCdwsUMkJ1ZoptzumyYu" :client-secret "7DriIEend1K9RHlzhupIxPFQozXHELLfeFW2GfTR" :redirect-uri "https://developer.intuit.com/v2/OAuth2Playground/RedirectUrl"}} diff --git a/resources/public/output.css b/resources/public/output.css index b46f38d3..daa21bf4 100644 --- a/resources/public/output.css +++ b/resources/public/output.css @@ -1224,14 +1224,14 @@ input:checked + .toggle-bg { margin-top: 0.5rem; } -.mt-5 { - margin-top: 1.25rem; -} - .mt-4 { margin-top: 1rem; } +.mt-5 { + margin-top: 1.25rem; +} + .block { display: block; } @@ -1364,6 +1364,10 @@ input:checked + .toggle-bg { max-width: 42rem; } +.max-w-lg { + max-width: 32rem; +} + .max-w-screen-2xl { max-width: 1536px; } @@ -1372,10 +1376,6 @@ input:checked + .toggle-bg { max-width: 1024px; } -.max-w-lg { - max-width: 32rem; -} - .flex-1 { flex: 1 1 0%; } @@ -1564,24 +1564,18 @@ input:checked + .toggle-bg { margin-bottom: calc(0.75rem * var(--tw-space-y-reverse)); } -.space-y-6 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); -} - -.space-y-8 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(2rem * var(--tw-space-y-reverse)); -} - .space-y-4 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(1rem * var(--tw-space-y-reverse)); } +.space-y-6 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); +} + .divide-y > :not([hidden]) ~ :not([hidden]) { --tw-divide-y-reverse: 0; border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); @@ -1719,6 +1713,11 @@ input:checked + .toggle-bg { background-color: rgb(204 235 251 / var(--tw-bg-opacity)); } +.bg-blue-300 { + --tw-bg-opacity: 1; + background-color: rgb(102 196 242 / var(--tw-bg-opacity)); +} + .bg-blue-500 { --tw-bg-opacity: 1; background-color: rgb(0 156 234 / var(--tw-bg-opacity)); @@ -1774,6 +1773,11 @@ input:checked + .toggle-bg { background-color: rgb(242 248 234 / var(--tw-bg-opacity)); } +.bg-red-100 { + --tw-bg-opacity: 1; + background-color: rgb(255 205 205 / var(--tw-bg-opacity)); +} + .bg-red-50 { --tw-bg-opacity: 1; background-color: rgb(255 230 230 / var(--tw-bg-opacity)); @@ -1793,16 +1797,6 @@ input:checked + .toggle-bg { background-color: rgb(253 246 178 / var(--tw-bg-opacity)); } -.bg-red-100 { - --tw-bg-opacity: 1; - background-color: rgb(255 205 205 / var(--tw-bg-opacity)); -} - -.bg-blue-300 { - --tw-bg-opacity: 1; - background-color: rgb(102 196 242 / var(--tw-bg-opacity)); -} - .bg-opacity-50 { --tw-bg-opacity: 0.5; } @@ -2545,16 +2539,16 @@ input:checked + .toggle-bg { background-color: rgb(24 36 9 / var(--tw-bg-opacity)); } -:is(.dark .dark\:bg-yellow-900) { - --tw-bg-opacity: 1; - background-color: rgb(99 49 18 / var(--tw-bg-opacity)); -} - :is(.dark .dark\:bg-red-900) { --tw-bg-opacity: 1; background-color: rgb(51 1 1 / var(--tw-bg-opacity)); } +:is(.dark .dark\:bg-yellow-900) { + --tw-bg-opacity: 1; + background-color: rgb(99 49 18 / var(--tw-bg-opacity)); +} + :is(.dark .dark\:bg-opacity-80) { --tw-bg-opacity: 0.8; } @@ -2604,6 +2598,11 @@ input:checked + .toggle-bg { color: rgb(175 211 130 / var(--tw-text-opacity)); } +:is(.dark .dark\:text-red-300) { + --tw-text-opacity: 1; + color: rgb(255 104 104 / var(--tw-text-opacity)); +} + :is(.dark .dark\:text-red-400) { --tw-text-opacity: 1; color: rgb(255 53 53 / var(--tw-text-opacity)); @@ -2619,11 +2618,6 @@ input:checked + .toggle-bg { color: rgb(250 202 21 / var(--tw-text-opacity)); } -:is(.dark .dark\:text-red-300) { - --tw-text-opacity: 1; - color: rgb(255 104 104 / var(--tw-text-opacity)); -} - :is(.dark .dark\:placeholder-gray-400)::-moz-placeholder { --tw-placeholder-opacity: 1; color: rgb(156 163 175 / var(--tw-placeholder-opacity)); diff --git a/src/clj/auto_ap/parse/excel.clj b/src/clj/auto_ap/parse/excel.clj index 1f3b21f7..c296ccc2 100644 --- a/src/clj/auto_ap/parse/excel.clj +++ b/src/clj/auto_ap/parse/excel.clj @@ -44,12 +44,14 @@ extract)])) (defn extract-sheet-details [bucket object] - (-> (lambda/invoke {:function-name "xls-extractor" :payload - (json/write-str + (doto + (-> (lambda/invoke {:function-name "xls-extractor" :payload + (json/write-str {"s3_url" object "s3_bucket" bucket})}) - :payload - slurp - json/read-str)) + :payload + slurp + json/read-str) + println)) (defn parse-file [file _] diff --git a/src/clj/auto_ap/routes/ezcater_xls.clj b/src/clj/auto_ap/routes/ezcater_xls.clj index f6296219..b7aeb120 100644 --- a/src/clj/auto_ap/routes/ezcater_xls.clj +++ b/src/clj/auto_ap/routes/ezcater_xls.clj @@ -35,6 +35,7 @@ (map vector headers r))))) (defn map->sales-order [r clients] + (println r) (let [order-number (get r "Order Number") event-date (get r "Event Date") store-name (get r "Store Name") diff --git a/src/clj/auto_ap/solr.clj b/src/clj/auto_ap/solr.clj index 747a82b6..b67edfa4 100644 --- a/src/clj/auto_ap/solr.clj +++ b/src/clj/auto_ap/solr.clj @@ -203,3 +203,34 @@ (index-documents impl index [i]))) +(defrecord InMemSolrClient [data-set-atom] + SolrClient + (index-documents [this index xs] + (swap! data-set-atom + (fn [data-set] + (reduce + (fn [data-set x] + (let [thing (datomic->solr x)] + (update data-set index conj [(str/join " " (vals x)) thing]))) + data-set + xs))) + nil) + + (index-documents-raw [this index xs] + (swap! data-set-atom + (fn [data-set] + (reduce + (fn [data-set x] + (update data-set index conj [(str/join " " (vals x)) x])) + data-set + xs)))) + + (query [this index q] + (filter + (fn [[x e]] + (str/includes? x (get q "query"))) + (get @data-set-atom index))) + (delete [this index] + (swap! data-set-atom dissoc index))) + + diff --git a/test/clj/auto_ap/integration/graphql/accounts.clj b/test/clj/auto_ap/integration/graphql/accounts.clj index c1be61f2..09330b4a 100644 --- a/test/clj/auto_ap/integration/graphql/accounts.clj +++ b/test/clj/auto_ap/integration/graphql/accounts.clj @@ -8,159 +8,159 @@ (use-fixtures :each wrap-setup) -(deftest test-account-search - (testing "It should find matching account names" - @(dc/transact conn [{: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 - )) - 0))) - (testing "It should find exact matches by numbers" - (is (= (count (sut/search {:id (admin-token)} - {:query "51100"} - nil - )) - 1))) - (testing "It should filter out accounts that are not allowed for clients" - @(dc/transact conn [{:account/name "CLIENT SPECIFIC" - :db/ident :client-specific-account - :account/numeric-code 99999 - :account/search-terms "CLIENTSPECIFIC" - :account/applicability :account-applicability/customized - :account/default-allowance :allowance/allowed}]) - (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 [{:client/name "CLIENT" - :db/id "client"} - {:db/ident :client-specific-account - :account/client-overrides [{:account-client-override/client "client" - :account-client-override/name "HI" - :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} - nil)))))) +#_(deftest test-account-search - (testing "It should hide accounts that arent applicable" - @(dc/transact conn [{:account/name "DENIED" - :db/ident :denied-account - :account/numeric-code 99998 - :account/search-terms "DENIED" - :account/applicability :account-applicability/global - :account/default-allowance :allowance/denied - :account/vendor-allowance :allowance/denied - :account/invoice-allowance :allowance/denied}]) - (is (= 0 (count (sut/search {:id (admin-token)} - {:query "DENIED"} - nil)))) - (is (= 0 (count (sut/search {:id (admin-token)} - {:query "DENIED" - :allowance :invoice} - nil)))) - (is (= 0 (count (sut/search {:id (admin-token)} - {:query "DENIED" - :allowance :vendor} - nil))))) - - (testing "It should warn when using a warn account" - @(dc/transact conn [{:account/name "WARNING" - :db/ident :warn-account - :account/numeric-code 99997 - :account/search-terms "WARNING" - :account/applicability :account-applicability/global - :account/default-allowance :allowance/warn - :account/vendor-allowance :allowance/warn - :account/invoice-allowance :allowance/warn}]) + (with-redefs [auto-ap.solr/impl (auto-ap.solr/->InMemSolrClient (atom {}))] + (testing "It should find matching account names" + @(dc/transact conn [{: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 (some? (:warning (first (sut/search {:id (admin-token)} - {:query "WARNING" - :allowance :global} - nil))))) - (is (some? (:warning (first (sut/search {:id (admin-token)} - {:query "WARNING" - :allowance :invoice} - nil))))) - (is (some? (:warning (first (sut/search {:id (admin-token)} - {:query "WARNING" - :allowance :vendor} - nil)))))) - (testing "It should only include admin accounts for admins" - @(dc/transact conn [{:account/name "ADMINONLY" - :db/ident :warn-account - :account/numeric-code 99997 - :account/search-terms "ADMINONLY" - :account/applicability :account-applicability/global - :account/default-allowance :allowance/admin-only - :account/vendor-allowance :allowance/admin-only - :account/invoice-allowance :allowance/admin-only}]) + (clojure.pprint/pprint auto-ap.solr/impl) + (is (> (count (sut/search {:id (admin-token)} + {:query "Food Research"} + nil)) + 0))) + (testing "It should find exact matches by numbers" + (is (= (count (sut/search {:id (admin-token)} + {:query "51100"} + nil)) + 1))) + (testing "It should filter out accounts that are not allowed for clients" + @(dc/transact conn [{:account/name "CLIENT SPECIFIC" + :db/ident :client-specific-account + :account/numeric-code 99999 + :account/search-terms "CLIENTSPECIFIC" + :account/applicability :account-applicability/customized + :account/default-allowance :allowance/allowed}]) (sut/rebuild-search-index) - (is (= 1 (count (sut/search {:id (admin-token)} - {:query "ADMINONLY"} - nil)))) - (is (= 0 (count (sut/search {:id (user-token)} - {:query "ADMINONLY"} - nil))))) + (is (= [] (sut/search {:id (admin-token)} + {:query "CLIENTSPECIFIC"} + nil))) - (testing "It should allow searching for vendor accounts for invoices" - (let [vendor-id (-> @(dc/transact conn [{:account/name "VENDORONLY" - :db/id "vendor-only" - :db/ident :vendor-only - :account/numeric-code 99996 - :account/search-terms "VENDORONLY" - :account/applicability :account-applicability/global - :account/default-allowance :allowance/allowed - :account/vendor-allowance :allowance/allowed - :account/invoice-allowance :allowance/denied} - {:vendor/name "Allowed" - :vendor/default-account "vendor-only" - :db/id "vendor"}]) - :tempids - (get "vendor"))] - (sut/rebuild-search-index) + (testing "It should show up for the client specific version" + (let [client-id (-> @(dc/transact conn [{:client/name "CLIENT" + :db/id "client"} + {:db/ident :client-specific-account + :account/client-overrides [{:account-client-override/client "client" + :account-client-override/name "HI" + :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} + nil)))))) + + (testing "It should hide accounts that arent applicable" + @(dc/transact conn [{:account/name "DENIED" + :db/ident :denied-account + :account/numeric-code 99998 + :account/search-terms "DENIED" + :account/applicability :account-applicability/global + :account/default-allowance :allowance/denied + :account/vendor-allowance :allowance/denied + :account/invoice-allowance :allowance/denied}]) (is (= 0 (count (sut/search {:id (admin-token)} - {:query "VENDORONLY" + {:query "DENIED"} + nil)))) + (is (= 0 (count (sut/search {:id (admin-token)} + {:query "DENIED" :allowance :invoice} nil)))) + (is (= 0 (count (sut/search {:id (admin-token)} + {:query "DENIED" + :allowance :vendor} + nil))))) + (testing "It should warn when using a warn account" + @(dc/transact conn [{:account/name "WARNING" + :db/ident :warn-account + :account/numeric-code 99997 + :account/search-terms "WARNING" + :account/applicability :account-applicability/global + :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} + nil))))) + (is (some? (:warning (first (sut/search {:id (admin-token)} + {:query "WARNING" + :allowance :invoice} + nil))))) + (is (some? (:warning (first (sut/search {:id (admin-token)} + {:query "WARNING" + :allowance :vendor} + nil)))))) + (testing "It should only include admin accounts for admins" + @(dc/transact conn [{:account/name "ADMINONLY" + :db/ident :warn-account + :account/numeric-code 99997 + :account/search-terms "ADMINONLY" + :account/applicability :account-applicability/global + :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 "VENDORONLY" - :allowance :invoice - :vendor_id vendor-id} - nil)))))))) + {:query "ADMINONLY"} + nil)))) + (is (= 0 (count (sut/search {:id (user-token)} + {:query "ADMINONLY"} + nil))))) -(deftest get-graphql - (testing "should retrieve a single account" - @(dc/transact conn [{:account/numeric-code 1 - :account/default-allowance :allowance/allowed - :account/type :account-type/asset - :account/location "A" - :account/name "Test"}]) + (testing "It should allow searching for vendor accounts for invoices" + (let [vendor-id (-> @(dc/transact conn [{:account/name "VENDORONLY" + :db/id "vendor-only" + :db/ident :vendor-only + :account/numeric-code 99996 + :account/search-terms "VENDORONLY" + :account/applicability :account-applicability/global + :account/default-allowance :allowance/allowed + :account/vendor-allowance :allowance/allowed + :account/invoice-allowance :allowance/denied} + {:vendor/name "Allowed" + :vendor/default-account "vendor-only" + :db/id "vendor"}]) + :tempids + (get "vendor"))] + (sut/rebuild-search-index) + (is (= 0 (count (sut/search {:id (admin-token)} + {:query "VENDORONLY" + :allowance :invoice} + nil)))) - (is (= {:name "Test", - :invoice_allowance nil, - :numeric_code 1, - :vendor_allowance nil, - :location "A", - :applicability nil} - (dissoc (first (:accounts (sut/get-graphql {:id (admin-token)} {} nil))) - :id - :type - :default_allowance))))) + (is (= 1 (count (sut/search {:id (admin-token)} + {:query "VENDORONLY" + :allowance :invoice + :vendor_id vendor-id} + nil))))))) + + (deftest get-graphql + (testing "should retrieve a single account" + @(dc/transact conn [{:account/numeric-code 1 + :account/default-allowance :allowance/allowed + :account/type :account-type/asset + :account/location "A" + :account/name "Test"}]) + + (is (= {:name "Test", + :invoice_allowance nil, + :numeric_code 1, + :vendor_allowance nil, + :location "A", + :applicability nil} + (dissoc (first (:accounts (sut/get-graphql {:id (admin-token)} {} nil))) + :id + :type + :default_allowance))))))) (deftest upsert-account (testing "should create a new account" diff --git a/test/clj/auto_ap/integration/routes/ezcater_xls.clj b/test/clj/auto_ap/integration/routes/ezcater_xls.clj index 366c6208..b4712fbd 100644 --- a/test/clj/auto_ap/integration/routes/ezcater_xls.clj +++ b/test/clj/auto_ap/integration/routes/ezcater_xls.clj @@ -9,50 +9,51 @@ (use-fixtures :each wrap-setup) (deftest stream->sales-orders - (testing "Should import nothing when there are no clients" - (with-open [s (io/input-stream (io/resource "sample-ezcater.xlsx"))] - (is (= [:missing "Nick The Greek (Santa Cruz)"] (first (sut/stream->sales-orders s)))))) - (testing "should import for a single client" - (let [{:strs [test-client]} (setup-test-data [(test-client - :db/id "test-client" - :client/code "NGOP" - :client/locations ["DT"] - :client/name "The client" - :client/matches ["Nick the Greek (Elk Grove)"])])] + (with-redefs [auto-ap.solr/impl (auto-ap.solr/->InMemSolrClient (atom {}))] + (testing "Should import nothing when there are no clients" (with-open [s (io/input-stream (io/resource "sample-ezcater.xlsx"))] - (is (seq (sut/stream->sales-orders s)))) - (with-open [s (io/input-stream (io/resource "sample-ezcater.xlsx"))] - (is (= #:sales-order - {:vendor :vendor/ccp-ezcater - :service-charge -95.9 - :date #inst "2023-04-03T18:30:00" - :reference-link "ZA2-320" - :charges - [#:charge{:type-name "CARD" - :date #inst "2023-04-03T18:30:00" - :client test-client - :location "DT" - :external-id - "ezcater/charge/17592186045501-DT-ZA2-320-0" - :processor :ccp-processor/ezcater - :total 516.12 - :tip 0.0}] - :client test-client - :tip 0.0 - :tax 37.12 - :external-id "ezcater/order/17592186045501-DT-ZA2-320" - :total 516.12 - :line-items - [#:order-line-item{:external-id - "ezcater/order/17592186045501-DT-ZA2-320-0" - :item-name "EZCater Catering" - :category "EZCater Catering" - :discount 0.0 - :tax 37.12 - :total 516.12}] - :discount 0.0 - :location "DT" - :returns 0.0} - (last (first (filter (comp #{:order} first) - (sut/stream->sales-orders s)))))))))) + (is (= [:missing "Nick The Greek (Santa Cruz)"] (first (sut/stream->sales-orders s)))))) + (testing "should import for a single client" + (let [{:strs [test-client]} (setup-test-data [(test-client + :db/id "test-client" + :client/code "NGOP" + :client/locations ["DT"] + :client/name "The client" + :client/matches ["Nick the Greek (Elk Grove)"])])] + (with-open [s (io/input-stream (io/resource "sample-ezcater.xlsx"))] + (is (seq (sut/stream->sales-orders s)))) + (with-open [s (io/input-stream (io/resource "sample-ezcater.xlsx"))] + (is (= #:sales-order + {:vendor :vendor/ccp-ezcater + :service-charge -95.9 + :date #inst "2023-04-03T18:30:00" + :reference-link "ZA2-320" + :charges + [#:charge{:type-name "CARD" + :date #inst "2023-04-03T18:30:00" + :client test-client + :location "DT" + :external-id + "ezcater/charge/17592186045501-DT-ZA2-320-0" + :processor :ccp-processor/ezcater + :total 516.12 + :tip 0.0}] + :client test-client + :tip 0.0 + :tax 37.12 + :external-id "ezcater/order/17592186045501-DT-ZA2-320" + :total 516.12 + :line-items + [#:order-line-item{:external-id + "ezcater/order/17592186045501-DT-ZA2-320-0" + :item-name "EZCater Catering" + :category "EZCater Catering" + :discount 0.0 + :tax 37.12 + :total 516.12}] + :discount 0.0 + :location "DT" + :returns 0.0} + (last (first (filter (comp #{:order} first) + (sut/stream->sales-orders s)))))))))))