mirror of
https://github.com/penpot/penpot.git
synced 2025-01-10 08:50:57 -05:00
117 lines
6.5 KiB
Clojure
117 lines
6.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.duplicated-pages-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)
|
|
|
|
;; Related .penpot file: common/test/cases/duplicated-pages.penpot
|
|
(t/deftest test-propagation-with-anidated-components
|
|
(letfn [(setup []
|
|
(-> (thf/sample-file :file1 :page-label :page-1)
|
|
(tho/add-frame :frame-ellipse-1 :fills [])
|
|
(ths/add-sample-shape :ellipse-shape-1 :parent-label :frame-ellipse-1 :fills (ths/sample-fills-color :fill-color "#204fdc"))
|
|
(thc/make-component :ellipse-1 :frame-ellipse-1)
|
|
|
|
(tho/add-frame :frame-ellipse-2 :fills [])
|
|
(ths/add-sample-shape :ellipse-shape-2 :parent-label :frame-ellipse-2 :fills (ths/sample-fills-color :fill-color "#dc3020"))
|
|
(thc/make-component :ellipse-2 :frame-ellipse-2)
|
|
|
|
(tho/add-frame :frame-ellipse-3 :fills [])
|
|
(ths/add-sample-shape :ellipse-shape-3 :parent-label :frame-ellipse-3 :fills (ths/sample-fills-color :fill-color "#d8dc20"))
|
|
(thc/make-component :ellipse-3 :frame-ellipse-3)
|
|
|
|
(tho/add-frame :frame-board-1 :fills (ths/sample-fills-color :fill-color "#FFFFFF"))
|
|
(thc/instantiate-component :ellipse-1 :copy-ellipse-1 :parent-label :frame-board-1 :children-labels [:ellipse-shape-1-board-1])
|
|
(thc/make-component :board-1 :frame-board-1)
|
|
|
|
(thf/add-sample-page :page-2)
|
|
(tho/add-frame :frame-board-2 :fills (ths/sample-fills-color :fill-color "#FFFFFF"))
|
|
(thc/instantiate-component :board-1 :copy-board-1 :parent-label :frame-board-2 :children-labels [:board-1-board-2])
|
|
(thc/make-component :board-2 :frame-board-2)
|
|
|
|
(thf/add-sample-page :page-3)
|
|
(tho/add-frame :frame-board-3 :fills (ths/sample-fills-color :fill-color "#FFFFFF"))
|
|
(thc/instantiate-component :board-2 :copy-board-2 :parent-label :frame-board-3 :children-labels [:board-2-board-3])
|
|
(thc/make-component :board-3 :frame-board-3)))
|
|
|
|
(propagate-all-component-changes [file]
|
|
(-> file
|
|
(tho/propagate-component-changes :ellipse-1)
|
|
(tho/propagate-component-changes :ellipse-2)
|
|
(tho/propagate-component-changes :ellipse-3)
|
|
(tho/propagate-component-changes :board-1)
|
|
(tho/propagate-component-changes :board-2)))
|
|
|
|
(reset-all-overrides [file]
|
|
(-> file
|
|
(tho/reset-overrides-in-first-child :frame-board-1 :page-label :page-1)
|
|
(tho/reset-overrides-in-first-child :copy-board-1 :page-label :page-2)
|
|
(propagate-all-component-changes)))
|
|
|
|
(fill-colors [file]
|
|
[(tho/bottom-fill-color file :frame-ellipse-1 :page-label :page-1)
|
|
(tho/bottom-fill-color file :frame-ellipse-2 :page-label :page-1)
|
|
(tho/bottom-fill-color file :frame-ellipse-3 :page-label :page-1)
|
|
(tho/bottom-fill-color file :frame-board-1 :page-label :page-1)
|
|
(tho/bottom-fill-color file :frame-board-2 :page-label :page-2)
|
|
(tho/bottom-fill-color file :frame-board-3 :page-label :page-3)
|
|
(->
|
|
(ths/get-shape file :frame-board-1 :page-label :page-1)
|
|
:fills
|
|
first
|
|
:fill-color)
|
|
(->
|
|
(ths/get-shape file :copy-board-1 :page-label :page-2)
|
|
:fills
|
|
first
|
|
:fill-color)])
|
|
|
|
(validate [file validator]
|
|
(validator file)
|
|
file)]
|
|
|
|
(-> (setup)
|
|
;; Swap the copy inside main of Board1 to Ellipse2, and see that it propagates to copies in other pages.
|
|
(tho/swap-component-in-shape :copy-ellipse-1 :ellipse-2 :page-label :page-1 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#204fdc" "#dc3020" "#d8dc20" "#dc3020" "#dc3020" "#dc3020" "#FFFFFF" "#FFFFFF"])))
|
|
|
|
;; Change color of Ellipse2 main, and see that it propagates to all copies.
|
|
(tho/update-bottom-color :frame-ellipse-2 "#abcdef" :page-label :page-1 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#204fdc" "#abcdef" "#d8dc20" "#abcdef" "#abcdef" "#abcdef" "#FFFFFF" "#FFFFFF"])))
|
|
|
|
;;Change color of copies of Ellipse2 and see that the override works.
|
|
(tho/update-bottom-color :frame-board-1 "#efaade" :page-label :page-1 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#204fdc" "#abcdef" "#d8dc20" "#efaade" "#efaade" "#efaade" "#FFFFFF" "#FFFFFF"])))
|
|
(tho/update-bottom-color :copy-board-1 "#aaefcb" :page-label :page-2 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#204fdc" "#abcdef" "#d8dc20" "#efaade" "#aaefcb" "#aaefcb" "#FFFFFF" "#FFFFFF"])))
|
|
|
|
;; Reset all overrides.
|
|
(reset-all-overrides)
|
|
(validate #(t/is (= (fill-colors %) ["#204fdc" "#abcdef" "#d8dc20" "#abcdef" "#abcdef" "#abcdef" "#FFFFFF" "#FFFFFF"])))
|
|
|
|
;; Swap the copy of Ellipse2 inside copies of Board1 to Ellipse 3. Then make
|
|
;; changes in Board1 main and see that they are not propagated.
|
|
(tho/swap-component-in-first-child :copy-board-1 :ellipse-3 :page-label :page-2 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#204fdc" "#abcdef" "#d8dc20" "#abcdef" "#d8dc20" "#d8dc20" "#FFFFFF" "#FFFFFF"])))
|
|
(tho/update-color :frame-board-1 "#fabada" :page-label :page-1 :propagate-fn propagate-all-component-changes)
|
|
(validate #(t/is (= (fill-colors %) ["#204fdc" "#abcdef" "#d8dc20" "#abcdef" "#d8dc20" "#d8dc20" "#fabada" "#fabada"]))))))
|