|
41 | 41 | (test-graph-events
|
42 | 42 | []
|
43 | 43 | [[[:a] 1]]
|
44 |
| - {::core/db (assoc default-db :a 1) |
| 44 | + {::core/db (assoc default-db :a 1) |
45 | 45 | ::core/change-history [[[:a] 1]]}))
|
46 | 46 |
|
47 | 47 | (deftest nil-output-ignored
|
|
50 | 50 | :outputs [[:b]]
|
51 | 51 | :handler (fn [_ _ _])}]
|
52 | 52 | [[[:a] 1]]
|
53 |
| - {::core/db (assoc default-db :a 1) |
| 53 | + {::core/db (assoc default-db :a 1) |
54 | 54 | ::core/change-history [[[:a] 1]]}))
|
55 | 55 |
|
56 | 56 | (deftest single-input-output
|
|
59 | 59 | :outputs [[:b]]
|
60 | 60 | :handler (fn [ctx {:keys [a]} {:keys [b]}] {:b (+ a b)})}]
|
61 | 61 | [[[:a] 1]]
|
62 |
| - {::core/db (assoc default-db :a 1 :b 1) |
| 62 | + {::core/db (assoc default-db :a 1 :b 1) |
63 | 63 | ::core/change-history [[[:a] 1] [[:b] 1]]}))
|
64 | 64 |
|
65 | 65 | (deftest unmatched-event
|
|
68 | 68 | :outputs [[:b]]
|
69 | 69 | :handler (fn [ctx _ _] {:b 5})}]
|
70 | 70 | [[[:c] 1]]
|
71 |
| - {::core/db (assoc default-db :c 1) |
| 71 | + {::core/db (assoc default-db :c 1) |
72 | 72 | ::core/change-history [[[:c] 1]]}))
|
73 | 73 |
|
74 | 74 | (deftest nil-value
|
|
77 | 77 | :outputs [[:b]]
|
78 | 78 | :handler (fn [_ _ _] {:b nil})}]
|
79 | 79 | [[[:a] 1]]
|
80 |
| - {::core/db (assoc default-db :a 1 :b nil) |
| 80 | + {::core/db (assoc default-db :a 1 :b nil) |
81 | 81 | ::core/change-history [[[:a] 1] [[:b] nil]]}))
|
82 | 82 |
|
| 83 | +(deftest output-dependent-event |
| 84 | + (test-graph-events |
| 85 | + [{:inputs [[:a] [:b]] |
| 86 | + :outputs [[:c]] |
| 87 | + :handler (fn [_ {:keys [a b]} _] {:c (+ a b)})} |
| 88 | + {:inputs [[:a] [:c]] |
| 89 | + :outputs [[:d]] |
| 90 | + :handler (fn [_ {:keys [a c]} _] {:d (+ a c)})}] |
| 91 | + [[[:a] 1]] |
| 92 | + {::core/db (assoc default-db :a 1 :c 1 :d 2) |
| 93 | + ::core/change-history [[[:a] 1] [[:c] 1] [[:d] 1] [[:d] 2]]})) |
| 94 | + |
83 | 95 | (deftest exception-bubbles-up
|
84 | 96 | (is
|
85 | 97 | (thrown?
|
|
100 | 112 | :outputs [[:b]]
|
101 | 113 | :handler (fn [ctx {:keys [a]} {:keys [b]}] {:b (inc a)})}]
|
102 | 114 | [[[:a] 0]]
|
103 |
| - {::core/db (assoc default-db :b 1) |
| 115 | + {::core/db (assoc default-db :b 1) |
104 | 116 | ::core/change-history [[[:a] 0] [[:b] 1]]}))
|
105 | 117 |
|
106 | 118 | (deftest same-input-as-output
|
|
109 | 121 | :outputs [[:a]]
|
110 | 122 | :handler (fn [ctx {:keys [a]} _] {:a (inc a)})}]
|
111 | 123 | [[[:a] 1]]
|
112 |
| - {::core/db (assoc default-db :a 2) |
| 124 | + {::core/db (assoc default-db :a 2) |
113 | 125 | ::core/change-history [[[:a] 1]
|
114 |
| - [[:a] 2]]})) |
| 126 | + [[:a] 2]]})) |
115 | 127 |
|
116 | 128 | (deftest cyclic-inputs
|
117 | 129 | (test-graph-events
|
|
122 | 134 | :outputs [[:a]]
|
123 | 135 | :handler (fn [ctx {:keys [b]} {:keys [a]}] {:a (inc a)})}]
|
124 | 136 | [[[:a] 1]]
|
125 |
| - {::core/db (assoc default-db :b 1 :a 2) |
| 137 | + {::core/db (assoc default-db :b 1 :a 2) |
126 | 138 | ::core/change-history [[[:a] 1]
|
127 |
| - [[:b] 1] |
128 |
| - [[:a] 2]]}) |
| 139 | + [[:b] 1] |
| 140 | + [[:a] 2]]}) |
129 | 141 | (test-graph-events
|
130 | 142 | [{:inputs [[:a]]
|
131 | 143 | :outputs [[:b] [:c]]
|
|
134 | 146 | :outputs [[:a]]
|
135 | 147 | :handler (fn [ctx {:keys [b]} {:keys [a]}] {:a (+ b a)})}]
|
136 | 148 | [[[:a] 1] [[:b] 2]]
|
137 |
| - {::core/db (assoc default-db :b 3 :a 4) |
| 149 | + {::core/db (assoc default-db :b 3 :a 4) |
138 | 150 | ::core/change-history [[[:a] 1]
|
139 |
| - [[:b] 2] |
140 |
| - [[:b] 3] |
141 |
| - [[:a] 4]]})) |
| 151 | + [[:b] 2] |
| 152 | + [[:b] 3] |
| 153 | + [[:a] 4]]})) |
142 | 154 |
|
143 | 155 | (deftest test-cascading-events
|
144 | 156 | (test-graph-events
|
|
149 | 161 | :outputs [[:d]]
|
150 | 162 | :handler (fn [ctx {:keys [c]} _] {:d (inc c)})}]
|
151 | 163 | [[[:a] 1] [[:b] 1]]
|
152 |
| - {::core/db (assoc default-db :a 1 :b 2 :c 1 :d 2) |
| 164 | + {::core/db (assoc default-db :a 1 :b 2 :c 1 :d 2) |
153 | 165 | ::core/change-history [[[:a] 1]
|
154 |
| - [[:b] 1] |
155 |
| - [[:b] 2] |
156 |
| - [[:c] 1] |
157 |
| - [[:d] 2]]})) |
| 166 | + [[:b] 1] |
| 167 | + [[:b] 2] |
| 168 | + [[:c] 1] |
| 169 | + [[:d] 2]]})) |
158 | 170 |
|
159 | 171 | (deftest multi-input-event
|
160 | 172 | (test-graph-events
|
161 | 173 | [{:inputs [[:a] [:b]]
|
162 | 174 | :outputs [[:c]]
|
163 | 175 | :handler (fn [ctx {:keys [a b]} {:keys [c]}] {:c (+ a b)})}]
|
164 | 176 | [[[:a] 1] [[:b] 1]]
|
165 |
| - {::core/db (assoc default-db :a 1 :b 1 :c 2) |
| 177 | + {::core/db (assoc default-db :a 1 :b 1 :c 2) |
166 | 178 | ::core/change-history [[[:a] 1] [[:b] 1] [[:c] 2]]}))
|
167 | 179 |
|
168 | 180 | (deftest multi-output-event
|
|
171 | 183 | :outputs [[:b] [:c]]
|
172 | 184 | :handler (fn [ctx {:keys [a]} {:keys [b c]}] {:b (+ a b) :c (inc c)})}]
|
173 | 185 | [[[:a] 1]]
|
174 |
| - {::core/db (assoc default-db :a 1 :b 1 :c 1) |
| 186 | + {::core/db (assoc default-db :a 1 :b 1 :c 1) |
175 | 187 | ::core/change-history [[[:a] 1] [[:b] 1] [[:c] 1]]}))
|
176 | 188 |
|
177 | 189 | (deftest multi-input-output-event-omitted-unchanged-results
|
178 | 190 | (test-graph-events
|
179 | 191 | [{:inputs [[:a] [:b]]
|
180 |
| - :outputs [[:b] [:c] [:d]] |
181 |
| - :handler (fn [ctx {:keys [a b]} _] {:b (+ a b)})}] |
| 192 | + :outputs [[:c] [:d] [:e]] |
| 193 | + :handler (fn [ctx {:keys [a b]} _] {:c (+ a b)})}] |
182 | 194 | [[[:a] 1] [[:b] 1]]
|
183 |
| - {::core/db (assoc default-db :a 1 :b 2) |
| 195 | + {::core/db (assoc default-db :a 1 :b 1 :c 2) |
184 | 196 | ::core/change-history [[[:a] 1]
|
185 |
| - [[:b] 1] |
186 |
| - [[:b] 2]]})) |
| 197 | + [[:b] 1] |
| 198 | + [[:c] 2]]})) |
187 | 199 |
|
188 | 200 | (deftest multi-input-output-event
|
189 | 201 | (test-graph-events
|
190 | 202 | [{:inputs [[:a] [:b]]
|
191 |
| - :outputs [[:b] [:c] [:d]] |
192 |
| - :handler (fn [ctx {:keys [a b]} {:keys [c d]}] {:b (+ a b) :c c :d d})}] |
| 203 | + :outputs [[:c] [:d] [:e]] |
| 204 | + :handler (fn [ctx {:keys [a b]} {:keys [d e]}] {:c (+ a b) :d d :e e})}] |
193 | 205 | [[[:a] 1] [[:b] 1]]
|
194 |
| - {::core/db (assoc default-db :a 1 :b 2) |
| 206 | + {::core/db (assoc default-db :a 1 :c 2 :b 1) |
195 | 207 | ::core/change-history [[[:a] 1]
|
196 |
| - [[:b] 1] |
197 |
| - [[:b] 2]]})) |
| 208 | + [[:b] 1] |
| 209 | + [[:c] 2]]})) |
198 | 210 |
|
199 | 211 | (deftest unrelated-events
|
200 | 212 | (test-graph-events
|
|
205 | 217 | :outputs [[:d]]
|
206 | 218 | :handler (fn [ctx {:keys [c]} _] {:d (dec c)})}]
|
207 | 219 | [[[:a] 1]]
|
208 |
| - {::core/db (assoc default-db :a 1 :b 2) |
| 220 | + {::core/db (assoc default-db :a 1 :b 2) |
209 | 221 | ::core/change-history [[[:a] 1] [[:b] 2]]}))
|
210 | 222 |
|
211 | 223 | (deftest context-access
|
|
216 | 228 | :outputs [[:b]]
|
217 | 229 | :handler (fn [ctx {:keys [a]} _] {:b ((:action ctx) a)})}]
|
218 | 230 | [[[:a] 1]]
|
219 |
| - {::core/db (assoc default-db :a 1 :b 6) |
| 231 | + {::core/db (assoc default-db :a 1 :b 6) |
220 | 232 | ::core/change-history [[[:a] 1] [[:b] 6]]}))
|
221 | 233 |
|
222 | 234 | (deftest triggering-sub-path
|
|
226 | 238 | :handler (fn [ctx {h :h} {old-h :h}]
|
227 | 239 | {:h (update old-h :i + (:i h))})}]
|
228 | 240 | [[[:h :i] 1]] ;; [[[:h] {:i 2}]]
|
229 |
| - {::core/db (assoc default-db :h {:i 2}) |
| 241 | + {::core/db (assoc default-db :h {:i 2}) |
230 | 242 | ::core/change-history [[[:h :i] 1]
|
231 |
| - [[:h] {:i 2}]]})) |
| 243 | + [[:h] {:i 2}]]})) |
0 commit comments