mirror of
https://github.com/penpot/penpot.git
synced 2026-04-25 11:18:36 +00:00
Fixes three concrete builder issues in common/files/builder:\n- Use bool type from shape when selecting style source for difference bools\n- Persist :strokes correctly (fix typo :stroks)\n- Validate add-file-media params after assigning default id\n\nAlso adds regression tests in common-tests.files-builder-test and registers them in runner. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: raguirref <ricardoaguirredelafuente@gmail.com>
73 lines
2.9 KiB
Clojure
73 lines
2.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.files-builder-test
|
|
(:require
|
|
[app.common.files.builder :as fb]
|
|
[app.common.uuid :as uuid]
|
|
[clojure.test :as t]))
|
|
|
|
(defn- stroke
|
|
[color]
|
|
[{:stroke-style :solid
|
|
:stroke-alignment :inner
|
|
:stroke-width 1
|
|
:stroke-color color
|
|
:stroke-opacity 1}])
|
|
|
|
(t/deftest add-bool-uses-difference-head-style
|
|
(let [file-id (uuid/next)
|
|
page-id (uuid/next)
|
|
group-id (uuid/next)
|
|
child-a (uuid/next)
|
|
child-b (uuid/next)
|
|
state (-> (fb/create-state)
|
|
(fb/add-file {:id file-id :name "Test file"})
|
|
(fb/add-page {:id page-id :name "Page 1"})
|
|
(fb/add-group {:id group-id :name "Group A"})
|
|
(fb/add-shape {:id child-a
|
|
:type :rect
|
|
:name "A"
|
|
:x 0
|
|
:y 0
|
|
:width 10
|
|
:height 10
|
|
:strokes (stroke "#ff0000")})
|
|
(fb/add-shape {:id child-b
|
|
:type :rect
|
|
:name "B"
|
|
:x 20
|
|
:y 0
|
|
:width 10
|
|
:height 10
|
|
:strokes (stroke "#00ff00")})
|
|
(fb/close-group)
|
|
(fb/add-bool {:group-id group-id
|
|
:type :difference}))
|
|
bool (fb/get-shape state group-id)]
|
|
(t/is (= :bool (:type bool)))
|
|
(t/is (= (stroke "#ff0000") (:strokes bool)))))
|
|
|
|
(t/deftest add-file-media-validates-and-persists-media
|
|
(let [file-id (uuid/next)
|
|
page-id (uuid/next)
|
|
image-id (uuid/next)
|
|
state (-> (fb/create-state)
|
|
(fb/add-file {:id file-id :name "Test file"})
|
|
(fb/add-page {:id page-id :name "Page 1"})
|
|
(fb/add-file-media {:id image-id
|
|
:name "Image"
|
|
:width 128
|
|
:height 64}
|
|
(fb/map->BlobWrapper {:mtype "image/png"
|
|
:size 42
|
|
:blob nil})))
|
|
media (get-in state [::fb/file-media image-id])]
|
|
(t/is (= image-id (::fb/last-id state)))
|
|
(t/is (= "Image" (:name media)))
|
|
(t/is (= 128 (:width media)))
|
|
(t/is (= 64 (:height media)))))
|