Test that Record handles duplicate column names.
(self)
| 309 | self.assertEqual(list(r.values()), []) |
| 310 | |
| 311 | async def test_record_duplicate_colnames(self): |
| 312 | """Test that Record handles duplicate column names.""" |
| 313 | |
| 314 | records_descs = [ |
| 315 | [('a', 1)], |
| 316 | [('a', 1), ('a', 2)], |
| 317 | [('a', 1), ('b', 2), ('a', 3)], |
| 318 | [('a', 1), ('b', 2), ('a', 3), ('c', 4), ('b', 5)], |
| 319 | ] |
| 320 | |
| 321 | for desc in records_descs: |
| 322 | items = collections.OrderedDict(desc) |
| 323 | |
| 324 | query = 'SELECT ' + ', '.join( |
| 325 | ['{} as {}'.format(p[1], p[0]) for p in desc]) |
| 326 | |
| 327 | with self.subTest(query=query): |
| 328 | r = await self.con.fetchrow(query) |
| 329 | for idx, (field, val) in enumerate(desc): |
| 330 | self.assertEqual(r[idx], val) |
| 331 | self.assertEqual(r[field], items[field]) |
| 332 | |
| 333 | expected_repr = '<Record {}>'.format( |
| 334 | ' '.join('{}={}'.format(p[0], p[1]) for p in desc)) |
| 335 | self.assertEqual(repr(r), expected_repr) |
| 336 | |
| 337 | self.assertEqual(list(r.items()), desc) |
| 338 | self.assertEqual(list(r.values()), [p[1] for p in desc]) |
| 339 | self.assertEqual(list(r.keys()), [p[0] for p in desc]) |
| 340 | |
| 341 | async def test_record_isinstance(self): |
| 342 | """Test that Record works with isinstance.""" |