-
Notifications
You must be signed in to change notification settings - Fork 317
Expand file tree
/
Copy pathconn.cljc
More file actions
62 lines (52 loc) · 2.04 KB
/
conn.cljc
File metadata and controls
62 lines (52 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
(ns datascript.test.conn
(:require
[clojure.test :as t :refer [is are deftest testing]]
[datascript.core :as d]
[datascript.db :as db]
[datascript.test.core :as tdc]))
(def schema
{:aka {:db/cardinality :db.cardinality/many}})
(def datoms
#{(d/datom 1 :age 17)
(d/datom 1 :name "Ivan")})
(deftest test-ways-to-create-conn
(let [conn (d/create-conn)]
(is (= #{} (set (d/datoms @conn :eavt))))
(is (= nil (:schema @conn))))
(let [conn (d/create-conn schema)]
(is (= #{} (set (d/datoms @conn :eavt))))
(is (= schema (:schema @conn))))
(let [conn (d/conn-from-datoms datoms)]
(is (= datoms (set (d/datoms @conn :eavt))))
(is (= nil (:schema @conn))))
(let [conn (d/conn-from-datoms datoms schema)]
(is (= datoms (set (d/datoms @conn :eavt))))
(is (= schema (:schema @conn))))
(let [conn (d/conn-from-db (d/init-db datoms))]
(is (= datoms (set (d/datoms @conn :eavt))))
(is (= nil (:schema @conn))))
(let [conn (d/conn-from-db (d/init-db datoms schema))]
(is (= datoms (set (d/datoms @conn :eavt))))
(is (= schema (:schema @conn)))))
(deftest test-reset-conn!
(let [conn (d/conn-from-datoms datoms schema)
report (atom nil)
_ (d/listen! conn #(reset! report %))
datoms' #{(d/datom 1 :age 20)
(d/datom 1 :sex :male)}
schema' {:email {:db/unique :db.unique/identity}}
db' (d/init-db datoms' schema')]
(d/reset-conn! conn db' :meta)
(is (= datoms' (set (d/datoms @conn :eavt))))
(is (= schema' (:schema @conn)))
(let [{:keys [db-before db-after tx-data tx-meta]} @report]
(is (= datoms (set (d/datoms db-before :eavt))))
(is (= schema (:schema db-before)))
(is (= datoms' (set (d/datoms db-after :eavt))))
(is (= schema' (:schema db-after)))
(is (= :meta tx-meta))
(is (= [[1 :age 17 false]
[1 :name "Ivan" false]
[1 :age 20 true]
[1 :sex :male true]]
(map (juxt :e :a :v :added) tx-data))))))