diff --git a/src/main/frontend/handler/publish.cljs b/src/main/frontend/handler/publish.cljs index 0ea1e2236b..4faa6ead37 100644 --- a/src/main/frontend/handler/publish.cljs +++ b/src/main/frontend/handler/publish.cljs @@ -73,8 +73,8 @@ (defn- > bytes + data (js/Uint8Array. digest)] + (->> data (map (fn [b] (.padStart (.toString b 16) 2 "0"))) (apply str)))) @@ -177,7 +177,7 @@ :body blob})))) (defn- {"content-type" content-type "x-asset-meta" (js/JSON.stringify (clj->js asset-meta))} asset-token (assoc "authorization" (str "Bearer " asset-token)))] @@ -245,7 +245,7 @@ :checksum (:logseq.property.asset/checksum asset) :size (:logseq.property.asset/size asset) :title (:block/title asset)} - resp (> (:datoms payload) (map first) set) + child-eid (:db/id (d/entity db [:block/uuid child-uuid]))] + (is (contains? datom-eids target-eid)) + (is (contains? datom-eids child-eid))))) + +(deftest publish-payload-traverses-nested-embeds + (testing "embedded blocks can include linked blocks that also embed others" + (let [first-uuid (random-uuid) + second-uuid (random-uuid) + embed-uuid (random-uuid) + conn (db-test/create-conn-with-blocks + [{:page {:block/title "Root Page"} + :blocks [{:block/title "Embed" + :block/uuid embed-uuid + :build/keep-uuid? true}]} + {:page {:block/title "First Page"} + :blocks [{:block/title "First" + :block/uuid first-uuid + :build/keep-uuid? true + :build/children [{:block/title "First child" + :build/keep-uuid? true}]}]} + {:page {:block/title "Second Page"} + :blocks [{:block/title "Second" + :block/uuid second-uuid + :build/keep-uuid? true}]}]) + db @conn + embed-eid (:db/id (d/entity db [:block/uuid embed-uuid])) + first-eid (:db/id (d/entity db [:block/uuid first-uuid])) + second-eid (:db/id (d/entity db [:block/uuid second-uuid])) + first-child (db-test/find-block-by-content db "First child") + _ (d/transact! conn [{:db/id embed-eid :block/link first-eid} + {:db/id (:db/id first-child) :block/link second-eid}]) + db @conn + root-page (db-test/find-page-by-title db "Root Page") + payload (#'worker-publish/build-publish-page-payload db root-page nil) + datom-eids (->> (:datoms payload) (map first) set) + first-eid (:db/id (d/entity db [:block/uuid first-uuid])) + second-eid (:db/id (d/entity db [:block/uuid second-uuid]))] + (is (contains? datom-eids first-eid)) + (is (contains? datom-eids second-eid)))))