from unittest import TestCase import datetime from django_clickhouse.database import connections from django_clickhouse.migrations import migrate_app from django_clickhouse.query import QuerySet from tests.clickhouse_models import ClickHouseTestModel class TestQuerySet(TestCase): def _recreate_db(self, db_alias): db = connections[db_alias] db.drop_database() db.db_exists = False db.create_database() migrate_app('tests', db_alias) return db def setUp(self): self.db = self._recreate_db('default') self._recreate_db('secondary') def test_all(self): self.db.insert([ClickHouseTestModel(id=i, created_date=datetime.date.today(), value=i) for i in range(1, 4)]) qs = ClickHouseTestModel.objects.all() self.assertIsInstance(qs, QuerySet) self.assertEqual(3, qs.count()) def test_create(self): ClickHouseTestModel.objects.create(id=1, created_date=datetime.date.today(), value=2) res = list(self.db.select('SELECT * FROM $table', model_class=ClickHouseTestModel)) self.assertEqual(1, len(res)) self.assertEqual(1, res[0].id) self.assertEqual(datetime.date.today(), res[0].created_date) self.assertEqual(2, res[0].value) def test_bulk_create(self): ClickHouseTestModel.objects.bulk_create([ ClickHouseTestModel(id=i, created_date=datetime.date.today(), value=i) for i in range(1, 4) ]) res = list(self.db.select('SELECT * FROM $table ORDER BY id', model_class=ClickHouseTestModel)) self.assertEqual(3, len(res)) for i in range(0, 3): self.assertEqual(i + 1, res[i].id) self.assertEqual(datetime.date.today(), res[0].created_date) self.assertEqual(i + 1, res[i].value) def test_using(self): self.db.insert( [ClickHouseTestModel(id=i, created_date=datetime.date.today(), value=i) for i in range(1, 4)] ) connections['secondary'].insert([ ClickHouseTestModel(id=i, created_date=datetime.date.today(), value=i) for i in range(10, 12) ]) self.assertEqual(3, ClickHouseTestModel.objects.count()) self.assertEqual(3, ClickHouseTestModel.objects_in(self.db).count()) self.assertEqual(2, ClickHouseTestModel.objects_in(self.db).using('secondary').count()) self.assertEqual(2, ClickHouseTestModel.objects.using('secondary').count()) self.assertEqual(3, ClickHouseTestModel.objects.using('default').count())