@@ -526,6 +526,51 @@ defmodule Ecto.Integration.PreloadTest do
526
526
assert [ ] = sort_by_id ( p3 . comments )
527
527
end
528
528
529
+ test "take with join nil maps (many association)" do
530
+ p = TestRepo . insert! ( % Post { } )
531
+
532
+ # many
533
+ query =
534
+ from p in Post ,
535
+ left_join: c in Comment ,
536
+ on: p . id == c . post_id ,
537
+ select: map ( p , [ :id , comments: [ :id , :post_id ] ] ) ,
538
+ preload: [ comments: c ]
539
+
540
+ assert TestRepo . one ( query ) == % { id: p . id , comments: [ ] }
541
+
542
+ query =
543
+ from p in Post ,
544
+ left_join: c in Comment ,
545
+ on: p . id == c . post_id ,
546
+ select: map ( p , [ :id , comments: [ :id , :post_id ] ] ) ,
547
+ preload: [ :comments ]
548
+
549
+ assert TestRepo . one ( query ) == % { id: p . id , comments: [ ] }
550
+ end
551
+
552
+ test "take with join nil maps (one association)" do
553
+ p = TestRepo . insert! ( % Post { } )
554
+
555
+ query =
556
+ from p in Post ,
557
+ left_join: u in User ,
558
+ on: p . author_id == u . id ,
559
+ select: map ( p , [ :id , author: [ :id , :name ] ] ) ,
560
+ preload: [ author: u ]
561
+
562
+ assert TestRepo . one ( query ) == % { id: p . id , author: nil }
563
+
564
+ query =
565
+ from p in Post ,
566
+ left_join: u in User ,
567
+ on: p . author_id == u . id ,
568
+ select: map ( p , [ :id , author: [ :id , :name ] ] ) ,
569
+ preload: [ :author ]
570
+
571
+ assert TestRepo . one ( query ) == % { id: p . id , author: nil }
572
+ end
573
+
529
574
test "preload through with take" do
530
575
% Post { id: pid1 } = TestRepo . insert! ( % Post { } )
531
576
0 commit comments