@@ -294,11 +294,33 @@ def test_record_empty(self):
294
294
295
295
async def test_record_duplicate_colnames (self ):
296
296
"""Test that Record handles duplicate column names."""
297
- r = await self .con .fetchrow ('SELECT 1 as a, 2 as a' )
298
- self .assertEqual (r ['a' ], 2 )
299
- self .assertEqual (r [0 ], 1 )
300
- self .assertEqual (repr (r ), '<Record a=1 a=2>' )
301
- self .assertEqual (list (r .items ()), [('a' , 1 ), ('a' , 2 )])
297
+
298
+ records_descs = [
299
+ [('a' , 1 )],
300
+ [('a' , 1 ), ('a' , 2 )],
301
+ [('a' , 1 ), ('b' , 2 ), ('a' , 3 )],
302
+ [('a' , 1 ), ('b' , 2 ), ('a' , 3 ), ('c' , 4 ), ('b' , 5 )],
303
+ ]
304
+
305
+ for desc in records_descs :
306
+ items = collections .OrderedDict (desc )
307
+
308
+ query = 'SELECT ' + ', ' .join (
309
+ ['{} as {}' .format (p [1 ], p [0 ]) for p in desc ])
310
+
311
+ with self .subTest (query = query ):
312
+ r = await self .con .fetchrow (query )
313
+ for idx , (field , val ) in enumerate (desc ):
314
+ self .assertEqual (r [idx ], val )
315
+ self .assertEqual (r [field ], items [field ])
316
+
317
+ expected_repr = '<Record {}>' .format (
318
+ ' ' .join ('{}={}' .format (p [0 ], p [1 ]) for p in desc ))
319
+ self .assertEqual (repr (r ), expected_repr )
320
+
321
+ self .assertEqual (list (r .items ()), desc )
322
+ self .assertEqual (list (r .values ()), [p [1 ] for p in desc ])
323
+ self .assertEqual (list (r .keys ()), [p [0 ] for p in desc ])
302
324
303
325
async def test_record_isinstance (self ):
304
326
"""Test that Record works with isinstance."""
0 commit comments