|
12 | 12 | [toucan2.test :as test] |
13 | 13 | [toucan2.tools.compile :as tools.compile]) |
14 | 14 | (:import |
15 | | - (java.time OffsetDateTime))) |
| 15 | + (java.time LocalDateTime OffsetDateTime))) |
16 | 16 |
|
17 | 17 | (set! *warn-on-reflection* true) |
18 | 18 |
|
|
388 | 388 | (select/select-one ::test/venues nil) |
389 | 389 | (select/select-one-fn :id ::test/venues nil) |
390 | 390 | (select/select-one-fn int ::test/venues nil))))) |
| 391 | + |
| 392 | +(deftest select-join-test |
| 393 | + (testing "Extra columns from joined tables should come back" |
| 394 | + (is (= (instance/instance ::test/venues |
| 395 | + {:id 1 |
| 396 | + :name "bar" |
| 397 | + :category "bar" |
| 398 | + :created-at (LocalDateTime/parse "2017-01-01T00:00") |
| 399 | + :updated-at (LocalDateTime/parse "2017-01-01T00:00") |
| 400 | + :slug "bar_01" |
| 401 | + :parent-category nil}) |
| 402 | + (select/select-one ::test/venues |
| 403 | + {:left-join [[:category :c] [:= :venues.category :c.name]] |
| 404 | + :order-by [[:id :asc]]}))))) |
| 405 | + |
| 406 | +(derive ::venues.with-category ::test/venues) |
| 407 | + |
| 408 | +(m/defmethod query/build :after [#_query-type :toucan.query-type/select.* |
| 409 | + #_model ::venues.with-category |
| 410 | + #_query clojure.lang.IPersistentMap] |
| 411 | + [_query-type _model built-query] |
| 412 | + (assoc built-query :left-join [[:category :c] [:= :venues.category :c.name]])) |
| 413 | + |
| 414 | +(deftest joined-model-test |
| 415 | + (is (= (instance/instance ::venues.with-category |
| 416 | + {:id 1 |
| 417 | + :name "bar" |
| 418 | + :category "bar" |
| 419 | + :created-at (LocalDateTime/parse "2017-01-01T00:00") |
| 420 | + :updated-at (LocalDateTime/parse "2017-01-01T00:00") |
| 421 | + :slug "bar_01" |
| 422 | + :parent-category nil}) |
| 423 | + (select/select-one ::venues.with-category |
| 424 | + {:left-join [[:category :c] [:= :venues.category :c.name]] |
| 425 | + :order-by [[:id :asc]]})))) |
0 commit comments