@@ -63,12 +63,13 @@ def test_builder_returns_query_builder(self):
6363 self .assertEqual (qb .table , "account" )
6464 self .assertIs (qb ._query_ops , self .client .query )
6565
66- def test_builder_execute_basic (self ):
67- """builder().execute() should call _get_multiple with built params."""
68- expected_page = [{"accountid" : "1" , "name" : "Test" }]
69- self .client ._odata ._get_multiple .return_value = iter ([expected_page ])
66+ def test_builder_execute_flat_default (self ):
67+ """builder().execute() should return flat records by default."""
68+ self .client ._odata ._get_multiple .return_value = iter (
69+ [[{"accountid" : "1" , "name" : "Test" }]]
70+ )
7071
71- pages = list (
72+ records = list (
7273 self .client .query .builder ("account" )
7374 .select ("name" )
7475 .filter_eq ("statecode" , 0 )
@@ -85,8 +86,34 @@ def test_builder_execute_basic(self):
8586 expand = None ,
8687 page_size = None ,
8788 )
88- self .assertEqual (len (pages ), 1 )
89- self .assertEqual (pages [0 ], expected_page )
89+ self .assertEqual (len (records ), 1 )
90+ self .assertEqual (records [0 ]["name" ], "Test" )
91+
92+ def test_builder_execute_flat_multiple_pages (self ):
93+ """execute() should flatten records from multiple pages."""
94+ self .client ._odata ._get_multiple .return_value = iter (
95+ [[{"accountid" : "1" }], [{"accountid" : "2" }]]
96+ )
97+
98+ records = list (self .client .query .builder ("account" ).execute ())
99+
100+ self .assertEqual (len (records ), 2 )
101+ self .assertEqual (records [0 ]["accountid" ], "1" )
102+ self .assertEqual (records [1 ]["accountid" ], "2" )
103+
104+ def test_builder_execute_by_page (self ):
105+ """execute(by_page=True) should yield pages."""
106+ page1 = [{"accountid" : "1" }]
107+ page2 = [{"accountid" : "2" }]
108+ self .client ._odata ._get_multiple .return_value = iter ([page1 , page2 ])
109+
110+ pages = list (
111+ self .client .query .builder ("account" ).execute (by_page = True )
112+ )
113+
114+ self .assertEqual (len (pages ), 2 )
115+ self .assertEqual (pages [0 ], page1 )
116+ self .assertEqual (pages [1 ], page2 )
90117
91118 def test_builder_execute_all_params (self ):
92119 """builder().execute() should forward all parameters."""
@@ -114,20 +141,6 @@ def test_builder_execute_all_params(self):
114141 page_size = 25 ,
115142 )
116143
117- def test_builder_execute_multiple_pages (self ):
118- """builder().execute() should yield multiple pages."""
119- page1 = [{"accountid" : "1" }]
120- page2 = [{"accountid" : "2" }]
121- self .client ._odata ._get_multiple .return_value = iter ([page1 , page2 ])
122-
123- pages = list (
124- self .client .query .builder ("account" ).execute ()
125- )
126-
127- self .assertEqual (len (pages ), 2 )
128- self .assertEqual (pages [0 ], page1 )
129- self .assertEqual (pages [1 ], page2 )
130-
131144 def test_builder_execute_with_where (self ):
132145 """builder().where().execute() should compile expression to filter."""
133146 from PowerPlatform .Dataverse .models .filters import eq , gt
@@ -148,13 +161,13 @@ def test_builder_execute_with_where(self):
148161
149162 def test_builder_full_fluent_workflow (self ):
150163 """End-to-end test of the fluent query workflow."""
151- expected_page = [
164+ expected_records = [
152165 {"accountid" : "1" , "name" : "Big Corp" , "revenue" : 5000000 },
153166 {"accountid" : "2" , "name" : "Mega Inc" , "revenue" : 4000000 },
154167 ]
155- self .client ._odata ._get_multiple .return_value = iter ([expected_page ])
168+ self .client ._odata ._get_multiple .return_value = iter ([expected_records ])
156169
157- pages = list (
170+ records = list (
158171 self .client .query .builder ("account" )
159172 .select ("name" , "revenue" )
160173 .filter_eq ("statecode" , 0 )
@@ -166,10 +179,9 @@ def test_builder_full_fluent_workflow(self):
166179 .execute ()
167180 )
168181
169- self .assertEqual (len (pages ), 1 )
170- self .assertEqual (len (pages [0 ]), 2 )
171- self .assertEqual (pages [0 ][0 ]["name" ], "Big Corp" )
172- self .assertEqual (pages [0 ][1 ]["name" ], "Mega Inc" )
182+ self .assertEqual (len (records ), 2 )
183+ self .assertEqual (records [0 ]["name" ], "Big Corp" )
184+ self .assertEqual (records [1 ]["name" ], "Mega Inc" )
173185
174186
175187if __name__ == "__main__" :
0 commit comments