@@ -7,7 +7,11 @@ namespace ExpressiveSharp.EntityFrameworkCore.IntegrationTests.Infrastructure;
77public abstract class AsyncQueryableTestBase : EFCoreRelationalTestBase
88{
99 [ TestInitialize ]
10- public Task SeedStoreData ( ) => Context . SeedStoreAsync ( ) ;
10+ public async Task SeedStoreData ( )
11+ {
12+ await Context . SeedStoreAsync ( ) ;
13+ Context . ChangeTracker . Clear ( ) ;
14+ }
1115
1216 [ TestMethod ]
1317 public async Task AnyAsync_WithPredicate_Executes ( )
@@ -117,6 +121,61 @@ public async Task Include_Where_ToListAsync_LoadsNavigation()
117121 Assert . IsTrue ( results . All ( o => o . Customer != null ) ) ;
118122 }
119123
124+ [ TestMethod ]
125+ public async Task ExpressiveDbSet_ToListAsync_DirectTerminal_Executes ( )
126+ {
127+ // Streaming terminal directly on the ExpressiveDbSet (no intervening operator to
128+ // re-wrap it). ToListAsync casts the source to IAsyncEnumerable<T>.
129+ var results = await Context . ExpressiveOrders . ToListAsync ( ) ;
130+
131+ Assert . AreEqual ( 4 , results . Count ) ;
132+ }
133+
134+ [ TestMethod ]
135+ public async Task ExpressiveDbSet_ToArrayAsync_DirectTerminal_Executes ( )
136+ {
137+ var results = await Context . ExpressiveOrders . ToArrayAsync ( ) ;
138+
139+ Assert . AreEqual ( 4 , results . Length ) ;
140+ }
141+
142+ [ TestMethod ]
143+ public async Task Include_ToListAsync_DirectTerminal_LoadsNavigation ( )
144+ {
145+ var results = await Context . ExpressiveOrders
146+ . Include ( o => o . Customer )
147+ . ToListAsync ( ) ;
148+
149+ Assert . AreEqual ( 4 , results . Count ) ;
150+ Assert . AreEqual ( 3 , results . Count ( o => o . Customer != null ) ) ;
151+ }
152+
153+ [ TestMethod ]
154+ public async Task Include_ToArrayAsync_DirectTerminal_LoadsNavigation ( )
155+ {
156+ var results = await Context . ExpressiveOrders
157+ . Include ( o => o . Customer )
158+ . ToArrayAsync ( ) ;
159+
160+ Assert . AreEqual ( 4 , results . Length ) ;
161+ Assert . AreEqual ( 3 , results . Count ( o => o . Customer != null ) ) ;
162+ }
163+
164+ [ TestMethod ]
165+ public async Task Include_ThenInclude_ToListAsync_DirectTerminal_LoadsTwoLevelNavigation ( )
166+ {
167+ var results = await Context . ExpressiveOrders
168+ . Include ( o => o . Customer )
169+ . ThenInclude ( c => c ! . Address )
170+ . ToListAsync ( ) ;
171+
172+ Assert . AreEqual ( 4 , results . Count ) ;
173+ var aliceOrder = results . Single ( o => o . CustomerId == 1 ) ;
174+ Assert . IsNotNull ( aliceOrder . Customer ) ;
175+ Assert . IsNotNull ( aliceOrder . Customer ! . Address ) ;
176+ Assert . AreEqual ( "New York" , aliceOrder . Customer . Address ! . City ) ;
177+ }
178+
120179 [ TestMethod ]
121180 public async Task TagWith_Where_FirstAsync_ExecutesCorrectly ( )
122181 {
0 commit comments