|
|
@ -6,13 +6,18 @@
|
|
|
|
[wanijo.schema.routes :as schema-routes]
|
|
|
|
[wanijo.schema.routes :as schema-routes]
|
|
|
|
[wanijo.attribute.routes :as attr-routes]
|
|
|
|
[wanijo.attribute.routes :as attr-routes]
|
|
|
|
[wanijo.instance.routes :as inst-routes]
|
|
|
|
[wanijo.instance.routes :as inst-routes]
|
|
|
|
[wanijo.instance.forms :as inst-forms]))
|
|
|
|
[wanijo.instance.forms :as inst-forms]
|
|
|
|
|
|
|
|
[wanijo.instance.db :as inst-db]))
|
|
|
|
|
|
|
|
|
|
|
|
(defn single-result [cypher extractor]
|
|
|
|
(defn single-result
|
|
|
|
|
|
|
|
([cypher]
|
|
|
|
|
|
|
|
(single-result cypher
|
|
|
|
|
|
|
|
#(val (first %))))
|
|
|
|
|
|
|
|
([cypher extractor]
|
|
|
|
(extractor
|
|
|
|
(extractor
|
|
|
|
(first
|
|
|
|
(first
|
|
|
|
(neo4j/exec-query!
|
|
|
|
(neo4j/exec-query!
|
|
|
|
(drv/create-query cypher) {}))))
|
|
|
|
(drv/create-query cypher) {})))))
|
|
|
|
|
|
|
|
|
|
|
|
(defn multi-results [cypher extractor]
|
|
|
|
(defn multi-results [cypher extractor]
|
|
|
|
(extractor
|
|
|
|
(extractor
|
|
|
@ -34,11 +39,11 @@
|
|
|
|
(is (not= nil (:created_at schema)))
|
|
|
|
(is (not= nil (:created_at schema)))
|
|
|
|
(is (= (:uuid user)
|
|
|
|
(is (= (:uuid user)
|
|
|
|
(single-result "MATCH (s:schema)-[:created_by]->(u:user)
|
|
|
|
(single-result "MATCH (s:schema)-[:created_by]->(u:user)
|
|
|
|
RETURN u.uuid AS uuid" :uuid)))
|
|
|
|
RETURN u.uuid")))
|
|
|
|
(is (= (:uuid user)
|
|
|
|
(is (= (:uuid user)
|
|
|
|
(single-result "MATCH (s:schema)
|
|
|
|
(single-result "MATCH (s:schema)
|
|
|
|
<-[:permission {type:'write'}]-(u:user)
|
|
|
|
<-[:permission {type:'write'}]-(u:user)
|
|
|
|
RETURN u.uuid AS uuid" :uuid))))
|
|
|
|
RETURN u.uuid"))))
|
|
|
|
|
|
|
|
|
|
|
|
(testing "create attribute"
|
|
|
|
(testing "create attribute"
|
|
|
|
(attr-routes/new! {:params {:schema (:uuid schema)
|
|
|
|
(attr-routes/new! {:params {:schema (:uuid schema)
|
|
|
@ -47,16 +52,16 @@
|
|
|
|
:required "1"}
|
|
|
|
:required "1"}
|
|
|
|
:session {:uuid (:uuid user)}})
|
|
|
|
:session {:uuid (:uuid user)}})
|
|
|
|
(def attr
|
|
|
|
(def attr
|
|
|
|
(single-result "MATCH (a:attribute) RETURN a" :a))
|
|
|
|
(single-result "MATCH (a:attribute) RETURN a"))
|
|
|
|
(is (= "string" (:type attr)))
|
|
|
|
(is (= "string" (:type attr)))
|
|
|
|
(is (= "test-attr" (:name attr)))
|
|
|
|
(is (= "test-attr" (:name attr)))
|
|
|
|
(is (= 1 (:required attr)))
|
|
|
|
(is (= 1 (:required attr)))
|
|
|
|
(is (= (:uuid user)
|
|
|
|
(is (= (:uuid user)
|
|
|
|
(single-result "MATCH (a:attribute)-[:created_by]->(u:user)
|
|
|
|
(single-result "MATCH (a:attribute)-[:created_by]->(u:user)
|
|
|
|
RETURN u.uuid AS uuid" :uuid)))
|
|
|
|
RETURN u.uuid")))
|
|
|
|
(is (= (:uuid schema)
|
|
|
|
(is (= (:uuid schema)
|
|
|
|
(single-result "MATCH (a:attribute)-[:of]->(s:schema)
|
|
|
|
(single-result "MATCH (a:attribute)-[:of]->(s:schema)
|
|
|
|
RETURN s.uuid AS uuid" :uuid))))
|
|
|
|
RETURN s.uuid"))))
|
|
|
|
|
|
|
|
|
|
|
|
(testing "assign read"
|
|
|
|
(testing "assign read"
|
|
|
|
(schema-routes/assign-users! {:params {:uuid (:uuid schema)
|
|
|
|
(schema-routes/assign-users! {:params {:uuid (:uuid schema)
|
|
|
@ -69,12 +74,56 @@
|
|
|
|
#(map (juxt :type :uuid) %)))))
|
|
|
|
#(map (juxt :type :uuid) %)))))
|
|
|
|
|
|
|
|
|
|
|
|
(testing "create instance"
|
|
|
|
(testing "create instance"
|
|
|
|
(inst-routes/route-new! {:params {:schema-uuid (:uuid schema)
|
|
|
|
(inst-routes/route-new!
|
|
|
|
|
|
|
|
{:params {:schema-uuid (:uuid schema)
|
|
|
|
:name "instance"
|
|
|
|
:name "instance"
|
|
|
|
(inst-forms/attr->field-id attr) "attr-value"}
|
|
|
|
(inst-forms/attr->field-id attr) "attr-value"}
|
|
|
|
:session {:uuid (:uuid user)}})
|
|
|
|
:session {:uuid (:uuid user)}})
|
|
|
|
(def instance
|
|
|
|
(def instance
|
|
|
|
(single-result "MATCH (i:instance) RETURN i" :i))
|
|
|
|
(single-result "MATCH (i:instance) RETURN i"))
|
|
|
|
(is (= "attr-value"
|
|
|
|
(is (= "attr-value"
|
|
|
|
(single-result "MATCH (p:property) RETURN p.value AS value"
|
|
|
|
(single-result "MATCH (p:property) RETURN p.value")))
|
|
|
|
:value)))))
|
|
|
|
(is (= (:uuid user)
|
|
|
|
|
|
|
|
(single-result "MATCH (i:instance)-[:created_by]->(u:user)
|
|
|
|
|
|
|
|
RETURN u.uuid")))
|
|
|
|
|
|
|
|
(let [full-inst (inst-db/full-instance-by-uuid! (:uuid instance))]
|
|
|
|
|
|
|
|
(is (= "attr-value"
|
|
|
|
|
|
|
|
(-> full-inst :properties first :value)))
|
|
|
|
|
|
|
|
(is (= (:uuid attr)
|
|
|
|
|
|
|
|
(-> full-inst :properties first :attribute :uuid)))
|
|
|
|
|
|
|
|
(is (empty? (:tags full-inst)))
|
|
|
|
|
|
|
|
(is (empty? (:links-in full-inst)))
|
|
|
|
|
|
|
|
(is (empty? (:links-out full-inst)))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(testing "create second instance and linking"
|
|
|
|
|
|
|
|
(inst-routes/route-new!
|
|
|
|
|
|
|
|
{:params {:schema-uuid (:uuid schema)
|
|
|
|
|
|
|
|
:name "instance2"
|
|
|
|
|
|
|
|
(inst-forms/attr->field-id attr) "attr-value2"}
|
|
|
|
|
|
|
|
:session {:uuid (:uuid user)}})
|
|
|
|
|
|
|
|
(def instance2
|
|
|
|
|
|
|
|
(single-result "MATCH (i:instance)
|
|
|
|
|
|
|
|
WITH MAX(i.created_at) AS max_created_at
|
|
|
|
|
|
|
|
MATCH (i:instance)
|
|
|
|
|
|
|
|
WHERE i.created_at = max_created_at
|
|
|
|
|
|
|
|
RETURN i"))
|
|
|
|
|
|
|
|
(is (= "instance2" (:name instance2)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(inst-routes/route-create-link!
|
|
|
|
|
|
|
|
(:uuid instance)
|
|
|
|
|
|
|
|
(:uuid schema)
|
|
|
|
|
|
|
|
{:params {:name "link-name"
|
|
|
|
|
|
|
|
:instances [(:uuid instance2)]}
|
|
|
|
|
|
|
|
:session {:uuid (:uuid user)}})
|
|
|
|
|
|
|
|
(let [link (single-result "MATCH ()-[l:link]-() RETURN l")]
|
|
|
|
|
|
|
|
(is (= "link-name" (:name link)))
|
|
|
|
|
|
|
|
(is (= (:uuid user) (:created_by link)))
|
|
|
|
|
|
|
|
(is (some? (:created_at link))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(is (= (:uuid instance)
|
|
|
|
|
|
|
|
(single-result "MATCH (i:instance)-[:link]->(:instance)
|
|
|
|
|
|
|
|
RETURN i.uuid")))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(is (= (:uuid instance2)
|
|
|
|
|
|
|
|
(single-result "MATCH (i:instance)<-[:link]-(:instance)
|
|
|
|
|
|
|
|
RETURN i.uuid")))))
|
|
|
|