mirror of
https://github.com/penpot/penpot.git
synced 2025-05-05 12:55:57 +02:00
194 lines
6.4 KiB
Clojure
194 lines
6.4 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.variants-test
|
|
(:require
|
|
[app.common.files.changes-builder :as pcb]
|
|
[app.common.logic.variants :as clv]
|
|
[app.common.test-helpers.components :as thc]
|
|
[app.common.test-helpers.files :as thf]
|
|
[app.common.test-helpers.ids-map :as thi]
|
|
[app.common.test-helpers.shapes :as ths]
|
|
[app.common.test-helpers.variants :as thv]
|
|
[clojure.test :as t]))
|
|
|
|
(t/use-fixtures :each thi/test-fixture)
|
|
|
|
(t/deftest test-update-property-name
|
|
(let [;; ==== Setup
|
|
file (-> (thf/sample-file :file1)
|
|
(thv/add-variant :v01 :c01 :m01 :c02 :m02))
|
|
v-id (-> (ths/get-shape file :v01) :id)
|
|
page (thf/current-page file)
|
|
|
|
;; ==== Action
|
|
changes (-> (pcb/empty-changes nil)
|
|
(pcb/with-page-id (:id page))
|
|
(pcb/with-library-data (:data file))
|
|
(pcb/with-objects (:objects page))
|
|
(clv/generate-update-property-name v-id 0 "NewName1")
|
|
(clv/generate-update-property-name v-id 1 "NewName2"))
|
|
|
|
|
|
file' (thf/apply-changes file changes)
|
|
|
|
|
|
|
|
;; ==== Get
|
|
comp01' (thc/get-component file' :c01)
|
|
comp02' (thc/get-component file' :c02)]
|
|
|
|
;; ==== Check
|
|
(t/is (= (-> comp01' :variant-properties first :name) "NewName1"))
|
|
(t/is (= (-> comp01' :variant-properties last :name) "NewName2"))
|
|
(t/is (= (-> comp02' :variant-properties first :name) "NewName1"))
|
|
(t/is (= (-> comp02' :variant-properties last :name) "NewName2"))))
|
|
|
|
|
|
|
|
(t/deftest test-add-new-property-without-values
|
|
(let [;; ==== Setup
|
|
file (-> (thf/sample-file :file1)
|
|
(thv/add-variant :v01 :c01 :m01 :c02 :m02))
|
|
v-id (-> (ths/get-shape file :v01) :id)
|
|
page (thf/current-page file)
|
|
|
|
comp01 (thc/get-component file :c01)
|
|
comp02 (thc/get-component file :c02)
|
|
|
|
|
|
;; ==== Action
|
|
changes (-> (pcb/empty-changes nil)
|
|
(pcb/with-page-id (:id page))
|
|
(pcb/with-library-data (:data file))
|
|
(pcb/with-objects (:objects page))
|
|
(clv/generate-add-new-property v-id))
|
|
|
|
|
|
file' (thf/apply-changes file changes)
|
|
|
|
|
|
|
|
;; ==== Get
|
|
comp01' (thc/get-component file' :c01)
|
|
comp02' (thc/get-component file' :c02)]
|
|
|
|
;; ==== Check
|
|
(t/is (= (count (:variant-properties comp01)) 1))
|
|
(t/is (= (count (:variant-properties comp01')) 2))
|
|
(t/is (= (count (:variant-properties comp02)) 1))
|
|
(t/is (= (count (:variant-properties comp02')) 2))
|
|
(t/is (= (-> comp01' :variant-properties last :value) ""))))
|
|
|
|
|
|
|
|
(t/deftest test-add-new-property-with-values
|
|
(let [;; ==== Setup
|
|
file (-> (thf/sample-file :file1)
|
|
(thv/add-variant :v01 :c01 :m01 :c02 :m02))
|
|
v-id (-> (ths/get-shape file :v01) :id)
|
|
page (thf/current-page file)
|
|
|
|
comp01 (thc/get-component file :c01)
|
|
comp02 (thc/get-component file :c02)
|
|
|
|
|
|
;; ==== Action
|
|
changes (-> (pcb/empty-changes nil)
|
|
(pcb/with-page-id (:id page))
|
|
(pcb/with-library-data (:data file))
|
|
(pcb/with-objects (:objects page))
|
|
(clv/generate-add-new-property v-id {:fill-values? true}))
|
|
|
|
|
|
file' (thf/apply-changes file changes)
|
|
|
|
|
|
|
|
;; ==== Get
|
|
comp01' (thc/get-component file' :c01)
|
|
comp02' (thc/get-component file' :c02)]
|
|
|
|
;; ==== Check
|
|
(t/is (= (count (:variant-properties comp01)) 1))
|
|
(t/is (= (count (:variant-properties comp01')) 2))
|
|
(t/is (= (count (:variant-properties comp02)) 1))
|
|
(t/is (= (count (:variant-properties comp02')) 2))
|
|
(t/is (= (-> comp01' :variant-properties last :value) "Value1"))))
|
|
|
|
|
|
|
|
(t/deftest test-remove-property
|
|
(let [;; ==== Setup
|
|
file (-> (thf/sample-file :file1)
|
|
(thv/add-variant :v01 :c01 :m01 :c02 :m02))
|
|
v-id (-> (ths/get-shape file :v01) :id)
|
|
page (thf/current-page file)
|
|
|
|
changes (-> (pcb/empty-changes nil)
|
|
(pcb/with-page-id (:id page))
|
|
(pcb/with-library-data (:data file))
|
|
(pcb/with-objects (:objects page))
|
|
(clv/generate-add-new-property v-id))
|
|
|
|
|
|
file (thf/apply-changes file changes)
|
|
page (thf/current-page file)
|
|
|
|
comp01 (thc/get-component file :c01)
|
|
comp02 (thc/get-component file :c02)
|
|
|
|
|
|
;; ==== Action
|
|
changes (-> (pcb/empty-changes nil)
|
|
(pcb/with-page-id (:id page))
|
|
(pcb/with-library-data (:data file))
|
|
(pcb/with-objects (:objects page))
|
|
(clv/generate-remove-property v-id 0))
|
|
|
|
|
|
file' (thf/apply-changes file changes)
|
|
|
|
|
|
|
|
;; ==== Get
|
|
comp01' (thc/get-component file' :c01)
|
|
comp02' (thc/get-component file' :c02)]
|
|
|
|
;; ==== Check
|
|
(t/is (= (count (:variant-properties comp01)) 2))
|
|
(t/is (= (count (:variant-properties comp01')) 1))
|
|
(t/is (= (count (:variant-properties comp02)) 2))
|
|
(t/is (= (count (:variant-properties comp02')) 1))
|
|
(t/is (= (-> comp01' :variant-properties first :name) "Property2"))))
|
|
|
|
(t/deftest test-update-property-value
|
|
(let [;; ==== Setup
|
|
file (-> (thf/sample-file :file1)
|
|
(thv/add-variant :v01 :c01 :m01 :c02 :m02))
|
|
|
|
page (thf/current-page file)
|
|
|
|
comp01 (thc/get-component file :c01)
|
|
comp02 (thc/get-component file :c02)
|
|
|
|
;; ==== Action
|
|
changes (-> (pcb/empty-changes nil)
|
|
(pcb/with-page-id (:id page))
|
|
(pcb/with-library-data (:data file))
|
|
(pcb/with-objects (:objects page))
|
|
(clv/generate-update-property-value (:id comp01) 0 "NewValue1")
|
|
(clv/generate-update-property-value (:id comp02) 0 "NewValue2"))
|
|
|
|
file' (thf/apply-changes file changes)
|
|
|
|
;; ==== Get
|
|
comp01' (thc/get-component file' :c01)
|
|
comp02' (thc/get-component file' :c02)]
|
|
|
|
;; ==== Check
|
|
(t/is (= (-> comp01' :variant-properties first :value) "NewValue1"))
|
|
(t/is (= (-> comp02' :variant-properties first :value) "NewValue2"))))
|