First commit. Taken from open source branch of internal sample-tracking application.
This commit is contained in:
28
test/clj/org/parkerici/sample_tracking/api/export_test.clj
Normal file
28
test/clj/org/parkerici/sample_tracking/api/export_test.clj
Normal file
@@ -0,0 +1,28 @@
|
||||
(ns org.parkerici.sample-tracking.api.export-test
|
||||
(:require [clojure.test :refer :all]
|
||||
[clojure.data.csv :as csv]
|
||||
[ring.mock.request :as rm]
|
||||
[org.parkerici.sample-tracking.test-utils :as tu]))
|
||||
|
||||
(deftest export-collected-samples-test
|
||||
[]
|
||||
(let [kit-request-body (tu/kit-request-body)
|
||||
create-response (tu/standard-web-app (-> (rm/request :post "/api/kit")
|
||||
(rm/json-body kit-request-body)))
|
||||
created-uuid (tu/get-response-uuid create-response)
|
||||
export-response (tu/admin-authed-web-app (rm/request :get "/api/sample/export" {:uuid created-uuid}))
|
||||
export-csv (csv/read-csv (slurp (:body export-response)))]
|
||||
(is (= 4 (count export-csv)))
|
||||
(is (= 23 (count (first export-csv))))))
|
||||
|
||||
(deftest export-all-samples-test
|
||||
[]
|
||||
(let [kit-request-body (tu/kit-request-body)
|
||||
create-response (tu/standard-web-app (-> (rm/request :post "/api/kit")
|
||||
(rm/json-body kit-request-body)))
|
||||
created-uuid (tu/get-response-uuid create-response)
|
||||
export-response (tu/admin-authed-web-app
|
||||
(rm/request :get "/api/sample/export" {:uuid created-uuid :uncollected true}))
|
||||
export-csv (csv/read-csv (slurp (:body export-response)))]
|
||||
(is (= 15 (count export-csv)))
|
||||
(is (= 23 (count (first export-csv))))))
|
||||
91
test/clj/org/parkerici/sample_tracking/api/kit_test.clj
Normal file
91
test/clj/org/parkerici/sample_tracking/api/kit_test.clj
Normal file
@@ -0,0 +1,91 @@
|
||||
(ns org.parkerici.sample-tracking.api.kit-test
|
||||
(:require [clojure.test :refer :all]
|
||||
[ring.mock.request :as rm]
|
||||
[org.parkerici.sample-tracking.test-utils :as tu]))
|
||||
|
||||
(deftest create-kit-test
|
||||
[]
|
||||
(let [initial-kit-list (tu/get-kit-list {:complete "true"})
|
||||
kit-request-body (tu/kit-request-body)
|
||||
create-response (tu/standard-web-app (-> (rm/request :post "/api/kit")
|
||||
(rm/json-body kit-request-body)))
|
||||
created-uuid (tu/get-response-uuid create-response)
|
||||
post-create-kit-list (tu/get-kit-list {:complete "true"})
|
||||
created-kit (first (filter #(= (:uuid %) created-uuid) post-create-kit-list))]
|
||||
(is (some? created-uuid))
|
||||
(is (some? created-kit))
|
||||
(is (= 1 (- (count post-create-kit-list) (count initial-kit-list))))))
|
||||
|
||||
(deftest share-kit-test
|
||||
[]
|
||||
(let [initial-incomplete-kit-list (tu/get-kit-list {:complete "false"})
|
||||
initial-complete-kit-list (tu/get-kit-list {:complete "true"})
|
||||
complete-kit-request-body (tu/kit-request-body)
|
||||
share-kit-request-body (dissoc complete-kit-request-body :samples :completing-email)
|
||||
share-response (tu/standard-web-app (-> (rm/request :post "/api/kit/share")
|
||||
(rm/json-body share-kit-request-body)))
|
||||
shared-uuid (tu/get-response-uuid share-response)
|
||||
created-kit (first (tu/get-response-items (tu/standard-web-app (rm/request :get "/api/kit/share" {:uuid shared-uuid}))))
|
||||
post-share-incomplete-kit-list (tu/get-kit-list {:complete "false"})
|
||||
shared-kit-from-list (first (filter #(= (:uuid %) shared-uuid) post-share-incomplete-kit-list))
|
||||
submit-response (tu/standard-web-app (-> (rm/request :post "/api/kit")
|
||||
(rm/json-body (assoc complete-kit-request-body :uuid shared-uuid))))
|
||||
submitted-uuid (tu/get-response-uuid submit-response)
|
||||
submitted-kit-from-share (first (tu/get-response-items (tu/standard-web-app (rm/request :get "/api/kit/share" {:uuid shared-uuid}))))
|
||||
post-submitted-incomplete-kit-list (tu/get-kit-list {:complete "false"})
|
||||
post-submitted-complete-kit-list (tu/get-kit-list {:complete "true"})
|
||||
incomplete-submitted-kit (first (filter #(= (:uuid %) shared-uuid) post-submitted-incomplete-kit-list))
|
||||
complete-submitted-kit (first (filter #(= (:uuid %) shared-uuid) post-submitted-complete-kit-list))]
|
||||
(is (some? shared-uuid))
|
||||
(is (some? submitted-uuid))
|
||||
(= shared-uuid submitted-uuid) ; The UUID returned from the share endpoint should stay the same after submitting
|
||||
(is (some? created-kit))
|
||||
(is (some? shared-kit-from-list))
|
||||
(is (nil? submitted-kit-from-share)) ; Users should not be able to access a submitted kit via share
|
||||
(is (nil? incomplete-submitted-kit)) ; Submitted kit should not be available in incomplete list
|
||||
(is (some? complete-submitted-kit))
|
||||
(is (= 1 (- (count post-share-incomplete-kit-list) (count initial-incomplete-kit-list))))
|
||||
(is (= 1 (- (count post-submitted-complete-kit-list) (count initial-complete-kit-list))))))
|
||||
|
||||
(deftest edit-kit-test
|
||||
[]
|
||||
(let [kit-request-body (tu/kit-request-body)
|
||||
create-response (tu/standard-web-app (-> (rm/request :post "/api/kit")
|
||||
(rm/json-body kit-request-body)))
|
||||
created-uuid (tu/get-response-uuid create-response)
|
||||
edit-kit-request-body (-> kit-request-body
|
||||
(assoc :uuid created-uuid)
|
||||
(assoc :kit-id "87654321"))
|
||||
edit-response (tu/admin-authed-web-app (-> (rm/request :patch "/api/kit")
|
||||
(rm/json-body edit-kit-request-body)))
|
||||
edited-uuid (tu/get-response-uuid edit-response)
|
||||
edited-kit (first (tu/get-kit-list {:uuid edited-uuid}))
|
||||
edited-kit-history (tu/get-entity-history edited-uuid)]
|
||||
(is (some? created-uuid))
|
||||
(is (some? edited-uuid))
|
||||
(is (= created-uuid edited-uuid)) ; The UUID returned from the edit endpoint should stay the same after submitting
|
||||
(is (= (:kit-id edit-kit-request-body) (:kit-id edited-kit)))
|
||||
(is (= 1 (count edited-kit-history)))))
|
||||
|
||||
(deftest archive-kit-test
|
||||
(let [kit-request-body (tu/kit-request-body)
|
||||
create-response (tu/standard-web-app (-> (rm/request :post "/api/kit")
|
||||
(rm/json-body kit-request-body)))
|
||||
created-uuid (tu/get-response-uuid create-response)
|
||||
pre-archive-archived-kit-list (tu/get-kit-list {:archived "true"})
|
||||
_ (tu/admin-authed-web-app (rm/request :patch "/api/kit/set-archived" {:uuid created-uuid :archived "true"}))
|
||||
post-archive-archived-kit-list (tu/get-kit-list {:archived "true"})
|
||||
archived-kit (first (filter #(= (:uuid %) created-uuid) post-archive-archived-kit-list))
|
||||
_ (tu/admin-authed-web-app (rm/request :patch "/api/kit/set-archived" {:uuid created-uuid :archived "false"}))
|
||||
post-unarchive-archived-kit-list (tu/get-kit-list {:archived "true"})
|
||||
missing-archived-kit (first (filter #(= (:uuid %) created-uuid) post-unarchive-archived-kit-list))
|
||||
post-unarchive-kit-list (tu/get-kit-list {})
|
||||
unarchived-kit (first (filter #(= (:uuid %) created-uuid) post-unarchive-kit-list))
|
||||
kit-history (tu/get-entity-history created-uuid)]
|
||||
(is (some? created-uuid))
|
||||
(is (= 1 (- (count post-archive-archived-kit-list) (count pre-archive-archived-kit-list))))
|
||||
(is (= 1 (- (count post-archive-archived-kit-list) (count post-unarchive-archived-kit-list))))
|
||||
(is (some? archived-kit))
|
||||
(is (nil? missing-archived-kit))
|
||||
(is (some? unarchived-kit))
|
||||
(is (= 2 (count kit-history)))))
|
||||
59
test/clj/org/parkerici/sample_tracking/api/list_test.clj
Normal file
59
test/clj/org/parkerici/sample_tracking/api/list_test.clj
Normal file
@@ -0,0 +1,59 @@
|
||||
(ns org.parkerici.sample-tracking.api.list-test
|
||||
(:require [clojure.test :refer :all]
|
||||
[org.parkerici.sample-tracking.test-utils :as tu]))
|
||||
|
||||
(defn list-studies-test
|
||||
[study-name]
|
||||
(let [studies-list (tu/get-studies-list)
|
||||
pici0014-study (tu/get-element-with-name studies-list study-name)]
|
||||
(is (= 4 (count studies-list)))
|
||||
(is (some? pici0014-study))
|
||||
pici0014-study))
|
||||
|
||||
(defn list-sites-test
|
||||
[study site-name]
|
||||
(let [sites-list (tu/get-sites-list (:uuid study))
|
||||
mskcc-site (tu/get-element-with-name sites-list site-name)]
|
||||
(is (= 4 (count sites-list)))
|
||||
(is (some? mskcc-site))
|
||||
mskcc-site))
|
||||
|
||||
(defn list-cohorts-test
|
||||
[study cohort-name]
|
||||
(let [cohorts-list (tu/get-cohorts-list (:uuid study))
|
||||
na-cohort (tu/get-element-with-name cohorts-list cohort-name)]
|
||||
(is (= 1 (count cohorts-list)))
|
||||
(is (some? na-cohort))
|
||||
na-cohort))
|
||||
|
||||
(defn list-kit-types-test
|
||||
[cohort kit-type-name]
|
||||
(let [kit-types-list (tu/get-kit-types-list (:uuid cohort))
|
||||
blood-serum-kit (tu/get-element-with-name kit-types-list kit-type-name)]
|
||||
(is (= 6 (count kit-types-list)))
|
||||
(is (some? blood-serum-kit))
|
||||
blood-serum-kit))
|
||||
|
||||
(defn list-timepoints-test
|
||||
[kit-type]
|
||||
(let [timepoints-list (tu/get-timepoint-list (:uuid kit-type))]
|
||||
(is (= 7 (count timepoints-list)))))
|
||||
|
||||
(defn list-sample-types-test
|
||||
[kit-type]
|
||||
(let [sample-types-list (tu/get-sample-types-list (:uuid kit-type))]
|
||||
(is (= 14 (count sample-types-list)))))
|
||||
|
||||
(defn list-form-types-test
|
||||
[kit-type]
|
||||
(let [form-types-list (tu/get-form-types-list (:uuid kit-type))]
|
||||
(is (= 1 (count form-types-list)))))
|
||||
|
||||
(deftest list-tests
|
||||
(let [study (list-studies-test "STUDY13")
|
||||
cohort (list-cohorts-test study "N/A")
|
||||
kit-type (list-kit-types-test cohort "STUDY13 Blood-Serum Manifest Form")]
|
||||
(list-sites-test study "CCCC")
|
||||
(list-timepoints-test kit-type)
|
||||
(list-sample-types-test kit-type)
|
||||
(list-form-types-test kit-type)))
|
||||
@@ -0,0 +1,94 @@
|
||||
(ns org.parkerici.sample-tracking.api.propose-edits-test
|
||||
(:require [clojure.test :refer :all]
|
||||
[ring.mock.request :as rm]
|
||||
[org.parkerici.sample-tracking.test-utils :as tu]
|
||||
[clojure.edn :as edn]))
|
||||
|
||||
(deftest propose-edit-kit-test
|
||||
[]
|
||||
(let [kit-request-body (tu/kit-request-body)
|
||||
create-response (tu/standard-web-app (-> (rm/request :post "/api/kit")
|
||||
(rm/json-body kit-request-body)))
|
||||
created-uuid (tu/get-response-uuid create-response)
|
||||
initial-pending-proposed-edits (tu/get-proposed-kit-edit-list {:status "pending"})
|
||||
propose-edit-kit-request-body (-> kit-request-body
|
||||
(assoc :uuid created-uuid)
|
||||
(assoc :kit-id "87654321"))
|
||||
_propose-edit-response (tu/site-coordinator-authed-web-app (-> (rm/request :post "/api/kit/propose-edit")
|
||||
(rm/json-body propose-edit-kit-request-body)))
|
||||
pending-proposed-edits (tu/get-proposed-kit-edit-list {:status "pending"})]
|
||||
(is (= 1 (- (count pending-proposed-edits) (count initial-pending-proposed-edits))))))
|
||||
|
||||
(deftest approve-propose-edit-kit-test
|
||||
[]
|
||||
(let [kit-request-body (tu/kit-request-body)
|
||||
create-response (tu/standard-web-app (-> (rm/request :post "/api/kit")
|
||||
(rm/json-body kit-request-body)))
|
||||
created-uuid (tu/get-response-uuid create-response)
|
||||
propose-edit-kit-request-body (-> kit-request-body
|
||||
(assoc :uuid created-uuid)
|
||||
(assoc :kit-id "87654321"))
|
||||
propose-edit-response (tu/site-coordinator-authed-web-app (-> (rm/request :post "/api/kit/propose-edit")
|
||||
(rm/json-body propose-edit-kit-request-body)))
|
||||
propose-edit-uuid (tu/get-response-uuid propose-edit-response)
|
||||
initial-approved-proposed-edits (tu/get-proposed-kit-edit-list {:status "approved"})
|
||||
_set-edit-status-response (tu/admin-authed-web-app (rm/request :post "/api/kit/propose-edit/set-status"
|
||||
{:uuid propose-edit-uuid :status "approved"}))
|
||||
approved-proposed-edits (tu/get-proposed-kit-edit-list {:status "approved"})
|
||||
edited-kit (first (tu/get-kit-list {:uuid created-uuid}))
|
||||
edited-kit-history (tu/get-entity-history created-uuid)]
|
||||
(is (= 1 (- (count approved-proposed-edits) (count initial-approved-proposed-edits))))
|
||||
(is (= (:kit-id propose-edit-kit-request-body) (:kit-id edited-kit)))
|
||||
(is (= 1 (count edited-kit-history)))))
|
||||
|
||||
(deftest deny-propose-edit-kit-test
|
||||
[]
|
||||
(let [kit-request-body (tu/kit-request-body)
|
||||
create-response (tu/standard-web-app (-> (rm/request :post "/api/kit")
|
||||
(rm/json-body kit-request-body)))
|
||||
created-uuid (tu/get-response-uuid create-response)
|
||||
propose-edit-kit-request-body (-> kit-request-body
|
||||
(assoc :uuid created-uuid)
|
||||
(assoc :kit-id "87654321"))
|
||||
propose-edit-response (tu/site-coordinator-authed-web-app (-> (rm/request :post "/api/kit/propose-edit")
|
||||
(rm/json-body propose-edit-kit-request-body)))
|
||||
propose-edit-uuid (tu/get-response-uuid propose-edit-response)
|
||||
initial-approved-proposed-edits (tu/get-proposed-kit-edit-list {:status "denied"})
|
||||
_set-edit-status-response (tu/admin-authed-web-app (rm/request :post "/api/kit/propose-edit/set-status"
|
||||
{:uuid propose-edit-uuid :status "denied"}))
|
||||
denied-proposed-edits (tu/get-proposed-kit-edit-list {:status "denied"})
|
||||
edited-kit (first (tu/get-kit-list {:uuid created-uuid}))
|
||||
edited-kit-history (tu/get-entity-history created-uuid)]
|
||||
(is (= 1 (- (count denied-proposed-edits) (count initial-approved-proposed-edits))))
|
||||
(is (= (:kit-id kit-request-body) (:kit-id edited-kit)))
|
||||
(is (= 0 (count edited-kit-history)))))
|
||||
|
||||
(deftest edit-proposed-edit-test
|
||||
[]
|
||||
(let [kit-request-body (tu/kit-request-body)
|
||||
create-response (tu/standard-web-app (-> (rm/request :post "/api/kit")
|
||||
(rm/json-body kit-request-body)))
|
||||
created-kit-uuid (tu/get-response-uuid create-response)
|
||||
initial-pending-proposed-edits (tu/get-proposed-kit-edit-list {:status "pending"})
|
||||
first-propose-edit-kit-request-body (-> kit-request-body
|
||||
(assoc :uuid created-kit-uuid)
|
||||
(assoc :kit-id "87654321"))
|
||||
first-propose-edit-response (tu/site-coordinator-authed-web-app (-> (rm/request :post "/api/kit/propose-edit")
|
||||
(rm/json-body first-propose-edit-kit-request-body)))
|
||||
first-proposed-edit-uuid (tu/get-response-uuid first-propose-edit-response)
|
||||
first-pending-proposed-edits (tu/get-proposed-kit-edit-list {:status "pending"})
|
||||
final-kit-id "12344321"
|
||||
final-propose-edit-kit-request-body (-> kit-request-body
|
||||
(assoc :uuid created-kit-uuid)
|
||||
(assoc :kit-id final-kit-id))
|
||||
final-propose-edit-response (tu/site-coordinator-authed-web-app (-> (rm/request :post "/api/kit/propose-edit")
|
||||
(rm/json-body final-propose-edit-kit-request-body)))
|
||||
final-proposed-edit-uuid (tu/get-response-uuid final-propose-edit-response)
|
||||
final-pending-proposed-edits (tu/get-proposed-kit-edit-list {:status "pending"})
|
||||
final-pending-edits-for-kit (filter #(= created-kit-uuid (:kit-uuid %)) final-pending-proposed-edits)
|
||||
final-pending-edit-update-map (edn/read-string (:update-map (first final-pending-edits-for-kit)))]
|
||||
(is (= 1 (- (count first-pending-proposed-edits) (count initial-pending-proposed-edits))))
|
||||
(is (= first-proposed-edit-uuid final-proposed-edit-uuid))
|
||||
(is (= 0 (- (count first-pending-proposed-edits) (count final-pending-proposed-edits))))
|
||||
(is (= 1 (count final-pending-edits-for-kit)))
|
||||
(is (= (:kit-id final-pending-edit-update-map) final-kit-id))))
|
||||
@@ -0,0 +1,88 @@
|
||||
(ns org.parkerici.sample-tracking.api.set-active-test
|
||||
(:require [clojure.test :refer :all]
|
||||
[ring.mock.request :as rm]
|
||||
[org.parkerici.sample-tracking.test-utils :as tu]))
|
||||
|
||||
(defn toggle-study-active-test
|
||||
[study-name]
|
||||
(let [studies-list (tu/get-studies-list)
|
||||
toggling-study (tu/get-element-with-name studies-list study-name)
|
||||
_ (tu/admin-authed-web-app (-> (rm/request :post "/api/set-active")
|
||||
(rm/json-body {:study (:uuid toggling-study) :active "false"})))
|
||||
post-toggle-studies-list (tu/get-studies-list)
|
||||
inactive-study (tu/get-element-with-name post-toggle-studies-list study-name)
|
||||
_ (tu/admin-authed-web-app (-> (rm/request :post "/api/set-active")
|
||||
(rm/json-body {:study (:uuid toggling-study) :active "true"})))
|
||||
reverted-studies-list (tu/get-studies-list)
|
||||
reactivated-study (tu/get-element-with-name reverted-studies-list study-name)]
|
||||
(is (= 4 (count studies-list)))
|
||||
(is (= 3 (count post-toggle-studies-list)))
|
||||
(is (= 4 (count reverted-studies-list)))
|
||||
(is (some? toggling-study))
|
||||
(is (nil? inactive-study))
|
||||
(is (some? reactivated-study))
|
||||
toggling-study))
|
||||
|
||||
(defn toggle-site-active-test
|
||||
[study site-name]
|
||||
(let [sites-list (tu/get-sites-list (:uuid study))
|
||||
toggling-site (tu/get-element-with-name sites-list site-name)
|
||||
_ (tu/admin-authed-web-app (-> (rm/request :post "/api/set-active")
|
||||
(rm/json-body {:study (:uuid study) :site (:uuid toggling-site) :active "false"})))
|
||||
post-toggle-sites-list (tu/get-sites-list (:uuid study))
|
||||
inactive-site (tu/get-element-with-name post-toggle-sites-list site-name)
|
||||
_ (tu/admin-authed-web-app (-> (rm/request :post "/api/set-active")
|
||||
(rm/json-body {:study (:uuid study) :site (:uuid toggling-site) :active "true"})))
|
||||
reverted-sites-list (tu/get-sites-list (:uuid study))
|
||||
reverted-site (tu/get-element-with-name reverted-sites-list site-name)]
|
||||
(is (= 4 (count sites-list)))
|
||||
(is (= 3 (count post-toggle-sites-list)))
|
||||
(is (= 4 (count reverted-sites-list)))
|
||||
(is (some? toggling-site))
|
||||
(is (nil? inactive-site))
|
||||
(is (some? reverted-site))))
|
||||
|
||||
(defn toggle-cohort-active-test
|
||||
[study cohort-name]
|
||||
(let [cohorts-list (tu/get-cohorts-list (:uuid study))
|
||||
toggling-cohort (tu/get-element-with-name cohorts-list cohort-name)
|
||||
_ (tu/admin-authed-web-app (-> (rm/request :post "/api/set-active")
|
||||
(rm/json-body {:study (:uuid study) :cohort (:uuid toggling-cohort) :active "false"})))
|
||||
post-toggle-cohorts-list (tu/get-cohorts-list (:uuid study))
|
||||
inactive-cohort (tu/get-element-with-name post-toggle-cohorts-list cohort-name)
|
||||
_ (tu/admin-authed-web-app (-> (rm/request :post "/api/set-active")
|
||||
(rm/json-body {:study (:uuid study) :cohort (:uuid toggling-cohort) :active "true"})))
|
||||
reverted-cohorts-list (tu/get-cohorts-list (:uuid study))
|
||||
reverted-cohort (tu/get-element-with-name reverted-cohorts-list cohort-name)]
|
||||
(is (= 1 (count cohorts-list)))
|
||||
(is (= 0 (count post-toggle-cohorts-list)))
|
||||
(is (= 1 (count reverted-cohorts-list)))
|
||||
(is (some? toggling-cohort))
|
||||
(is (nil? inactive-cohort))
|
||||
(is (some? reverted-cohort))
|
||||
toggling-cohort))
|
||||
|
||||
(defn toggle-kit-type-active-test
|
||||
[cohort kit-type-name]
|
||||
(let [kit-types-list (tu/get-kit-types-list (:uuid cohort))
|
||||
toggling-kit-type (tu/get-element-with-name kit-types-list kit-type-name)
|
||||
_ (tu/admin-authed-web-app (-> (rm/request :post "/api/set-active")
|
||||
(rm/json-body {:kit-type (:uuid toggling-kit-type) :cohort (:uuid cohort) :active "false"})))
|
||||
post-toggle-kit-types-list (tu/get-kit-types-list (:uuid cohort))
|
||||
inactive-kit-type (tu/get-element-with-name post-toggle-kit-types-list kit-type-name)
|
||||
_ (tu/admin-authed-web-app (-> (rm/request :post "/api/set-active")
|
||||
(rm/json-body {:kit-type (:uuid toggling-kit-type) :cohort (:uuid cohort) :active "true"})))
|
||||
reverted-kit-types-list (tu/get-kit-types-list (:uuid cohort))
|
||||
reverted-kit-type (tu/get-element-with-name reverted-kit-types-list kit-type-name)]
|
||||
(is (= 6 (count kit-types-list)))
|
||||
(is (= 5 (count post-toggle-kit-types-list)))
|
||||
(is (= 6 (count reverted-kit-types-list)))
|
||||
(is (some? toggling-kit-type))
|
||||
(is (nil? inactive-kit-type))
|
||||
(is (some? reverted-kit-type))))
|
||||
|
||||
(deftest set-active-tests
|
||||
(let [study (toggle-study-active-test "STUDY13")
|
||||
cohort (toggle-cohort-active-test study "N/A")]
|
||||
(toggle-site-active-test study "CCCC")
|
||||
(toggle-kit-type-active-test cohort "STUDY13 Blood-Serum Manifest Form")))
|
||||
Reference in New Issue
Block a user