@@ -179,6 +179,69 @@ def test_returns_value_list(self):
179179 result = self .od ._list_tables ()
180180 self .assertEqual (result , expected )
181181
182+ def test_select_adds_query_param (self ):
183+ """_list_tables(select=...) adds $select as comma-joined string."""
184+ self ._setup_response ([])
185+ self .od ._list_tables (select = ["LogicalName" , "SchemaName" , "DisplayName" ])
186+
187+ self .od ._request .assert_called_once ()
188+ call_kwargs = self .od ._request .call_args
189+ params = call_kwargs .kwargs .get ("params" ) or call_kwargs [1 ].get ("params" , {})
190+ self .assertEqual (params ["$select" ], "LogicalName,SchemaName,DisplayName" )
191+
192+ def test_select_none_omits_query_param (self ):
193+ """_list_tables(select=None) does not add $select to params."""
194+ self ._setup_response ([])
195+ self .od ._list_tables (select = None )
196+
197+ call_kwargs = self .od ._request .call_args
198+ params = call_kwargs .kwargs .get ("params" ) or call_kwargs [1 ].get ("params" , {})
199+ self .assertNotIn ("$select" , params )
200+
201+ def test_select_empty_list_omits_query_param (self ):
202+ """_list_tables(select=[]) does not add $select (empty list is falsy)."""
203+ self ._setup_response ([])
204+ self .od ._list_tables (select = [])
205+
206+ call_kwargs = self .od ._request .call_args
207+ params = call_kwargs .kwargs .get ("params" ) or call_kwargs [1 ].get ("params" , {})
208+ self .assertNotIn ("$select" , params )
209+
210+ def test_select_preserves_case (self ):
211+ """_list_tables does not lowercase select values (PascalCase preserved)."""
212+ self ._setup_response ([])
213+ self .od ._list_tables (select = ["EntitySetName" , "LogicalName" ])
214+
215+ call_kwargs = self .od ._request .call_args
216+ params = call_kwargs .kwargs .get ("params" ) or call_kwargs [1 ].get ("params" , {})
217+ self .assertEqual (params ["$select" ], "EntitySetName,LogicalName" )
218+
219+ def test_select_with_filter (self ):
220+ """_list_tables with both select and filter sends both params."""
221+ self ._setup_response ([{"LogicalName" : "account" }])
222+ self .od ._list_tables (
223+ filter = "SchemaName eq 'Account'" ,
224+ select = ["LogicalName" , "SchemaName" ],
225+ )
226+
227+ self .od ._request .assert_called_once ()
228+ call_kwargs = self .od ._request .call_args
229+ params = call_kwargs .kwargs .get ("params" ) or call_kwargs [1 ].get ("params" , {})
230+ self .assertEqual (
231+ params ["$filter" ],
232+ "IsPrivate eq false and SchemaName eq 'Account'" ,
233+ )
234+ self .assertEqual (params ["$select" ], "LogicalName,SchemaName" )
235+
236+ def test_select_single_property (self ):
237+ """_list_tables(select=[...]) with a single property works correctly."""
238+ self ._setup_response ([])
239+ self .od ._list_tables (select = ["LogicalName" ])
240+
241+ call_kwargs = self .od ._request .call_args
242+ params = call_kwargs .kwargs .get ("params" ) or call_kwargs [1 ].get ("params" , {})
243+ self .assertEqual (params ["$select" ], "LogicalName" )
244+
182245
183246class TestUpsert (unittest .TestCase ):
184247 """Unit tests for _ODataClient._upsert."""
0 commit comments