Fix page block not saving invalid-properties

pull/6498/head
Gabriel Horner 2022-08-26 14:32:14 -04:00 committed by Tienson Qin
parent 340fb8cf9a
commit b47826d69d
2 changed files with 37 additions and 13 deletions

View File

@ -42,12 +42,12 @@
(defn- build-page-entity (defn- build-page-entity
[properties file page-name page ref-tags {:keys [date-formatter db]}] [properties file page-name page ref-tags {:keys [date-formatter db]}]
(let [alias (:alias properties) (let [alias (:alias properties)
alias (if (string? alias) [alias] alias) alias' (if (string? alias) [alias] alias)
aliases (and alias aliases (and alias'
(seq (remove #(or (= page-name (gp-util/page-name-sanity-lc %)) (seq (remove #(or (= page-name (gp-util/page-name-sanity-lc %))
(string/blank? %)) ;; disable blank alias (string/blank? %)) ;; disable blank alias
alias))) alias')))
aliases (->> aliases' (->>
(map (map
(fn [alias] (fn [alias]
(let [page-name (gp-util/page-name-sanity-lc alias) (let [page-name (gp-util/page-name-sanity-lc alias)
@ -65,17 +65,26 @@
:block/alias aliases} :block/alias aliases}
{:block/name page-name}))) {:block/name page-name})))
aliases) aliases)
(remove nil?))] (remove nil?))
[*valid-properties *invalid-properties]
((juxt filter remove)
(fn [[k _v]] (gp-property/valid-property-name? (str k))) properties)
valid-properties (into {} *valid-properties)
invalid-properties (set (map (comp name first) *invalid-properties))]
(cond-> (cond->
(gp-util/remove-nils (gp-util/remove-nils
(assoc (assoc
(gp-block/page-name->map page false db true date-formatter) (gp-block/page-name->map page false db true date-formatter)
:block/file {:file/path (gp-util/path-normalize file)})) :block/file {:file/path (gp-util/path-normalize file)}))
(seq properties)
(assoc :block/properties properties)
(seq aliases) (seq valid-properties)
(assoc :block/alias aliases) (assoc :block/properties valid-properties)
(seq invalid-properties)
(assoc :block/invalid-properties invalid-properties)
(seq aliases')
(assoc :block/alias aliases')
(:tags properties) (:tags properties)
(assoc :block/tags (let [tags (:tags properties) (assoc :block/tags (let [tags (:tags properties)

View File

@ -210,15 +210,30 @@
(let [conn (ldb/start-conn) (let [conn (ldb/start-conn)
properties {"foo" "valid" properties {"foo" "valid"
"[[foo]]" "invalid" "[[foo]]" "invalid"
"some,prop" "invalid"}] "some,prop" "invalid"}
(graph-parser/parse-file conn "foo.md" (gp-property/->block-content properties) {}) body (str (gp-property/->block-content properties)
"\n- " (gp-property/->block-content properties))]
(graph-parser/parse-file conn "foo.md" body {})
(is (= [{:block/properties {:foo "valid"} (is (= [{:block/properties {:foo "valid"}
:block/invalid-properties #{"[[foo]]" "some,prop"}}] :block/invalid-properties #{"[[foo]]" "some,prop"}}]
(->> (d/q '[:find (pull ?b [*]) (->> (d/q '[:find (pull ?b [*])
:in $ :in $
:where [?b :block/properties] [(missing? $ ?b :block/name)]] :where
[?b :block/properties]
[(missing? $ ?b :block/pre-block?)]
[(missing? $ ?b :block/name)]]
@conn) @conn)
(map first) (map first)
(map #(select-keys % [:block/properties :block/invalid-properties])))) (map #(select-keys % [:block/properties :block/invalid-properties]))))
"Has correct (in)valid block properties"))) "Has correct (in)valid block properties")
(is (= [{:block/properties {:foo "valid"}
:block/invalid-properties #{"[[foo]]" "some,prop"}}]
(->> (d/q '[:find (pull ?b [*])
:in $
:where [?b :block/properties] [?b :block/name]]
@conn)
(map first)
(map #(select-keys % [:block/properties :block/invalid-properties]))))
"Has correct (in)valid page properties")))