Просмотр исходного кода

fix(rtc): fix add-ops-to-block-uuid->ops & add testcase

rcmerci 2 лет назад
Родитель
Сommit
b54c39e8a6

+ 1 - 3
src/main/frontend/db/rtc/op_mem_layer.cljs

@@ -212,9 +212,7 @@
           (let [add-after-remove? (some-> (get exist-ops :update-page) second :epoch (> epoch))]
             (if add-after-remove?
               (recur block-uuid->ops epoch->block-uuid-sorted-map others)
-              (let [block-uuid->ops* (-> block-uuid->ops
-                                         (assoc-in [block-uuid :remove-page] op)
-                                         (update block-uuid dissoc :remove-page))
+              (let [block-uuid->ops* (assoc block-uuid->ops block-uuid {:remove-page op})
                     origin-min-epoch (block-uuid->min-epoch block-uuid->ops block-uuid)
                     min-epoch (block-uuid->min-epoch block-uuid->ops* block-uuid)]
                 (recur block-uuid->ops*

+ 11 - 1
src/test/frontend/db/rtc/op_mem_layer_test.cljs

@@ -57,7 +57,17 @@
               {:block-uuid #uuid "f639f13e-ef6f-4ba5-83b4-67527d27cd02"
                :updated-attrs {:content nil :link nil}
                :epoch 4}]
-             (:update (block-uuid->ops #uuid"f639f13e-ef6f-4ba5-83b4-67527d27cd02")))))))
+             (:update (block-uuid->ops #uuid"f639f13e-ef6f-4ba5-83b4-67527d27cd02"))))))
+  (testing "case4: update-page then remove-page"
+    (let [ops1 [["update-page" {:block-uuid #uuid "65564abe-1e79-4ae8-af60-215826cefea9" :epoch 1}]]
+          ops2 [["remove-page" {:block-uuid #uuid "65564abe-1e79-4ae8-af60-215826cefea9" :epoch 2}]]
+          {:keys [block-uuid->ops epoch->block-uuid-sorted-map]}
+          (op-layer/add-ops-to-block-uuid->ops (op-layer/ops-coercer ops1) {} (sorted-map-by <))
+          {block-uuid->ops2 :block-uuid->ops}
+          (op-layer/add-ops-to-block-uuid->ops (op-layer/ops-coercer ops2) block-uuid->ops epoch->block-uuid-sorted-map)]
+      (is (= {#uuid "65564abe-1e79-4ae8-af60-215826cefea9"
+              {:remove-page ["remove-page" {:block-uuid #uuid "65564abe-1e79-4ae8-af60-215826cefea9", :epoch 2}]}}
+             block-uuid->ops2)))))
 
 
 (deftest process-test