|
|
@@ -24,7 +24,7 @@
|
|
|
id->same-entity-datoms (group-by first datom-vec-coll)]
|
|
|
(update-vals id->same-entity-datoms #'subject/entity-datoms=>a->add?->v->t)))
|
|
|
|
|
|
-(deftest entity-datoms=>ops-test
|
|
|
+(deftest ^:large-vars/cleanup-todo entity-datoms=>ops-test
|
|
|
(testing "remove whiteboard page-block"
|
|
|
(let [conn (db-test/create-conn)
|
|
|
block-uuid (random-uuid)
|
|
|
@@ -43,6 +43,31 @@
|
|
|
(is (= [[:remove-page {:block-uuid block-uuid}]]
|
|
|
(map (fn [[op-type _t op-value]] [op-type op-value]) r)))))
|
|
|
|
|
|
+ (testing "create page block"
|
|
|
+ (let [conn (db-test/create-conn)
|
|
|
+ block-uuid (random-uuid)
|
|
|
+ tx-data [[:db/add 1000000 :block/uuid block-uuid]
|
|
|
+ [:db/add 1000000 :block/name "page-name"]
|
|
|
+ [:db/add 1000000 :block/title "Page Title"]
|
|
|
+ [:db/add 1000000 :block/created-at 1716882111476]
|
|
|
+ [:db/add 1000000 :block/updated-at 1716882111476]]
|
|
|
+ {:keys [db-before db-after tx-data]} (d/transact! conn tx-data)
|
|
|
+ ops (#'subject/entity-datoms=>ops db-before db-after
|
|
|
+ (tx-data=>e->a->add?->v->t tx-data)
|
|
|
+ nil
|
|
|
+ (map vec tx-data))]
|
|
|
+ (is (= [[:update-page {:block-uuid block-uuid}]
|
|
|
+ [:add {:block-uuid block-uuid
|
|
|
+ :av-coll
|
|
|
+ (set [[:block/updated-at "[\"~#'\",1716882111476]"]
|
|
|
+ [:block/created-at "[\"~#'\",1716882111476]"]
|
|
|
+ [:block/title "[\"~#'\",\"Page Title\"]"]])}]]
|
|
|
+ (map (fn [[op-type _t op-value]]
|
|
|
+ [op-type (cond-> op-value
|
|
|
+ (:av-coll op-value)
|
|
|
+ (assoc :av-coll (set (map #(take 2 %) (:av-coll op-value)))))])
|
|
|
+ ops)))))
|
|
|
+
|
|
|
(testing "update-schema op"
|
|
|
(let [conn (db-test/create-conn)
|
|
|
tx-data [[:db/add 1000000 :db/index true]
|
|
|
@@ -64,20 +89,19 @@
|
|
|
#{:logseq.property/ignored-attr-x}
|
|
|
(map vec tx-data))]
|
|
|
(is (=
|
|
|
- [[:move {:block-uuid #uuid "66558abf-6512-469d-9e83-8f1ba0be9305"}]
|
|
|
- [:update-page {:block-uuid #uuid "66558abf-6512-469d-9e83-8f1ba0be9305"}]
|
|
|
- [:update {:block-uuid #uuid "66558abf-6512-469d-9e83-8f1ba0be9305"
|
|
|
- :av-coll
|
|
|
- [[:db/index "[\"~#'\",true]"]
|
|
|
- [:logseq.property/type "[\"~#'\",\"~:number\"]"]
|
|
|
- [:db/valueType "[\"~#'\",\"~:db.type/ref\"]"]
|
|
|
- [:block/updated-at "[\"~#'\",1716882111476]"]
|
|
|
- [:block/created-at "[\"~#'\",1716882111476]"]
|
|
|
- [:block/tags #uuid "00000002-1038-7670-4800-000000000000"]
|
|
|
- [:block/title "[\"~#'\",\"qqq\"]"]
|
|
|
- [:db/cardinality "[\"~#'\",\"~:db.cardinality/one\"]"]
|
|
|
+ [[:update-page {:block-uuid #uuid "66558abf-6512-469d-9e83-8f1ba0be9305"}]
|
|
|
+ [:add {:block-uuid #uuid "66558abf-6512-469d-9e83-8f1ba0be9305"
|
|
|
+ :av-coll
|
|
|
+ [[:db/index "[\"~#'\",true]"]
|
|
|
+ [:logseq.property/type "[\"~#'\",\"~:number\"]"]
|
|
|
+ [:db/valueType "[\"~#'\",\"~:db.type/ref\"]"]
|
|
|
+ [:block/updated-at "[\"~#'\",1716882111476]"]
|
|
|
+ [:block/created-at "[\"~#'\",1716882111476]"]
|
|
|
+ [:block/tags #uuid "00000002-1038-7670-4800-000000000000"]
|
|
|
+ [:block/title "[\"~#'\",\"qqq\"]"]
|
|
|
+ [:db/cardinality "[\"~#'\",\"~:db.cardinality/one\"]"]
|
|
|
;; [:db/ident "[\"~#'\",\"~:user.property/qqq\"]"]
|
|
|
- ]}]]
|
|
|
+ ]}]]
|
|
|
(map (fn [[op-type _t op-value]]
|
|
|
[op-type (cond-> op-value
|
|
|
(:av-coll op-value)
|
|
|
@@ -101,16 +125,16 @@
|
|
|
(map vec tx-data))]
|
|
|
(is (=
|
|
|
[[:update-page {:block-uuid #uuid "66856a29-6eb3-4122-af97-8580a853c6a6"}]
|
|
|
- [:update {:block-uuid #uuid "66856a29-6eb3-4122-af97-8580a853c6a6",
|
|
|
- :av-coll
|
|
|
- (set
|
|
|
- [[:block/updated-at "[\"~#'\",1720019497643]"]
|
|
|
- [:block/created-at "[\"~#'\",1720019497643]"]
|
|
|
- [:block/tags #uuid "00000002-5389-0208-3000-000000000000"]
|
|
|
- [:block/title "[\"~#'\",\"zzz\"]"]
|
|
|
- [:logseq.property.class/extends #uuid "00000002-2737-8382-7000-000000000000"]
|
|
|
+ [:add {:block-uuid #uuid "66856a29-6eb3-4122-af97-8580a853c6a6",
|
|
|
+ :av-coll
|
|
|
+ (set
|
|
|
+ [[:block/updated-at "[\"~#'\",1720019497643]"]
|
|
|
+ [:block/created-at "[\"~#'\",1720019497643]"]
|
|
|
+ [:block/tags #uuid "00000002-5389-0208-3000-000000000000"]
|
|
|
+ [:block/title "[\"~#'\",\"zzz\"]"]
|
|
|
+ [:logseq.property.class/extends #uuid "00000002-2737-8382-7000-000000000000"]
|
|
|
;;1. shouldn't have :db/ident, :db/ident is special, will be handled later
|
|
|
- ])}]]
|
|
|
+ ])}]]
|
|
|
(map (fn [[op-type _t op-value]]
|
|
|
[op-type (cond-> op-value
|
|
|
(:av-coll op-value)
|
|
|
@@ -129,7 +153,7 @@
|
|
|
(testing "add page"
|
|
|
(worker-page/create! conn "TEST-PAGE" {:uuid page-uuid})
|
|
|
(is (some? (d/pull @conn '[*] [:block/uuid page-uuid])))
|
|
|
- (is (= {page-uuid #{:update-page :update}}
|
|
|
+ (is (= {page-uuid #{:add :update-page}}
|
|
|
(ops-coll=>block-uuid->op-types (client-op/get&remove-all-block-ops repo)))))
|
|
|
(testing "add blocks to this page"
|
|
|
(let [target-entity (d/entity @conn [:block/uuid page-uuid])]
|
|
|
@@ -142,8 +166,8 @@
|
|
|
target-entity
|
|
|
{:sibling? false :keep-uuid? true}))
|
|
|
(is (=
|
|
|
- {block-uuid1 #{:move :update}
|
|
|
- block-uuid2 #{:move :update}}
|
|
|
+ {block-uuid1 #{:add}
|
|
|
+ block-uuid2 #{:add}}
|
|
|
(ops-coll=>block-uuid->op-types (client-op/get&remove-all-block-ops repo))))))
|
|
|
|
|
|
(testing "delete a block"
|
|
|
@@ -164,10 +188,8 @@
|
|
|
:block/tags :block/title :db/cardinality}]
|
|
|
#_{:clj-kondo/ignore [:unresolved-symbol :invalid-arity]}
|
|
|
(is (->> (me/find (subject/generate-rtc-ops-from-property-entities [ent])
|
|
|
- ([:move _ {:block-uuid ?block-uuid}]
|
|
|
- [:update-page _ {:block-uuid ?block-uuid}]
|
|
|
- [:update _ {:block-uuid ?block-uuid :av-coll ([!av-coll-attrs . _ ...] ...)}])
|
|
|
- !av-coll-attrs)
|
|
|
+ ([:update-page . _ ...] [:add _ {:block-uuid ?block-uuid :av-coll ([!av-coll-attrs . _ ...] ...)}])
|
|
|
+ !av-coll-attrs)
|
|
|
set
|
|
|
(set/difference av-coll-attrs)
|
|
|
empty?))))
|
|
|
@@ -180,9 +202,8 @@
|
|
|
:block/tags :block/title}]
|
|
|
#_{:clj-kondo/ignore [:unresolved-symbol :invalid-arity]}
|
|
|
(is (->> (me/find (subject/generate-rtc-ops-from-class-entities [ent])
|
|
|
- ([:update-page _ {:block-uuid ?block-uuid}]
|
|
|
- [:update _ {:block-uuid ?block-uuid :av-coll ([!av-coll-attrs . _ ...] ...)}])
|
|
|
- !av-coll-attrs)
|
|
|
+ ([:update-page . _ ...] [:add _ {:block-uuid ?block-uuid :av-coll ([!av-coll-attrs . _ ...] ...)}])
|
|
|
+ !av-coll-attrs)
|
|
|
set
|
|
|
(set/difference av-coll-attrs)
|
|
|
empty?))))
|