🎉 Add malli based validation and coersion subsystem

This commit is contained in:
Andrey Antukh 2023-03-18 10:32:26 +01:00
parent dbc08ba80f
commit 5ca3d01ea1
125 changed files with 4984 additions and 2762 deletions

View file

@ -3,7 +3,7 @@
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) KALEIDOS INC
(ns frontend-tests.state-components-sync-test
(:require
[app.common.colors :as clr]
@ -49,15 +49,15 @@
;; false true)
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1 #--> Rect 1
; Rect 1* ---> Rect 1
; #{:fill-group}
;
; [Rect 1]
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1 #--> Rect 1
; Rect 1* ---> Rect 1
; #{:fill-group}
;
; [Rect 1]
; page1 / Rect 1
;
(let [[[group shape1] [c-group c-shape1] _component]
@ -86,7 +86,7 @@
(merge shape {:fill-color clr/test
:fill-opacity 0.5})))
:the/end))))
(t/deftest test-touched-children-add
(t/async done
(let [state (-> thp/initial-state
@ -109,18 +109,18 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1* #--> Rect 1
; #{:shapes-group}
; Circle 1
; Rect 1 ---> Rect 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1* #--> Rect 1
; #{:shapes-group}
; Circle 1
; Rect 1 ---> Rect 1
;
; [Rect 1]
; page1 / Rect 1
;
(let [[[group shape1 shape2] [c-group c-shape1] _component]
(thl/resolve-instance-and-main-allow-dangling
new-state
@ -168,16 +168,16 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Component 1
; Rect 1
; Rect 2
; [Page]
; Root Frame
; Component 1
; Rect 1
; Rect 2
; Component 1 #--> Component 1
; Rect 1* ---> Rect 1
; #{:visibility-group}
; Rect 2 ---> Rect 2
;
;
; [Component 1]
; page1 / Component 1
;
@ -236,20 +236,20 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Component 1
; Rect 1
; Rect 2
; Rect 3
; Component 1* #--> Component 1
; #{:shapes-group}
; Rect 2 ---> Rect 2
; Rect 1 ---> Rect 1
; Rect 3 ---> Rect 3
;
; [Component 1]
; page1 / Component 1
; [Page]
; Root Frame
; Component 1
; Rect 1
; Rect 2
; Rect 3
; Component 1* #--> Component 1
; #{:shapes-group}
; Rect 2 ---> Rect 2
; Rect 1 ---> Rect 1
; Rect 3 ---> Rect 3
;
; [Component 1]
; page1 / Component 1
;
(let [[[group shape1 shape2 shape3]
[c-group c-shape1 c-shape2 c-shape3] _component]
@ -376,25 +376,25 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1* ---> Circle 1
; #{:fill-group}
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; page1 / Group
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1* ---> Circle 1
; #{:fill-group}
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; page1 / Group
;
(let [[[instance2 instance1 shape1 shape2]
[c-instance2 c-instance1 c-shape1 c-shape2] _component]
@ -468,22 +468,22 @@
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1* ---> Rect 1
; #{:fill-group}
; Circle 1 ---> Circle 1
;
;
; [Rect 1]
; page1 / Rect 1
;
;
; [Group]
; page1 / Group
;
@ -558,25 +558,25 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1* ---> Rect 1
; #{:fill-group}
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; page1 / Group
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1* ---> Rect 1
; #{:fill-group}
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; page1 / Group
;
(let [[[instance2 instance1 shape1 shape2]
[c-instance2 c-instance1 c-shape1 c-shape2] _component]
@ -641,16 +641,16 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
;
;
; [Rect 1]
; page1 / Rect 1
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
;
;
; [Rect 1]
; page1 / Rect 1
;
(let [[[group shape1] [c-group c-shape1] _component]
(thl/resolve-instance-and-main
@ -702,15 +702,15 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
;
; [Rect 1]
; page1 / Rect 1
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
;
; [Rect 1]
; page1 / Rect 1
;
(let [[[group shape1] [c-group c-shape1] _component]
(thl/resolve-instance-and-main
@ -758,16 +758,16 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Component 1
; Rect 1
; Rect 2
; Component 1 #--> Component 1
; Rect 1 ---> Rect 1
; Rect 2 ---> Rect 2
;
; [Component 1]
; [Page]
; Root Frame
; Component 1
; Rect 1
; Rect 2
; Component 1 #--> Component 1
; Rect 1 ---> Rect 1
; Rect 2 ---> Rect 2
;
; [Component 1]
; page1 / Component 1
;
(let [[[group shape1 shape2]
@ -826,19 +826,19 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Component 1
; Rect 1
; Rect 2
; Rect 3
; Component 1 #--> Component 1
; Rect 1 ---> Rect 1
; Rect 2 ---> Rect 2
; Rect 3 ---> Rect 3
;
; [Component 1]
; page1 / Component 1
; [Page]
; Root Frame
; Component 1
; Rect 1
; Rect 2
; Rect 3
; Component 1 #--> Component 1
; Rect 1 ---> Rect 1
; Rect 2 ---> Rect 2
; Rect 3 ---> Rect 3
;
; [Component 1]
; page1 / Component 1
;
(let [[[group shape1 shape2 shape3] [c-group c-shape1 c-shape2 c-shape3] _component]
(thl/resolve-instance-and-main
@ -964,22 +964,22 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
;
; [Group]
; page1 / Group
;
@ -1055,23 +1055,23 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; page1 / Group
;
(let [[[instance2 instance1 shape1 shape2]
@ -1147,26 +1147,26 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1* ---> Rect 1
; #{:fill-group}
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; (remote-synced)
; Rect 1 ---> Rect 1
; (remote-synced)
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1* ---> Rect 1
; #{:fill-group}
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; (remote-synced)
; Rect 1 ---> Rect 1
; (remote-synced)
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; page1 / Group
;
(let [[[instance2 instance1 shape1 shape2]
@ -1235,16 +1235,16 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1 <== (not updated)
;
; [Rect 1]
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1 <== (not updated)
;
; [Rect 1]
; page1 / Rect 1
;
(let [[[main1 shape1] [c-main1 c-shape1] component1]
@ -1333,16 +1333,16 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
;
; [Rect 1]
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
;
; [Rect 1]
; page1 / Rect 1
;
(let [[[main1 shape1] [c-main1 c-shape1] component1]
@ -1431,18 +1431,18 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Rect 1 #--> Rect 1
; Rect 1* ---> Rect 1
; #{:stroke-group}
;
; [Rect 1]
; page1 / Rect 1
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Rect 1 #--> Rect 1
; Rect 1* ---> Rect 1
; #{:stroke-group}
;
; [Rect 1]
; page1 / Rect 1
;
(let [[[main1 shape1] [c-main1 c-shape1] component1]
(thl/resolve-instance-and-main
@ -1532,19 +1532,19 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Circle 1
; Rect 1
; Rect 1 #--> Rect 1
; Circle 1 ---> Circle 1
; Rect 1 ---> Rect 1
; Rect 1 #--> Rect 1
; Circle 1 ---> Circle 1
; Rect 1 ---> Rect 1
;
; [Rect 1]
; [Page]
; Root Frame
; Rect 1
; Circle 1
; Rect 1
; Rect 1 #--> Rect 1
; Circle 1 ---> Circle 1
; Rect 1 ---> Rect 1
; Rect 1 #--> Rect 1
; Circle 1 ---> Circle 1
; Rect 1 ---> Rect 1
;
; [Rect 1]
; page1 / Rect 1
;
(let [[[main1 shape1 shape2]
@ -1637,20 +1637,20 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Component 1
; Rect 1
; Rect 2
; Component 1 #--> Component 1
; Rect 1 ---> Rect 1
; Rect 2 ---> Rect 2
; Component 1 #--> Component 1
; Rect 1 ---> Rect 1
; Rect 2 ---> Rect 2
;
; [Component 1]
; page1 / Component 1
; [Page]
; Root Frame
; Component 1
; Rect 1
; Rect 2
; Component 1 #--> Component 1
; Rect 1 ---> Rect 1
; Rect 2 ---> Rect 2
; Component 1 #--> Component 1
; Rect 1 ---> Rect 1
; Rect 2 ---> Rect 2
;
; [Component 1]
; page1 / Component 1
;
(let [[[main1 shape1 shape2]
[c-main1 c-shape1 c-shape2] component1]
@ -1751,22 +1751,22 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Component 1
; Rect 2
; Rect 1
; Rect 3
; Component 1 #--> Component 1
; Rect 2 ---> Rect 2
; Rect 1 ---> Rect 1
; Rect 3 ---> Rect 3
; Component 1 #--> Component 1
; Rect 2 ---> Rect 2
; Rect 1 ---> Rect 1
; Rect 3 ---> Rect 3
;
; [Component 1]
; [Page]
; Root Frame
; Component 1
; Rect 2
; Rect 1
; Rect 3
; Component 1 #--> Component 1
; Rect 2 ---> Rect 2
; Rect 1 ---> Rect 1
; Rect 3 ---> Rect 3
; Component 1 #--> Component 1
; Rect 2 ---> Rect 2
; Rect 1 ---> Rect 1
; Rect 3 ---> Rect 3
;
; [Component 1]
; page1 / Component 1
;
(let [[[main1 shape1 shape2 shape3]
@ -1873,7 +1873,7 @@
; Expected shape tree:
;
; [Page]
; Root Frame
; Root Frame
; Rect 1 #--> <Library 1> Rect 1
; Rect 1 ---> <Library 1> Rect 1
; Rect 1 #--> <Library 1> Rect 1
@ -1883,7 +1883,7 @@
(thl/resolve-instance-and-main
new-state
(thp/id :instance1))
[[instance2 shape2] [_c-instance2 _c-shape2] _component2]
(thl/resolve-instance-and-main
new-state
@ -1954,27 +1954,27 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; page1 / Group
;
(let [[[instance2 instance1 shape1 shape2]
@ -1982,7 +1982,7 @@
(thl/resolve-instance-and-main
new-state
(thp/id :instance2))
[[instance4 instance3 shape3 shape4]
[_c-instance4 _c-instance3 _c-shape3 _c-shape4] _component2]
(thl/resolve-instance-and-main
@ -2072,27 +2072,27 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; page1 / Group
;
(let [[[instance2 instance1 shape1 shape2]
@ -2100,7 +2100,7 @@
(thl/resolve-instance-and-main
new-state
(thp/id :instance2))
[[instance4 instance3 shape3 shape4]
[_c-instance4 _c-instance3 _c-shape3 _c-shape4] _component2]
(thl/resolve-instance-and-main
@ -2191,37 +2191,37 @@
(fn [new-state]
; Expected shape tree:
;
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; (remote-synced)
; Rect 1 ---> Rect 1
; (remote-synced)
; Circle 1 ---> Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; page1 / Group
; [Page]
; Root Frame
; Rect 1
; Rect 1
; Group
; Rect 1 #--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; (remote-synced)
; Rect 1 ---> Rect 1
; (remote-synced)
; Circle 1 ---> Circle 1
; Group #--> Group
; Rect 1 @--> Rect 1
; Rect 1 ---> Rect 1
; Circle 1 ---> Circle 1
;
; [Rect 1]
; page1 / Rect 1
;
; [Group]
; page1 / Group
;
(let [[[instance2 instance1 shape1 shape2]
[c-instance2 c-instance1 c-shape1 c-shape2] _component1]
(thl/resolve-instance-and-main
new-state
(thp/id :instance2))
[[instance4 instance3 shape3 shape4]
[_c-instance4 _c-instance3 _c-shape3 _c-shape4] _component2]
(thl/resolve-instance-and-main