diff --git a/test/wanijo/infra/system_test.clj b/test/wanijo/infra/system_test.clj new file mode 100644 index 0000000..0790a2c --- /dev/null +++ b/test/wanijo/infra/system_test.clj @@ -0,0 +1,47 @@ +(ns wanijo.infra.system-test + (:require [clojure.test :refer :all] + [neo4j-clj.core :as drv] + [wanijo.infra.neo4j :as neo4j] + [wanijo.infra.repl :as repl] + [wanijo.schema.db :as db-schema] + [wanijo.attribute.db :as db-attr])) + +(defn single-result [cypher extractor] + (extractor + (first + (neo4j/exec-query! + (drv/create-query cypher) {})))) + +(deftest allround-system-test + (repl/setup-in-memory!) + (def user + (single-result "MATCH (u:user) RETURN u" + :u)) + + (testing "create schema" + (db-schema/create-new! "test-schema" (:uuid user)) + (def schema + (single-result "MATCH (s:schema) RETURN s LIMIT 1" :s)) + (is (= "test-schema" (:name schema))) + (is (= (:uuid user) + (single-result "MATCH (s:schema)-[:created_by]->(u:user) + RETURN u.uuid AS uuid" :uuid))) + (is (not= nil (:created_at schema)))) + + (testing "create attribute" + (db-attr/create-new! {:type "text" + :name "test-attr" + :required 1} + (:uuid schema) + (:uuid user)) + (def attr + (single-result "MATCH (a:attribute) RETURN a" :a)) + (is (= "text") (:type attr)) + (is (= "test-attr") (:name attr)) + (is (= 1 (:required attr))) + (is (= (:uuid user) + (single-result "MATCH (a:attribute)-[:created_by]->(u:user) + RETURN u.uuid AS uuid" :uuid))) + (is (= (:uuid schema) + (single-result "MATCH (a:attribute)-[:of]->(s:schema) + RETURN s.uuid AS uuid" :uuid)))))