mirror of
				https://github.com/carrotquest/django-clickhouse.git
				synced 2025-11-01 00:17:26 +03:00 
			
		
		
		
	Added tests on issue-42 (#45)
Fixed issue https://github.com/carrotquest/django-clickhouse/issues/42
This commit is contained in:
		
							parent
							
								
									b2cb098349
								
							
						
					
					
						commit
						fc362e852f
					
				|  | @ -64,7 +64,7 @@ class ClickHouseSyncBulkUpdateQuerySetMixin(ClickHouseSyncRegisterMixin, BulkUpd | ||||||
|         if returning is None: |         if returning is None: | ||||||
|             returning = pk_name |             returning = pk_name | ||||||
|         elif isinstance(returning, str): |         elif isinstance(returning, str): | ||||||
|             returning = [pk_name, returning] |             returning = [pk_name, returning] if returning != '*' else '*' | ||||||
|         else: |         else: | ||||||
|             returning = list(returning) + [pk_name] |             returning = list(returning) + [pk_name] | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -99,6 +99,22 @@ class TestOperations(TransactionTestCase): | ||||||
|         self.assertSetEqual({('insert', "%s.%d" % (self.db_alias, instance.pk)) for instance in items}, |         self.assertSetEqual({('insert', "%s.%d" % (self.db_alias, instance.pk)) for instance in items}, | ||||||
|                             set(self.storage.get_operations(self.clickhouse_model.get_import_key(), 10))) |                             set(self.storage.get_operations(self.clickhouse_model.get_import_key(), 10))) | ||||||
| 
 | 
 | ||||||
|  |     def test_pg_bulk_create_returning(self): | ||||||
|  |         now_dt = now() | ||||||
|  |         res = self.django_model.objects.pg_bulk_create([ | ||||||
|  |             {'value': i, 'created': now_dt, 'created_date': now_dt.date()} | ||||||
|  |             for i in range(5) | ||||||
|  |         ], returning='*') | ||||||
|  | 
 | ||||||
|  |         self.assertEqual(5, len(res)) | ||||||
|  |         for i, instance in enumerate(res): | ||||||
|  |             self.assertEqual(instance.created, now_dt) | ||||||
|  |             self.assertEqual(instance.created_date, now_dt.date()) | ||||||
|  |             self.assertEqual(i, instance.value) | ||||||
|  | 
 | ||||||
|  |         self.assertSetEqual({('insert', "%s.%d" % (self.db_alias, instance.pk)) for instance in res}, | ||||||
|  |                             set(self.storage.get_operations(self.clickhouse_model.get_import_key(), 10))) | ||||||
|  | 
 | ||||||
|     def test_pg_bulk_update(self): |     def test_pg_bulk_update(self): | ||||||
|         items = list(self.django_model.objects.filter(pk__in={1, 2})) |         items = list(self.django_model.objects.filter(pk__in={1, 2})) | ||||||
| 
 | 
 | ||||||
|  | @ -115,6 +131,21 @@ class TestOperations(TransactionTestCase): | ||||||
|         self.assertSetEqual({('update', "%s.%d" % (self.db_alias, instance.pk)) for instance in items}, |         self.assertSetEqual({('update', "%s.%d" % (self.db_alias, instance.pk)) for instance in items}, | ||||||
|                             set(self.storage.get_operations(self.clickhouse_model.get_import_key(), 10))) |                             set(self.storage.get_operations(self.clickhouse_model.get_import_key(), 10))) | ||||||
| 
 | 
 | ||||||
|  |     def test_pg_bulk_update_returning(self): | ||||||
|  |         items = list(self.django_model.objects.filter(pk__in={1, 2})) | ||||||
|  | 
 | ||||||
|  |         res = self.django_model.objects.pg_bulk_update([ | ||||||
|  |             {'id': instance.pk, 'value': instance.pk * 10} | ||||||
|  |             for instance in items | ||||||
|  |         ], returning='*') | ||||||
|  | 
 | ||||||
|  |         self.assertEqual(2, len(res)) | ||||||
|  |         for instance in res: | ||||||
|  |             self.assertEqual(instance.value, instance.pk * 10) | ||||||
|  | 
 | ||||||
|  |         self.assertSetEqual({('update', "%s.%d" % (self.db_alias, instance.pk)) for instance in items}, | ||||||
|  |                             set(self.storage.get_operations(self.clickhouse_model.get_import_key(), 10))) | ||||||
|  | 
 | ||||||
|     def test_pg_bulk_update_or_create(self): |     def test_pg_bulk_update_or_create(self): | ||||||
|         items = list(self.django_model.objects.filter(pk__in={1, 2})) |         items = list(self.django_model.objects.filter(pk__in={1, 2})) | ||||||
| 
 | 
 | ||||||
|  | @ -135,6 +166,25 @@ class TestOperations(TransactionTestCase): | ||||||
|         self.assertSetEqual({('update', "%s.%d" % (self.db_alias, instance.pk)) for instance in items}, |         self.assertSetEqual({('update', "%s.%d" % (self.db_alias, instance.pk)) for instance in items}, | ||||||
|                             set(self.storage.get_operations(self.clickhouse_model.get_import_key(), 10))) |                             set(self.storage.get_operations(self.clickhouse_model.get_import_key(), 10))) | ||||||
| 
 | 
 | ||||||
|  |     def test_pg_bulk_update_or_create_returning(self): | ||||||
|  |         items = list(self.django_model.objects.filter(pk__in={1, 2})) | ||||||
|  | 
 | ||||||
|  |         data = [{ | ||||||
|  |             'id': instance.pk, | ||||||
|  |             'value': instance.pk * 10, | ||||||
|  |             'created_date': instance.created_date, | ||||||
|  |             'created': instance.created | ||||||
|  |         } for instance in items] + [{'id': 11, 'value': 110, 'created_date': datetime.date.today(), 'created': now()}] | ||||||
|  | 
 | ||||||
|  |         res = self.django_model.objects.pg_bulk_update_or_create(data, returning='*') | ||||||
|  | 
 | ||||||
|  |         self.assertEqual(3, len(res)) | ||||||
|  |         for instance in res: | ||||||
|  |             self.assertEqual(instance.value, instance.pk * 10) | ||||||
|  | 
 | ||||||
|  |         self.assertSetEqual({('update', "%s.%d" % (self.db_alias, instance.pk)) for instance in res}, | ||||||
|  |                             set(self.storage.get_operations(self.clickhouse_model.get_import_key(), 10))) | ||||||
|  | 
 | ||||||
|     def test_get_or_create(self): |     def test_get_or_create(self): | ||||||
|         instance, created = self.django_model.objects. \ |         instance, created = self.django_model.objects. \ | ||||||
|             get_or_create(pk=100, defaults={'created_date': datetime.date.today(), 'created': datetime.datetime.now(), |             get_or_create(pk=100, defaults={'created_date': datetime.date.today(), 'created': datetime.datetime.now(), | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user