mirror of
https://github.com/penpot/penpot.git
synced 2025-01-10 08:50:57 -05:00
141 lines
7.5 KiB
Clojure
141 lines
7.5 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) KALEIDOS INC
|
|
|
|
(ns common-tests.logic.swap-as-override-test
|
|
(:require
|
|
[app.common.files.changes :as ch]
|
|
[app.common.files.changes-builder :as pcb]
|
|
[app.common.logic.libraries :as cll]
|
|
[app.common.logic.shapes :as cls]
|
|
[app.common.pprint :as pp]
|
|
[app.common.test-helpers.components :as thc]
|
|
[app.common.test-helpers.compositions :as tho]
|
|
[app.common.test-helpers.files :as thf]
|
|
[app.common.test-helpers.ids-map :as thi]
|
|
[app.common.test-helpers.shapes :as ths]
|
|
[app.common.types.component :as ctk]
|
|
[app.common.types.container :as ctn]
|
|
[app.common.types.file :as ctf]
|
|
[app.common.uuid :as uuid]
|
|
[clojure.test :as t]))
|
|
|
|
(t/use-fixtures :each thi/test-fixture)
|
|
|
|
(defn- setup []
|
|
(-> (thf/sample-file :file1)
|
|
|
|
(tho/add-simple-component :component-1 :frame-component-1 :child-component-1 :child-params {:name "child-component-1" :type :rect :fills (ths/sample-fills-color :fill-color "#111111")})
|
|
(tho/add-simple-component :component-2 :frame-component-2 :child-component-2 :child-params {:name "child-component-2" :type :rect :fills (ths/sample-fills-color :fill-color "#222222")})
|
|
(tho/add-simple-component :component-3 :frame-component-3 :child-component-3 :child-params {:name "child-component-3" :type :rect :fills (ths/sample-fills-color :fill-color "#333333")})
|
|
|
|
(tho/add-frame :frame-icon-and-text)
|
|
(thc/instantiate-component :component-1 :copy-component-1 :parent-label :frame-icon-and-text :children-labels [:component-1-icon-and-text])
|
|
(ths/add-sample-shape :text
|
|
{:type :text
|
|
:name "icon+text"
|
|
:parent-label :frame-icon-and-text})
|
|
(thc/make-component :icon-and-text :frame-icon-and-text)
|
|
|
|
(tho/add-frame :frame-panel)
|
|
(thc/instantiate-component :icon-and-text :copy-icon-and-text :parent-label :frame-panel :children-labels [:icon-and-text-panel])
|
|
(thc/make-component :panel :frame-panel)
|
|
|
|
(thc/instantiate-component :panel :copy-panel :children-labels [:copy-icon-and-text-panel])))
|
|
|
|
(defn- propagate-all-component-changes [file]
|
|
(-> file
|
|
(tho/propagate-component-changes :icon-and-text)
|
|
(tho/propagate-component-changes :panel)))
|
|
|
|
(defn- fill-colors [file]
|
|
[(tho/bottom-fill-color file :frame-icon-and-text)
|
|
(tho/bottom-fill-color file :frame-panel)
|
|
(tho/bottom-fill-color file :copy-panel)])
|
|
|
|
(defn- validate [file validator]
|
|
(validator file)
|
|
file)
|
|
|
|
;; Related .penpot file: common/test/cases/swap-as-override.penpot
|
|
(t/deftest swap-main-then-copy
|
|
(-> (setup)
|
|
;; Swap icon in icon+text main. Check that it propagates to copies.
|
|
(tho/swap-component-in-shape :copy-component-1 :component-2 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#222222" "#222222" "#222222"])))
|
|
|
|
;; Change color of icon in icon+text main. Check that it propagates to copies.
|
|
(tho/update-bottom-color :frame-icon-and-text "#333333" :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#333333" "#333333" "#333333"])))
|
|
|
|
;; Swap icon inside panel main. Check it propagates to panel copy.
|
|
(tho/swap-component-in-first-child :copy-icon-and-text :component-1 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#333333" "#111111" "#111111"])))
|
|
|
|
;; Change color of icon in icon+text. Check that it does not propagate.
|
|
(tho/update-bottom-color :frame-icon-and-text "#444444" :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#444444" "#111111" "#111111"])))
|
|
|
|
;; Change color of icon in panel main. Check that it propagates.
|
|
(tho/update-bottom-color :frame-panel "#555555" :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#444444" "#555555" "#555555"])))))
|
|
|
|
(t/deftest swap-copy-then-main
|
|
(-> (setup)
|
|
;; Swap icon inside panel main. Check that it propagates to panel copy.
|
|
(tho/swap-component-in-first-child :copy-icon-and-text :component-2 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#111111" "#222222" "#222222"])))
|
|
|
|
;; Change color of icon in icon+text. Check that it does not propagate.
|
|
(tho/update-bottom-color :frame-icon-and-text "#333333" :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#333333" "#222222" "#222222"])))
|
|
|
|
;;Change color of icon in panel main. Check that it propagates
|
|
(tho/update-bottom-color :frame-panel "#444444" :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#333333" "#444444" "#444444"])))
|
|
|
|
;; Swap icon in icon+text main. Check that it does not propagate.
|
|
(tho/swap-component-in-shape :copy-component-1 :component-2 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#222222" "#444444" "#444444"])))
|
|
|
|
;; Change color of icon in icon+text. Check that it does not propagate.
|
|
(tho/update-bottom-color :frame-icon-and-text "#555555" :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#555555" "#444444" "#444444"])))))
|
|
|
|
(t/deftest swap-copy-then-2nd-copy
|
|
(-> (setup)
|
|
;; Swap icon inside panel main. Check that it propagates to panel copy.
|
|
(tho/swap-component-in-first-child :copy-icon-and-text :component-2 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#111111" "#222222" "#222222"])))
|
|
|
|
;; Swap icon inside panel copy.
|
|
(tho/swap-component-in-first-child :copy-icon-and-text-panel :component-1 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#111111" "#222222" "#111111"])))
|
|
|
|
;; Change color of icon in icon+text. Check that it does not propagate.
|
|
(tho/update-bottom-color :frame-icon-and-text "#333333" :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#333333" "#222222" "#111111"])))
|
|
|
|
;; Change color of icon in panel main. Check that it does not propagate.
|
|
(tho/update-bottom-color :frame-panel "#444444" :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#333333" "#444444" "#111111"])))))
|
|
|
|
(t/deftest swap-2nd-copy-then-copy
|
|
(-> (setup)
|
|
;; Swap icon inside panel copy
|
|
(tho/swap-component-in-first-child :copy-icon-and-text-panel :component-2 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#111111" "#111111" "#222222"])))
|
|
|
|
;; Swap icon inside panel main. Check that it does not propagate.
|
|
(tho/swap-component-in-first-child :copy-icon-and-text :component-3 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#111111" "#333333" "#222222"])))
|
|
|
|
;; Change color of icon in icon+text. Check that it does not propagate.
|
|
(tho/update-bottom-color :frame-icon-and-text "#444444" :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#444444" "#333333" "#222222"])))
|
|
|
|
;; Change color of icon in panel main. Check that it does not propagate.
|
|
(tho/update-bottom-color :frame-panel "#555555" :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#444444" "#555555" "#222222"])))))
|