@@ -58,21 +58,27 @@ def test_sql_empty_result(self):
5858 # -------------------------------------------------------------- fetchxml
5959
6060 def test_fetchxml_basic (self ):
61- """fetchxml() should call _query_fetchxml and return results ."""
62- expected_pages = [
61+ """fetchxml() should call _query_fetchxml and return Record objects ."""
62+ raw_pages = [
6363 [{"accountid" : "1" , "name" : "Contoso" }, {"accountid" : "2" , "name" : "Fabrikam" }],
6464 ]
65- self .client ._odata ._query_fetchxml .return_value = iter (expected_pages )
65+ self .client ._odata ._query_fetchxml .return_value = iter (raw_pages )
66+ self .client ._odata ._extract_entity_from_fetchxml .return_value = "account"
6667
6768 fetchxml = "<fetch><entity name='account'><attribute name='name' /></entity></fetch>"
6869 result = list (self .client .query .fetchxml (fetchxml ))
6970
7071 self .client ._odata ._query_fetchxml .assert_called_once_with (fetchxml , page_size = None )
71- self .assertEqual (result , expected_pages )
72+ self .assertEqual (len (result ), 1 )
73+ self .assertEqual (len (result [0 ]), 2 )
74+ self .assertIsInstance (result [0 ][0 ], Record )
75+ self .assertEqual (result [0 ][0 ]["name" ], "Contoso" )
76+ self .assertEqual (result [0 ][1 ]["name" ], "Fabrikam" )
7277
7378 def test_fetchxml_with_page_size (self ):
7479 """fetchxml() should pass page_size through to _query_fetchxml."""
7580 self .client ._odata ._query_fetchxml .return_value = iter ([])
81+ self .client ._odata ._extract_entity_from_fetchxml .return_value = "account"
7682
7783 fetchxml = "<fetch><entity name='account' /></fetch>"
7884 list (self .client .query .fetchxml (fetchxml , page_size = 50 ))
@@ -82,21 +88,26 @@ def test_fetchxml_with_page_size(self):
8288 def test_fetchxml_empty_result (self ):
8389 """fetchxml() should return empty generator when no results."""
8490 self .client ._odata ._query_fetchxml .return_value = iter ([])
91+ self .client ._odata ._extract_entity_from_fetchxml .return_value = "account"
8592
8693 fetchxml = "<fetch><entity name='account' /></fetch>"
8794 result = list (self .client .query .fetchxml (fetchxml ))
8895
8996 self .assertEqual (result , [])
9097
9198 def test_fetchxml_returns_iterable (self ):
92- """fetchxml() should return an iterable (generator) ."""
99+ """fetchxml() should return an iterable of Record pages ."""
93100 self .client ._odata ._query_fetchxml .return_value = iter ([[{"name" : "A" }]])
101+ self .client ._odata ._extract_entity_from_fetchxml .return_value = "account"
94102
95103 fetchxml = "<fetch><entity name='account' /></fetch>"
96104 result = self .client .query .fetchxml (fetchxml )
97105
98106 self .assertIsNotNone (iter (result ))
99- self .assertEqual (list (result ), [[{"name" : "A" }]])
107+ pages = list (result )
108+ self .assertEqual (len (pages ), 1 )
109+ self .assertIsInstance (pages [0 ][0 ], Record )
110+ self .assertEqual (pages [0 ][0 ]["name" ], "A" )
100111
101112
102113if __name__ == "__main__" :
0 commit comments