From dd2321a37b25636718697f48882403266a1c7753 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Wed, 1 Feb 2023 13:43:02 +0100 Subject: [PATCH] :bug: Fix weird numeration creating elements in dashboard --- CHANGES.md | 1 + .../test/backend_tests/rpc_comment_test.clj | 2 +- common/src/app/common/file_builder.cljc | 2 +- common/src/app/common/pages.cljc | 2 + common/src/app/common/pages/common.cljc | 33 ++- common/src/app/common/types/container.cljc | 3 +- common/src/app/common/types/file.cljc | 2 +- common/src/app/common/types/shape_tree.cljc | 29 -- common/test/common_tests/helpers/files.cljc | 4 +- common/test/common_tests/types_file_test.cljc | 2 +- frontend/src/app/main/data/dashboard.cljs | 23 +- frontend/src/app/main/data/workspace.cljs | 9 +- .../app/main/data/workspace/interactions.cljs | 3 +- .../data/workspace/libraries_helpers.cljs | 2 +- .../app/main/data/workspace/selection.cljs | 5 +- .../app/main/data/workspace/svg_upload.cljs | 3 +- .../state_components_sync_test.cljs | 74 ++--- .../frontend_tests/state_components_test.cljs | 268 +++++++++--------- .../frontend_tests/util_snap_data_test.cljs | 28 +- 19 files changed, 256 insertions(+), 239 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index ae136b8e8..fea2a69fd 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,6 +5,7 @@ ### :bug: Bugs fixed - Fix components groups items show the component name in list mode [Taiga #4770](https://tree.taiga.io/project/penpot/issue/4770) - Fix typing CMD+Z on MacOS turns the cursor into a Zoom cursor [Taiga #4778](https://tree.taiga.io/project/penpot/issue/4778) +- Fix weird numeration creating new elements in dashboard [Taiga #4755](https://tree.taiga.io/project/penpot/issue/4755) ## 1.17.0 diff --git a/backend/test/backend_tests/rpc_comment_test.clj b/backend/test/backend_tests/rpc_comment_test.clj index d088f8b06..0cb812bad 100644 --- a/backend/test/backend_tests/rpc_comment_test.clj +++ b/backend/test/backend_tests/rpc_comment_test.clj @@ -154,7 +154,7 @@ (t/is (th/success? out)) (let [[thread :as result] (:result out)] (t/is (= 1 (count result))) - (t/is (= "Page-1" (:page-name thread))) + (t/is (= "Page 1" (:page-name thread))) (t/is (= "hello world" (:content thread))) (t/is (= 2 (:count-comments thread))) (t/is (true? (:is-resolved thread)))))) diff --git a/common/src/app/common/file_builder.cljc b/common/src/app/common/file_builder.cljc index 627ffc8a8..e2d61fa43 100644 --- a/common/src/app/common/file_builder.cljc +++ b/common/src/app/common/file_builder.cljc @@ -200,7 +200,7 @@ (assert (nil? (:current-component-id file))) (let [page-id (or (:id data) (uuid/next)) - page (-> (ctp/make-empty-page page-id "Page-1") + page (-> (ctp/make-empty-page page-id "Page 1") (d/deep-merge data))] (-> file (commit-change diff --git a/common/src/app/common/pages.cljc b/common/src/app/common/pages.cljc index 0af339722..2d52f03c4 100644 --- a/common/src/app/common/pages.cljc +++ b/common/src/app/common/pages.cljc @@ -19,6 +19,8 @@ (dm/export common/file-version) (dm/export common/default-color) (dm/export common/component-sync-attrs) +(dm/export common/retrieve-used-names) +(dm/export common/generate-unique-name) ;; Focus (dm/export focus/focus-objects) diff --git a/common/src/app/common/pages/common.cljc b/common/src/app/common/pages/common.cljc index c738b22d4..7e392cc92 100644 --- a/common/src/app/common/pages/common.cljc +++ b/common/src/app/common/pages/common.cljc @@ -7,7 +7,10 @@ (ns app.common.pages.common (:require [app.common.colors :as clr] - [app.common.uuid :as uuid])) + [app.common.data :as d] + [app.common.spec :as us] + [app.common.uuid :as uuid] + [clojure.spec.alpha :as s])) (def file-version 20) (def default-color clr/gray-20) @@ -580,3 +583,31 @@ :layout-item-min-w :layout-item-align-self}}) +(defn retrieve-used-names + "Return a set with the all unique names used in the + elements (any entity thas has a :name)" + [elements] + (into #{} (comp (map :name) (remove nil?)) (vals elements))) + +(defn- extract-numeric-suffix + [basename] + (if-let [[_ p1 p2] (re-find #"(.*) ([0-9]+)$" basename)] + [p1 (+ 1 (d/parse-integer p2))] + [basename 1])) + +(s/def ::set-of-strings + (s/every ::us/string :kind set?)) + +(defn generate-unique-name + "A unique name generator" + [used basename] + (us/assert! ::set-of-strings used) + (us/assert! ::us/string basename) + (if-not (contains? used basename) + basename + (let [[prefix initial] (extract-numeric-suffix basename)] + (loop [counter initial] + (let [candidate (str prefix " " counter)] + (if (contains? used candidate) + (recur (inc counter)) + candidate)))))) diff --git a/common/src/app/common/types/container.cljc b/common/src/app/common/types/container.cljc index 53185b092..7c9950a8b 100644 --- a/common/src/app/common/types/container.cljc +++ b/common/src/app/common/types/container.cljc @@ -9,6 +9,7 @@ [app.common.data.macros :as dm] [app.common.geom.point :as gpt] [app.common.geom.shapes :as gsh] + [app.common.pages.common :as common] [app.common.spec :as us] [app.common.types.shape-tree :as ctst] [clojure.spec.alpha :as s])) @@ -130,7 +131,7 @@ delta (gpt/subtract position orig-pos) objects (:objects container) - unames (volatile! (ctst/retrieve-used-names objects)) + unames (volatile! (common/retrieve-used-names objects)) frame-id (ctst/frame-id-by-position objects (gpt/add orig-pos delta)) frame-ids-map (volatile! {}) diff --git a/common/src/app/common/types/file.cljc b/common/src/app/common/types/file.cljc index d2143101b..8bc075b1e 100644 --- a/common/src/app/common/types/file.cljc +++ b/common/src/app/common/types/file.cljc @@ -73,7 +73,7 @@ ([file-id page-id] (let [page (when (some? page-id) - (ctp/make-empty-page page-id "Page-1"))] + (ctp/make-empty-page page-id "Page 1"))] (cond-> (-> empty-file-data (assoc :id file-id)) diff --git a/common/src/app/common/types/shape_tree.cljc b/common/src/app/common/types/shape_tree.cljc index aebcb9d1c..4f13a5e8a 100644 --- a/common/src/app/common/types/shape_tree.cljc +++ b/common/src/app/common/types/shape_tree.cljc @@ -284,35 +284,6 @@ [frame] (not (mth/almost-zero? (:rotation frame 0)))) -(defn retrieve-used-names - [objects] - (into #{} (comp (map :name) (remove nil?)) (vals objects))) - -(defn- extract-numeric-suffix - [basename] - (if-let [[_ p1 p2] (re-find #"(.*)-([0-9]+)$" basename)] - [p1 (+ 1 (d/parse-integer p2))] - [basename 1])) - -(s/def ::set-of-strings - (s/every ::us/string :kind set?)) - -(defn generate-unique-name - "A unique name generator" - [used basename] - (us/assert! ::set-of-strings used) - (us/assert! ::us/string basename) - ;; We have add a condition because UX doesn't want numbers on - ;; layer names. - (if-not (contains? used basename) - basename - (let [[prefix initial] (extract-numeric-suffix basename)] - (loop [counter initial] - (let [candidate (str prefix "-" counter)] - (if (contains? used candidate) - (recur (inc counter)) - candidate)))))) - (defn clone-object "Gets a copy of the object and all its children, with new ids and with the parent-children links correctly set. Admits functions diff --git a/common/test/common_tests/helpers/files.cljc b/common/test/common_tests/helpers/files.cljc index 694505139..66fe15034 100644 --- a/common/test/common_tests/helpers/files.cljc +++ b/common/test/common_tests/helpers/files.cljc @@ -126,7 +126,7 @@ (fn [file-data] (let [id (uuid/next) props (merge {:id id - :name "Color-1" + :name "Color 1" :color "#000000" :opacity 1} props)] @@ -140,7 +140,7 @@ (fn [file-data] (let [id (uuid/next) props (merge {:id id - :name "Typography-1" + :name "Typography 1" :font-id "sourcesanspro" :font-family "sourcesanspro" :font-size "14" diff --git a/common/test/common_tests/types_file_test.cljc b/common/test/common_tests/types_file_test.cljc index d4af3db5b..bf8a04423 100644 --- a/common/test/common_tests/types_file_test.cljc +++ b/common/test/common_tests/types_file_test.cljc @@ -101,7 +101,7 @@ ;; false) (t/is (= (count pages) 2)) - (t/is (= (:name (first pages)) "Page-1")) + (t/is (= (:name (first pages)) "Page 1")) (t/is (= (:name (second pages)) "Library backup")) (t/is (= (count components) 1)) diff --git a/frontend/src/app/main/data/dashboard.cljs b/frontend/src/app/main/data/dashboard.cljs index 3cd752a52..659b2afe9 100644 --- a/frontend/src/app/main/data/dashboard.cljs +++ b/frontend/src/app/main/data/dashboard.cljs @@ -7,6 +7,7 @@ (ns app.main.data.dashboard (:require [app.common.data :as d] + [app.common.pages :as cp] [app.common.spec :as us] [app.common.uuid :as uuid] [app.config :as cf] @@ -664,10 +665,12 @@ (ptk/reify ::create-project ptk/WatchEvent (watch [_ state _] - (let [name (name (gensym (str (tr "dashboard.new-project-prefix") " "))) - team-id (:current-team-id state) - params {:name name - :team-id team-id} + (let [projects (get state :dashboard-projects) + unames (cp/retrieve-used-names projects) + name (cp/generate-unique-name unames (str (tr "dashboard.new-project-prefix") " 1")) + team-id (:current-team-id state) + params {:name name + :team-id team-id} {:keys [on-success on-error] :or {on-success identity on-error rx/throw}} (meta params)] @@ -875,7 +878,9 @@ :or {on-success identity on-error rx/throw}} (meta params) - name (name (gensym (str (tr "dashboard.new-file-prefix") " "))) + files (get state :dashboard-files) + unames (cp/retrieve-used-names files) + name (cp/generate-unique-name unames (str (tr "dashboard.new-file-prefix") " 1")) features (cond-> #{} (features/active-feature? state :components-v2) (conj "components/v2")) @@ -1067,8 +1072,12 @@ pparams (:path-params route) in-project? (contains? pparams :project-id) name (if in-project? - (name (gensym (str (tr "dashboard.new-file-prefix") " "))) - (name (gensym (str (tr "dashboard.new-project-prefix") " ")))) + (let [files (get state :dashboard-files) + unames (cp/retrieve-used-names files)] + (cp/generate-unique-name unames (str (tr "dashboard.new-file-prefix") " 1"))) + (let [projects (get state :dashboard-projects) + unames (cp/retrieve-used-names projects)] + (cp/generate-unique-name unames (str (tr "dashboard.new-project-prefix") " 1")))) params (if in-project? {:project-id (:project-id pparams) :name name} diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index a57ec88d6..08c17de41 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -15,6 +15,7 @@ [app.common.geom.proportions :as gpp] [app.common.geom.shapes :as gsh] [app.common.logging :as log] + [app.common.pages :as cp] [app.common.pages.changes-builder :as pcb] [app.common.pages.helpers :as cph] [app.common.spec :as us] @@ -408,8 +409,8 @@ ptk/WatchEvent (watch [it state _] (let [pages (get-in state [:workspace-data :pages-index]) - unames (ctst/retrieve-used-names pages) - name (ctst/generate-unique-name unames "Page-1") + unames (cp/retrieve-used-names pages) + name (cp/generate-unique-name unames "Page 1") changes (-> (pcb/empty-changes it) (pcb/add-empty-page id name))] @@ -423,9 +424,9 @@ (watch [it state _] (let [id (uuid/next) pages (get-in state [:workspace-data :pages-index]) - unames (ctst/retrieve-used-names pages) + unames (cp/retrieve-used-names pages) page (get-in state [:workspace-data :pages-index page-id]) - name (ctst/generate-unique-name unames (:name page)) + name (cp/generate-unique-name unames (:name page)) no_thumbnails_objects (->> (:objects page) (d/mapm (fn [_ val] (dissoc val :use-for-thumbnail?)))) diff --git a/frontend/src/app/main/data/workspace/interactions.cljs b/frontend/src/app/main/data/workspace/interactions.cljs index 3eefbff6c..9a141f22d 100644 --- a/frontend/src/app/main/data/workspace/interactions.cljs +++ b/frontend/src/app/main/data/workspace/interactions.cljs @@ -8,6 +8,7 @@ (:require [app.common.data :as d] [app.common.geom.point :as gpt] + [app.common.pages :as cp] [app.common.pages.changes-builder :as pcb] [app.common.pages.helpers :as cph] [app.common.spec :as us] @@ -33,7 +34,7 @@ flows (get-in page [:options :flows] []) unames (into #{} (map :name flows)) - name (ctst/generate-unique-name unames "Flow-1") + name (cp/generate-unique-name unames "Flow 1") new-flow {:id (uuid/next) :name name diff --git a/frontend/src/app/main/data/workspace/libraries_helpers.cljs b/frontend/src/app/main/data/workspace/libraries_helpers.cljs index 78c80455a..261b3ba5b 100644 --- a/frontend/src/app/main/data/workspace/libraries_helpers.cljs +++ b/frontend/src/app/main/data/workspace/libraries_helpers.cljs @@ -73,7 +73,7 @@ (pcb/with-objects objects))] (let [group-name (if (= 1 (count shapes)) (:name (first shapes)) - "Component-1")] + "Component 1")] (dwg/prepare-create-group it objects page-id diff --git a/frontend/src/app/main/data/workspace/selection.cljs b/frontend/src/app/main/data/workspace/selection.cljs index 48d1b4424..6ad54b229 100644 --- a/frontend/src/app/main/data/workspace/selection.cljs +++ b/frontend/src/app/main/data/workspace/selection.cljs @@ -15,7 +15,6 @@ [app.common.pages.helpers :as cph] [app.common.spec :as us] [app.common.types.page :as ctp] - [app.common.types.shape-tree :as ctt] [app.common.types.shape.interactions :as ctsi] [app.common.uuid :as uuid] [app.main.data.modal :as md] @@ -290,7 +289,7 @@ move to the desired position, and recalculate parents and frames as needed." [all-objects page ids delta it] (let [shapes (map (d/getf all-objects) ids) - unames (volatile! (ctt/retrieve-used-names (:objects page))) + unames (volatile! (cp/retrieve-used-names (:objects page))) update-unames! (fn [new-name] (vswap! unames conj new-name)) all-ids (reduce #(into %1 (cons %2 (cph/get-children-ids all-objects %2))) (d/ordered-set) ids) ids-map (into {} (map #(vector % (uuid/next))) all-ids) @@ -367,7 +366,7 @@ (let [update-flows (fn [flows] (reduce (fn [flows frame] - (let [name (ctt/generate-unique-name @unames "Flow-1") + (let [name (cp/generate-unique-name @unames "Flow 1") _ (vswap! unames conj name) new-flow {:id (uuid/next) :name name diff --git a/frontend/src/app/main/data/workspace/svg_upload.cljs b/frontend/src/app/main/data/workspace/svg_upload.cljs index 07b510349..e807d1937 100644 --- a/frontend/src/app/main/data/workspace/svg_upload.cljs +++ b/frontend/src/app/main/data/workspace/svg_upload.cljs @@ -12,6 +12,7 @@ [app.common.geom.point :as gpt] [app.common.geom.shapes :as gsh] [app.common.math :as mth] + [app.common.pages :as cp] [app.common.pages.changes-builder :as pcb] [app.common.pages.helpers :as cph] [app.common.spec :as us :refer [max-safe-int min-safe-int]] @@ -493,7 +494,7 @@ (- y vb-y (/ vb-height 2)) y)) - unames (ctst/retrieve-used-names objects) + unames (cp/retrieve-used-names objects) svg-name (str/replace (:name svg-data) ".svg" "") diff --git a/frontend/test/frontend_tests/state_components_sync_test.cljs b/frontend/test/frontend_tests/state_components_sync_test.cljs index bdf8a9b4a..538a809e9 100644 --- a/frontend/test/frontend_tests/state_components_sync_test.cljs +++ b/frontend/test/frontend_tests/state_components_sync_test.cljs @@ -166,12 +166,12 @@ ; ; [Page] ; Root Frame - ; Component-1* #--> Component-1 + ; Component 1* #--> Component 1 ; #{:shapes-group} ; Rect 2 ---> Rect 2 ; - ; [Component-1] - ; Component-1 + ; [Component 1] + ; Component 1 ; Rect 1 ; Rect 2 ; @@ -180,14 +180,14 @@ new-state (thp/id :instance1))] - (t/is (= (:name group) "Component-1")) + (t/is (= (:name group) "Component 1")) (t/is (= (:touched group) #{:shapes-group})) (t/is (not= (:shape-ref group) nil)) (t/is (= (:name shape2) "Rect 2")) (t/is (= (:touched shape2) nil)) (t/is (not= (:shape-ref shape2) nil)) - (t/is (= (:name c-group) "Component-1")) + (t/is (= (:name c-group) "Component 1")) (t/is (= (:touched c-group) nil)) (t/is (= (:shape-ref c-group) nil)) (t/is (= (:name c-shape2) "Rect 1")) @@ -227,14 +227,14 @@ ; ; [Page] ; Root Frame - ; Component-1* #--> Component-1 + ; Component 1* #--> Component 1 ; #{:shapes-group} ; Rect 2 ---> Rect 2 ; Rect 1 ---> Rect 1 ; Rect 3 ---> Rect 3 ; - ; [Component-1] - ; Component-1 + ; [Component 1] + ; Component 1 ; Rect 1 ; Rect 2 ; Rect 3 @@ -245,7 +245,7 @@ new-state (thp/id :instance1))] - (t/is (= (:name group) "Component-1")) + (t/is (= (:name group) "Component 1")) (t/is (= (:touched group) #{:shapes-group})) (t/is (= (:name shape1) "Rect 2")) (t/is (= (:touched shape1) nil)) @@ -257,7 +257,7 @@ (t/is (= (:touched shape3) nil)) (t/is (not= (:shape-ref shape3) nil)) - (t/is (= (:name c-group) "Component-1")) + (t/is (= (:name c-group) "Component 1")) (t/is (= (:touched c-group) nil)) (t/is (= (:shape-ref c-group) nil)) (t/is (= (:name c-shape1) "Rect 1")) @@ -389,7 +389,7 @@ new-state (thp/id :instance2))] - ; TODO: get and check the instance inside component [Group-1] + ; TODO: get and check the instance inside component [Group 1] (t/is (= (:name instance2) "Group")) (t/is (= (:touched instance2) nil)) @@ -478,7 +478,7 @@ new-state (thp/id :instance2))] - ; TODO: get and check the instance inside component [Group-1] + ; TODO: get and check the instance inside component [Group 1] (t/is (= (:name instance2) "Group")) (t/is (= (:touched instance2) nil)) @@ -567,7 +567,7 @@ new-state (thp/id :instance2))] - ; TODO: get and check the instance inside component [Group-1] + ; TODO: get and check the instance inside component [Group 1] (t/is (= (:name instance2) "Group")) (t/is (= (:touched instance2) nil)) @@ -737,12 +737,12 @@ ; ; [Page] ; Root Frame - ; Component-1 #--> Component-1 + ; Component 1 #--> Component 1 ; Rect 1 ---> Rect 1 ; Rect 2 ---> Rect 2 ; - ; [Component-1] - ; Component-1 + ; [Component 1] + ; Component 1 ; Rect 1 ; Rect 2 ; @@ -752,7 +752,7 @@ new-state (thp/id :instance1))] - (t/is (= (:name group) "Component-1")) + (t/is (= (:name group) "Component 1")) (t/is (= (:touched group) nil)) (t/is (not= (:shape-ref group) nil)) (t/is (= (:name shape1) "Rect 1")) @@ -762,7 +762,7 @@ (t/is (= (:touched shape2) nil)) (t/is (not= (:shape-ref shape2) nil)) - (t/is (= (:name c-group) "Component-1")) + (t/is (= (:name c-group) "Component 1")) (t/is (= (:touched c-group) nil)) (t/is (= (:shape-ref c-group) nil)) (t/is (= (:name c-shape1) "Rect 1")) @@ -803,13 +803,13 @@ ; ; [Page] ; Root Frame - ; Component-1 #--> Component-1 + ; Component 1 #--> Component 1 ; Rect 1 ---> Rect 1 ; Rect 2 ---> Rect 2 ; Rect 3 ---> Rect 3 ; - ; [Component-1] - ; Component-1 + ; [Component 1] + ; Component 1 ; Rect 1 ; Rect 2 ; Rect 3 @@ -819,7 +819,7 @@ new-state (thp/id :instance1))] - (t/is (= (:name group) "Component-1")) + (t/is (= (:name group) "Component 1")) (t/is (= (:touched group) nil)) (t/is (not= (:shape-ref group) nil)) (t/is (= (:name shape1) "Rect 1")) @@ -832,7 +832,7 @@ (t/is (= (:touched shape3) nil)) (t/is (not= (:shape-ref shape3) nil)) - (t/is (= (:name c-group) "Component-1")) + (t/is (= (:name c-group) "Component 1")) (t/is (= (:touched c-group) nil)) (t/is (= (:shape-ref c-group) nil)) (t/is (= (:name c-shape1) "Rect 1")) @@ -1144,7 +1144,7 @@ new-state (thp/id :instance2))] - ; TODO: get and check the instance inside component [Group-1] + ; TODO: get and check the instance inside component [Group 1] (t/is (= (:name instance2) "Group")) (t/is (= (:touched instance2) nil)) @@ -1517,11 +1517,11 @@ ; ; [Page] ; Root Frame - ; Component-1 #--> Component-1 + ; Component 1 #--> Component 1 ; Rect 2 ---> Rect 2 ; - ; [Component-1] - ; Component-1 + ; [Component 1] + ; Component 1 ; Rect 2 ; (let [[[group shape2] [c-group c-shape2] component] @@ -1529,14 +1529,14 @@ new-state (thp/id :instance1))] - (t/is (= (:name group) "Component-1")) + (t/is (= (:name group) "Component 1")) (t/is (= (:touched group) nil)) (t/is (not= (:shape-ref group) nil)) (t/is (= (:name shape2) "Rect 2")) (t/is (= (:touched shape2) nil)) (t/is (not= (:shape-ref shape2) nil)) - (t/is (= (:name c-group) "Component-1")) + (t/is (= (:name c-group) "Component 1")) (t/is (= (:touched c-group) nil)) (t/is (= (:shape-ref c-group) nil)) (t/is (= (:name c-shape2) "Rect 2")) @@ -1576,13 +1576,13 @@ ; ; [Page] ; Root Frame - ; Component-1 #--> Component-1 + ; Component 1 #--> Component 1 ; Rect 2 ---> Rect 2 ; Rect 1 ---> Rect 1 ; Rect 3 ---> Rect 3 ; - ; [Component-1] - ; Component-1 + ; [Component 1] + ; Component 1 ; Rect 2 ; Rect 1 ; Rect 3 @@ -1592,7 +1592,7 @@ new-state (thp/id :instance1))] - (t/is (= (:name group) "Component-1")) + (t/is (= (:name group) "Component 1")) (t/is (= (:touched group) nil)) (t/is (not= (:shape-ref group) nil)) (t/is (= (:touched shape1) nil)) @@ -1605,7 +1605,7 @@ (t/is (not= (:shape-ref shape3) nil)) (t/is (= (:name shape3) "Rect 3")) - (t/is (= (:name c-group) "Component-1")) + (t/is (= (:name c-group) "Component 1")) (t/is (= (:touched c-group) nil)) (t/is (= (:shape-ref c-group) nil)) (t/is (= (:name c-shape1) "Rect 2")) @@ -1737,7 +1737,7 @@ new-state (thp/id :instance2))] - ; TODO: get and check the instance inside component [Group-1] + ; TODO: get and check the instance inside component [Group 1] (t/is (= (:name instance2) "Group")) (t/is (= (:touched instance2) nil)) @@ -1826,7 +1826,7 @@ new-state (thp/id :instance2))] - ; TODO: get and check the instance inside component [Group-1] + ; TODO: get and check the instance inside component [Group 1] (t/is (= (:name instance2) "Group")) (t/is (= (:touched instance2) nil)) @@ -1916,7 +1916,7 @@ new-state (thp/id :instance2))] - ; TODO: get and check the instance inside component [Group-1] + ; TODO: get and check the instance inside component [Group 1] (t/is (= (:name instance2) "Group")) (t/is (= (:touched instance2) nil)) diff --git a/frontend/test/frontend_tests/state_components_test.cljs b/frontend/test/frontend_tests/state_components_test.cljs index 8b83e1e75..e0bfdfe84 100644 --- a/frontend/test/frontend_tests/state_components_test.cljs +++ b/frontend/test/frontend_tests/state_components_test.cljs @@ -30,7 +30,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"})) + {:name "Rect 1"})) store (the/prepare-store state done (fn [new-state] @@ -43,12 +43,12 @@ ; ; [Page] ; Root Frame - ; Rect-1 #--> Rect-1 - ; Rect-1 ---> Rect-1 + ; Rect 1 #--> Rect 1 + ; Rect 1 ---> Rect 1 ; - ; [Rect-1] - ; Rect-1 - ; Rect-1 + ; [Rect 1] + ; Rect 1 + ; Rect 1 ; (let [shape1 (thp/get-shape new-state :shape1) @@ -59,11 +59,11 @@ file (wsh/get-local-file new-state)] - (t/is (= (:name shape1) "Rect-1")) - (t/is (= (:name group) "Rect-1")) - (t/is (= (:name component) "Rect-1")) - (t/is (= (:name c-shape1) "Rect-1")) - (t/is (= (:name c-group) "Rect-1")) + (t/is (= (:name shape1) "Rect 1")) + (t/is (= (:name group) "Rect 1")) + (t/is (= (:name component) "Rect 1")) + (t/is (= (:name c-shape1) "Rect 1")) + (t/is (= (:name c-group) "Rect 1")) (thl/is-from-file group file))))] @@ -81,7 +81,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"}))] + {:name "Rect 1"}))] (->> state (the/do-update (dw/select-shape (thp/id :shape1))) @@ -97,11 +97,11 @@ file (wsh/get-local-file new-state)] - (t/is (= (:name shape1) "Rect-1")) - (t/is (= (:name group) "Component-1")) - (t/is (= (:name component) "Component-1")) - (t/is (= (:name c-shape1) "Rect-1")) - (t/is (= (:name c-group) "Component-1")) + (t/is (= (:name shape1) "Rect 1")) + (t/is (= (:name group) "Component 1")) + (t/is (= (:name component) "Component 1")) + (t/is (= (:name c-shape1) "Rect 1")) + (t/is (= (:name c-group) "Component 1")) (thl/is-from-file group file)))) @@ -113,7 +113,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"}) + {:name "Rect 1"}) (thp/sample-shape :shape2 :rect {:name "Rect-2"})) @@ -123,13 +123,13 @@ ; ; [Page] ; Root Frame - ; Component-1 #--> Component-1 - ; Rect-1 ---> Rect-1 + ; Component 1 #--> Component 1 + ; Rect 1 ---> Rect 1 ; Rect-2 ---> Rect-2 ; - ; [Component-1] - ; Component-1 - ; Rect-1 + ; [Component 1] + ; Component 1 + ; Rect 1 ; Rect-2 ; (let [shape1 (thp/get-shape new-state :shape1) @@ -143,12 +143,12 @@ file (wsh/get-local-file new-state)] - (t/is (= (:name group) "Component-1")) - (t/is (= (:name shape1) "Rect-1")) + (t/is (= (:name group) "Component 1")) + (t/is (= (:name shape1) "Rect 1")) (t/is (= (:name shape2) "Rect-2")) - (t/is (= (:name component) "Component-1")) - (t/is (= (:name c-group) "Component-1")) - (t/is (= (:name c-shape1) "Rect-1")) + (t/is (= (:name component) "Component 1")) + (t/is (= (:name c-group) "Component 1")) + (t/is (= (:name c-shape1) "Rect 1")) (t/is (= (:name c-shape2) "Rect-2")) (thl/is-from-file group file))))] @@ -166,7 +166,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"}) + {:name "Rect 1"}) (thp/sample-shape :shape2 :rect {:name "Rect-2"}) (thp/group-shapes :group1 @@ -180,12 +180,12 @@ ; [Page] ; Root Frame ; Group #--> Group - ; Rect-1 ---> Rect-1 + ; Rect 1 ---> Rect 1 ; Rect-2 ---> Rect-2 ; ; [Group] ; Group - ; Rect-1 + ; Rect 1 ; Rect-2 ; (let [[[group shape1 shape2] @@ -197,11 +197,11 @@ file (wsh/get-local-file new-state)] - (t/is (= (:name shape1) "Rect-1")) + (t/is (= (:name shape1) "Rect 1")) (t/is (= (:name shape2) "Rect-2")) (t/is (= (:name group) "Group")) (t/is (= (:name component) "Group")) - (t/is (= (:name c-shape1) "Rect-1")) + (t/is (= (:name c-shape1) "Rect 1")) (t/is (= (:name c-shape2) "Rect-2")) (t/is (= (:name c-group) "Group")) @@ -219,7 +219,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"}) + {:name "Rect 1"}) (thp/make-component :instance1 :component1 [(thp/id :shape1)])) @@ -229,18 +229,18 @@ ; ; [Page] ; Root Frame - ; Rect-1 #--> Rect-1 - ; Rect-1 @--> Rect-1 - ; Rect-1 ---> Rect-1 + ; Rect 1 #--> Rect 1 + ; Rect 1 @--> Rect 1 + ; Rect 1 ---> Rect 1 ; - ; [Rect-1] - ; Rect-1 - ; Rect-1 + ; [Rect 1] + ; Rect 1 + ; Rect 1 ; - ; [Rect-1] - ; Rect-1 - ; Rect-1 @--> Rect-1 - ; Rect-1 ---> Rect-1 + ; [Rect 1] + ; Rect 1 + ; Rect 1 @--> Rect 1 + ; Rect 1 ---> Rect 1 ; (let [[[instance1 shape1] [c-instance1 c-shape1] @@ -257,19 +257,19 @@ new-state (:parent-id instance1))] - (t/is (= (:name shape1) "Rect-1")) - (t/is (= (:name instance1) "Rect-1")) - (t/is (= (:name component1) "Rect-1")) - (t/is (= (:name c-shape1) "Rect-1")) - (t/is (= (:name c-instance1) "Rect-1")) + (t/is (= (:name shape1) "Rect 1")) + (t/is (= (:name instance1) "Rect 1")) + (t/is (= (:name component1) "Rect 1")) + (t/is (= (:name c-shape1) "Rect 1")) + (t/is (= (:name c-instance1) "Rect 1")) - (t/is (= (:name shape1') "Rect-1")) - (t/is (= (:name instance1') "Rect-1")) - (t/is (= (:name instance2) "Rect-1")) - (t/is (= (:name component2) "Rect-1")) - (t/is (= (:name c-shape1') "Rect-1")) - (t/is (= (:name c-instance1') "Rect-1")) - (t/is (= (:name c-instance2) "Rect-1")))))] + (t/is (= (:name shape1') "Rect 1")) + (t/is (= (:name instance1') "Rect 1")) + (t/is (= (:name instance2) "Rect 1")) + (t/is (= (:name component2) "Rect 1")) + (t/is (= (:name c-shape1') "Rect 1")) + (t/is (= (:name c-instance1') "Rect 1")) + (t/is (= (:name c-instance2) "Rect 1")))))] (ptk/emit! store @@ -283,7 +283,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"}) + {:name "Rect 1"}) (thp/make-component :instance1 :component-1 [(thp/id :shape1)])) @@ -296,11 +296,11 @@ ; [Page] ; Root Frame ; Rect-2 #--> Renamed component - ; Rect-1 ---> Rect-1 + ; Rect 1 ---> Rect 1 ; ; [Renamed] ; Renamed component - ; Rect-1 + ; Rect 1 (let [libs (wsh/get-libraries new-state) component (cph/get-component libs (:component-file instance1) @@ -319,7 +319,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"}) + {:name "Rect 1"}) (thp/make-component :instance1 :component-1 [(thp/id :shape1)])) @@ -332,16 +332,16 @@ ; ; [Page] ; Root Frame - ; Rect-1 #--> Rect-1 - ; Rect-1 ---> Rect-1 + ; Rect 1 #--> Rect 1 + ; Rect 1 ---> Rect 1 ; - ; [Rect-1] - ; Rect-1 - ; Rect-1 + ; [Rect 1] + ; Rect 1 + ; Rect 1 ; - ; [Rect-1] - ; Rect-1 - ; Rect-1 + ; [Rect 1] + ; Rect 1 + ; Rect 1 ; (let [new-component-id (->> (get-in new-state [:workspace-data @@ -363,7 +363,7 @@ new-state new-component-id)] - (t/is (= (:name component2) "Rect-1")))))] + (t/is (= (:name component2) "Rect 1")))))] (ptk/emit! store @@ -376,7 +376,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"}) + {:name "Rect 1"}) (thp/make-component :instance1 :component-1 [(thp/id :shape1)])) @@ -392,7 +392,7 @@ ; [Page] ; Root Frame ; Rect-2 - ; Rect-1 + ; Rect 1 ; (let [[instance1 shape1] (thl/resolve-noninstance @@ -420,7 +420,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"}) + {:name "Rect 1"}) (thp/make-component :instance1 :component-1 [(thp/id :shape1)])) @@ -434,14 +434,14 @@ ; ; [Page] ; Root Frame - ; Rect-1 #--> Rect-1 - ; Rect-1 ---> Rect-1 - ; Rect-1 #--> Rect-1 - ; Rect-1 ---> Rect-1 + ; Rect 1 #--> Rect 1 + ; Rect 1 ---> Rect 1 + ; Rect 1 #--> Rect 1 + ; Rect 1 ---> Rect 1 ; - ; [Rect-1] - ; Rect-1 - ; Rect-1 + ; [Rect 1] + ; Rect 1 + ; Rect 1 ; (let [new-instance-id (-> new-state wsh/lookup-selected @@ -456,10 +456,10 @@ (t/is (not= (:id instance1) (:id instance2))) (t/is (= (:id component) component-id)) - (t/is (= (:name instance2) "Rect-1")) - (t/is (= (:name shape2) "Rect-1")) - (t/is (= (:name c-instance2) "Rect-1")) - (t/is (= (:name c-shape2) "Rect-1")) + (t/is (= (:name instance2) "Rect 1")) + (t/is (= (:name shape2) "Rect 1")) + (t/is (= (:name c-instance2) "Rect 1")) + (t/is (= (:name c-shape2) "Rect 1")) (t/is (= (:component-file instance2) thp/current-file-id)))))] @@ -476,7 +476,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"}) + {:name "Rect 1"}) (thp/make-component :instance1 :component-1 [(thp/id :shape1)]) (thp/move-to-library :lib1 "Library 1") @@ -491,8 +491,8 @@ ; ; [Page] ; Root Frame - ; Rect-1 #--> Rect-1 - ; Rect-1 ---> Rect-1 + ; Rect 1 #--> Rect 1 + ; Rect 1 ---> Rect 1 ; (let [new-instance-id (-> new-state wsh/lookup-selected @@ -506,10 +506,10 @@ new-instance-id)] (t/is (= (:id component) component-id)) - (t/is (= (:name instance2) "Rect-1")) - (t/is (= (:name shape2) "Rect-1")) - (t/is (= (:name c-instance2) "Rect-1")) - (t/is (= (:name c-shape2) "Rect-1")) + (t/is (= (:name instance2) "Rect 1")) + (t/is (= (:name shape2) "Rect 1")) + (t/is (= (:name c-instance2) "Rect 1")) + (t/is (= (:name c-shape2) "Rect 1")) (t/is (= (:component-file instance2) library-id)))))] (ptk/emit! @@ -525,7 +525,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"}) + {:name "Rect 1"}) (thp/make-component :instance1 :component-1 [(thp/id :shape1)])) @@ -539,11 +539,11 @@ ; [Page] ; Root Frame ; Rect-2 - ; Rect-1 + ; Rect 1 ; ; [Rect-2] ; Rect-2 - ; Rect-1 + ; Rect 1 ; (let [[instance1 shape1] (thl/resolve-noninstance @@ -564,7 +564,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"})) + {:name "Rect 1"})) file (wsh/get-local-file state) instance1 (thp/get-shape state :instance1) @@ -577,17 +577,17 @@ ; [Page] ; Root Frame ; Group #--> Group - ; Rect-1 @--> Rect-1 - ; Rect-1 ---> Rect-1 + ; Rect 1 @--> Rect 1 + ; Rect 1 ---> Rect 1 ; - ; [Rect-1] - ; Rect-1 - ; Rect-1 + ; [Rect 1] + ; Rect 1 + ; Rect 1 ; ; [Group] ; Group - ; Rect-1 @--> Rect-1 - ; Rect-1 ---> Rect-1 + ; Rect 1 @--> Rect 1 + ; Rect 1 ---> Rect 1 ; (let [page (thp/current-page new-state) shape1 (thp/get-shape new-state :shape1) @@ -601,12 +601,12 @@ (:parent-id parent1))] (t/is (= (:name group) "Group")) - (t/is (= (:name shape1) "Rect-1")) - (t/is (= (:name shape2) "Rect-1")) + (t/is (= (:name shape1) "Rect 1")) + (t/is (= (:name shape2) "Rect 1")) (t/is (= (:name component) "Group")) (t/is (= (:name c-group) "Group")) - (t/is (= (:name c-shape1) "Rect-1")) - (t/is (= (:name c-shape2) "Rect-1")))))] + (t/is (= (:name c-shape1) "Rect 1")) + (t/is (= (:name c-shape2) "Rect 1")))))] (ptk/emit! store @@ -622,7 +622,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"}) + {:name "Rect 1"}) (thp/make-component :instance1 :component-1 [(thp/id :shape1)]) (thp/group-shapes :group1 @@ -641,21 +641,21 @@ ; ; [Page] ; Root Frame - ; Rect-1 #--> Rect-1 - ; Rect-1 @--> Rect-1 - ; Rect-1 ---> Rect-1 - ; Rect-1 #--> Rect-1 - ; Rect-1 @--> Rect-1 - ; Rect-1 ---> Rect-1 + ; Rect 1 #--> Rect 1 + ; Rect 1 @--> Rect 1 + ; Rect 1 ---> Rect 1 + ; Rect 1 #--> Rect 1 + ; Rect 1 @--> Rect 1 + ; Rect 1 ---> Rect 1 ; - ; [Rect-1] - ; Rect-1 - ; Rect-1 + ; [Rect 1] + ; Rect 1 + ; Rect 1 ; - ; [Rect-1] - ; Rect-1 - ; Rect-1 @--> Rect-1 - ; Rect-1 ---> Rect-1 + ; [Rect 1] + ; Rect 1 + ; Rect 1 @--> Rect 1 + ; Rect 1 ---> Rect 1 ; (let [new-instance-id (-> new-state wsh/lookup-selected @@ -672,12 +672,12 @@ (t/is (not= (:id instance1) (:id instance3))) (t/is (= (:id component) component-id)) - (t/is (= (:name instance3) "Rect-1")) - (t/is (= (:name shape3) "Rect-1")) - (t/is (= (:name shape4) "Rect-1")) - (t/is (= (:name c-instance3) "Rect-1")) - (t/is (= (:name c-shape3) "Rect-1")) - (t/is (= (:name c-shape4) "Rect-1")))))] + (t/is (= (:name instance3) "Rect 1")) + (t/is (= (:name shape3) "Rect 1")) + (t/is (= (:name shape4) "Rect 1")) + (t/is (= (:name c-instance3) "Rect 1")) + (t/is (= (:name c-shape3) "Rect 1")) + (t/is (= (:name c-shape4) "Rect 1")))))] (ptk/emit! store @@ -692,7 +692,7 @@ (let [state (-> thp/initial-state (thp/sample-page) (thp/sample-shape :shape1 :rect - {:name "Rect-1"}) + {:name "Rect 1"}) (thp/make-component :instance1 :component-1 [(thp/id :shape1)]) (thp/move-to-library :lib1 "Library 1") @@ -711,13 +711,13 @@ ; [Page] ; Root Frame ; Group #--> Group - ; Rect-1 @--> Rect-1 - ; Rect-1 ---> Rect-1 + ; Rect 1 @--> Rect 1 + ; Rect 1 ---> Rect 1 ; ; [Group] ; Group - ; Rect-1 @--> Rect-1 - ; Rect-1 ---> Rect-1 + ; Rect 1 @--> Rect 1 + ; Rect 1 ---> Rect 1 ; (let [instance2 (thp/get-shape new-state :instance2) @@ -727,11 +727,11 @@ (:parent-id instance2))] (t/is (= (:name group1) "Group")) - (t/is (= (:name shape1) "Rect-1")) - (t/is (= (:name shape2) "Rect-1")) + (t/is (= (:name shape1) "Rect 1")) + (t/is (= (:name shape2) "Rect 1")) (t/is (= (:name c-group1) "Group")) - (t/is (= (:name c-shape1) "Rect-1")) - (t/is (= (:name c-shape2) "Rect-1")) + (t/is (= (:name c-shape1) "Rect 1")) + (t/is (= (:name c-shape2) "Rect 1")) (t/is (= (:component-file group1) thp/current-file-id)) (t/is (= (:component-file shape1) library-id)) (t/is (= (:component-file shape2) nil)) diff --git a/frontend/test/frontend_tests/util_snap_data_test.cljs b/frontend/test/frontend_tests/util_snap_data_test.cljs index 1ede8838a..31c4b03ba 100644 --- a/frontend/test/frontend_tests/util_snap_data_test.cljs +++ b/frontend/test/frontend_tests/util_snap_data_test.cljs @@ -19,7 +19,7 @@ (t/testing "Add empty page (only root-frame)" (let [page (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/get-current-page)) data (-> (sd/make-snap-data) @@ -28,7 +28,7 @@ (t/testing "Create simple shape on root" (let [file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/create-rect {:x 0 :y 0 @@ -57,7 +57,7 @@ (t/testing "Add page with single empty frame" (let [file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/add-artboard {:x 0 :y 0 @@ -81,7 +81,7 @@ (t/testing "Add page with some shapes inside frames" (let [file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/add-artboard {:x 0 :y 0 @@ -112,7 +112,7 @@ (t/testing "Add a global guide" (let [file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/add-guide {:position 50 :axis :x}) (fb/add-artboard {:x 200 :y 200 :width 100 :height 100}) (fb/close-artboard)) @@ -140,7 +140,7 @@ (t/testing "Add a frame guide" (let [file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/add-artboard {:x 200 :y 200 :width 100 :height 100}) (fb/close-artboard)) @@ -171,7 +171,7 @@ (t/deftest test-update-index (t/testing "Create frame on root and then remove it." (let [file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/add-artboard {:x 0 :y 0 @@ -201,7 +201,7 @@ (t/testing "Create simple shape on root. Then remove it" (let [file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/create-rect {:x 0 :y 0 @@ -229,7 +229,7 @@ (t/testing "Create shape inside frame, then remove it" (let [file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/add-artboard {:x 0 :y 0 @@ -260,7 +260,7 @@ (t/testing "Create global guide then remove it" (let [file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/add-guide {:position 50 :axis :x})) guide-id (:last-id file) @@ -293,7 +293,7 @@ (t/testing "Create frame guide then remove it" (let [file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/add-artboard {:x 200 :y 200 :width 100 :height 100}) (fb/close-artboard)) @@ -324,7 +324,7 @@ (t/testing "Update frame coordinates" (let [file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/add-artboard {:x 0 :y 0 @@ -358,7 +358,7 @@ (t/testing "Update shape coordinates" (let [file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/create-rect {:x 0 :y 0 @@ -388,7 +388,7 @@ (t/testing "Update global guide" (let [guide {:position 50 :axis :x} file (-> (fb/create-file "Test") - (fb/add-page {:name "Page-1"}) + (fb/add-page {:name "Page 1"}) (fb/add-guide guide)) guide-id (:last-id file)