mirror of
https://github.com/penpot/penpot.git
synced 2025-06-20 23:16:59 +02:00
132 lines
6.9 KiB
Clojure
132 lines
6.9 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.text-touched-test
|
|
(:require
|
|
[app.common.files.changes-builder :as pcb]
|
|
[app.common.logic.shapes :as cls]
|
|
[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]
|
|
[clojure.test :as t]))
|
|
|
|
(t/use-fixtures :each thi/test-fixture)
|
|
|
|
(t/deftest test-text-copy-changed-attribute
|
|
(let [;; ==== Setup
|
|
file (-> (thf/sample-file :file1)
|
|
(tho/add-frame-with-text :main-root :main-child "hello world")
|
|
(thc/make-component :component1 :main-root)
|
|
(thc/instantiate-component :component1 :copy-root {:children-labels [:copy-child]}))
|
|
page (thf/current-page file)
|
|
copy-child (ths/get-shape file :copy-child)
|
|
|
|
;; ==== Action
|
|
changes (cls/generate-update-shapes (pcb/empty-changes nil (:id page))
|
|
#{(:id copy-child)}
|
|
(fn [shape]
|
|
(assoc-in shape [:content :children 0 :children 0 :font-size] "32"))
|
|
(:objects page)
|
|
{})
|
|
|
|
file' (thf/apply-changes file changes)
|
|
copy-child' (ths/get-shape file' :copy-child)]
|
|
(t/is (= #{:content-group :text-content-attribute} (:touched copy-child')))))
|
|
|
|
(t/deftest test-text-copy-changed-text
|
|
(let [;; ==== Setup
|
|
file (-> (thf/sample-file :file1)
|
|
(tho/add-frame-with-text :main-root :main-child "hello world")
|
|
(thc/make-component :component1 :main-root)
|
|
(thc/instantiate-component :component1 :copy-root {:children-labels [:copy-child]}))
|
|
page (thf/current-page file)
|
|
copy-child (ths/get-shape file :copy-child)
|
|
|
|
;; ==== Action
|
|
changes (cls/generate-update-shapes (pcb/empty-changes nil (:id page))
|
|
#{(:id copy-child)}
|
|
(fn [shape]
|
|
(assoc-in shape [:content :children 0 :children 0 :text] "Bye"))
|
|
(:objects page)
|
|
{})
|
|
|
|
file' (thf/apply-changes file changes)
|
|
copy-child' (ths/get-shape file' :copy-child)]
|
|
(t/is (= #{:content-group :text-content-text} (:touched copy-child')))))
|
|
|
|
(t/deftest test-text-copy-changed-both
|
|
(let [;; ==== Setup
|
|
file (-> (thf/sample-file :file1)
|
|
(tho/add-frame-with-text :main-root :main-child "hello world")
|
|
(thc/make-component :component1 :main-root)
|
|
(thc/instantiate-component :component1 :copy-root {:children-labels [:copy-child]}))
|
|
page (thf/current-page file)
|
|
copy-child (ths/get-shape file :copy-child)
|
|
|
|
;; ==== Action
|
|
changes (cls/generate-update-shapes (pcb/empty-changes nil (:id page))
|
|
#{(:id copy-child)}
|
|
(fn [shape]
|
|
(-> shape
|
|
(assoc-in [:content :children 0 :children 0 :font-size] "32")
|
|
(assoc-in [:content :children 0 :children 0 :text] "Bye")))
|
|
(:objects page)
|
|
{})
|
|
|
|
file' (thf/apply-changes file changes)
|
|
copy-child' (ths/get-shape file' :copy-child)]
|
|
(t/is (= #{:content-group :text-content-attribute :text-content-text} (:touched copy-child')))))
|
|
|
|
(t/deftest test-text-copy-changed-structure-same-attrs
|
|
(let [;; ==== Setup
|
|
file (-> (thf/sample-file :file1)
|
|
(tho/add-frame-with-text :main-root :main-child "hello world")
|
|
(thc/make-component :component1 :main-root)
|
|
(thc/instantiate-component :component1 :copy-root {:children-labels [:copy-child]}))
|
|
page (thf/current-page file)
|
|
copy-child (ths/get-shape file :copy-child)
|
|
|
|
;; ==== Action
|
|
changes (cls/generate-update-shapes (pcb/empty-changes nil (:id page))
|
|
#{(:id copy-child)}
|
|
(fn [shape]
|
|
(let [line (get-in shape [:content :children 0 :children 0])]
|
|
(update-in shape [:content :children 0 :children]
|
|
#(conj % line))))
|
|
(:objects page)
|
|
{})
|
|
|
|
file' (thf/apply-changes file changes)
|
|
copy-child' (ths/get-shape file' :copy-child)]
|
|
(t/is (= #{:content-group :text-content-structure :text-content-structure-same-attrs} (:touched copy-child')))))
|
|
|
|
(t/deftest test-text-copy-changed-structure-diff-attrs
|
|
(let [;; ==== Setup
|
|
file (-> (thf/sample-file :file1)
|
|
(tho/add-frame-with-text :main-root :main-child "hello world")
|
|
(thc/make-component :component1 :main-root)
|
|
(thc/instantiate-component :component1 :copy-root {:children-labels [:copy-child]}))
|
|
page (thf/current-page file)
|
|
copy-child (ths/get-shape file :copy-child)
|
|
|
|
;; ==== Action
|
|
changes (cls/generate-update-shapes (pcb/empty-changes nil (:id page))
|
|
#{(:id copy-child)}
|
|
(fn [shape]
|
|
(let [line (-> shape
|
|
(get-in [:content :children 0 :children 0])
|
|
(assoc :font-size "32"))]
|
|
(update-in shape [:content :children 0 :children]
|
|
#(conj % line))))
|
|
(:objects page)
|
|
{})
|
|
|
|
file' (thf/apply-changes file changes)
|
|
copy-child' (ths/get-shape file' :copy-child)]
|
|
(t/is (= #{:content-group :text-content-structure} (:touched copy-child')))))
|
|
|