forked from janpio/vitess-framework-testing
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This commit adds test for different django fields and some of their parameters. This commit also adds model-bakery as a requirement which is used to create mock objects of model classes and facilitates testing. work towards vitessio/vitess#7905 Signed-off-by: abhaykatheria <[email protected]>
- Loading branch information
1 parent
15a2256
commit a14808d
Showing
5 changed files
with
172 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,3 +3,5 @@ Django==3.1.4 | |
mysqlclient==2.0.1 | ||
pytz==2020.4 | ||
sqlparse==0.4.1 | ||
model-bakery==1.3.1 | ||
Pillow==8.2.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
124 changes: 124 additions & 0 deletions
124
frameworks/python/django/src/testApp/test/test_fields/test_fields.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
# Django's guide on Model layer | ||
# https://docs.djangoproject.com/en/3.2/topics/db/models | ||
|
||
from django.test import TestCase | ||
from testApp.models import Person, Event, Server | ||
from django.core.files.uploadedfile import SimpleUploadedFile | ||
from pprint import pprint | ||
from model_bakery import baker | ||
from datetime import datetime, timedelta, time | ||
from uuid import UUID | ||
from decimal import Decimal | ||
|
||
|
||
class FieldsTestCase(TestCase): | ||
@classmethod | ||
def setUpTestData(cls): | ||
small_gif = ( | ||
b"\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x00\x00\x00\x21\xf9\x04" | ||
b"\x01\x0a\x00\x01\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02" | ||
b"\x02\x4c\x01\x00\x3b" | ||
) | ||
cls.test_image = SimpleUploadedFile( | ||
"small.gif", small_gif, content_type="image/gif" | ||
) | ||
cls.test_event = baker.make("testApp.Event", title="TEST EVENT") | ||
cls.test_server = baker.make("testApp.Server", name="TEST SERVER") | ||
|
||
def test_event_model(self): | ||
event_1 = Event.objects.get(title="TEST EVENT") | ||
|
||
# testing big auto field as a primary key | ||
self.assertEqual(event_1.id, 1) | ||
|
||
# testing website field with default null value | ||
self.assertIsNone(event_1.website) | ||
|
||
# testing fields with choices | ||
self.assertIn(event_1.t_size, ("S", "M", "L")) | ||
event_1.brochure = self.test_image | ||
print(event_1.id) | ||
|
||
# testing float field with blank = true and a set default value | ||
self.assertIsNotNone(event_1.rating) | ||
self.assertEquals(event_1.rating, 5.0) | ||
self.assertIsInstance(event_1.rating, float) | ||
|
||
# testing date and datetime fields | ||
self.assertEqual(event_1.start_date_time.date(), datetime.today().date()) | ||
self.assertEqual(event_1.start_date, datetime.today().date()) | ||
|
||
# testing duration field | ||
self.assertIsNotNone(event_1.duration) | ||
self.assertIsInstance(event_1.duration, timedelta) | ||
|
||
# testing email field | ||
self.assertIsNotNone(event_1.organiser_email) | ||
self.assertIsInstance(event_1.organiser_email, str) | ||
|
||
# testing slug field | ||
self.assertIsNotNone(event_1.slug) | ||
self.assertIsInstance(event_1.slug, str) | ||
|
||
# testing big integer field | ||
self.assertIsNotNone(event_1.no_of_views) | ||
self.assertIsInstance(event_1.no_of_views, int) | ||
|
||
# testing integer field | ||
self.assertIsNotNone(event_1.no_of_attendees) | ||
self.assertIsInstance(event_1.no_of_attendees, int) | ||
|
||
# testing time field | ||
self.assertIsNotNone(event_1.start_time) | ||
self.assertIsInstance(event_1.start_time, time) | ||
|
||
# testing text field | ||
self.assertIsNotNone(event_1.summary) | ||
self.assertIsInstance(event_1.summary, str) | ||
|
||
# testing boolean field | ||
self.assertIsNotNone(event_1.is_accepting_registration) | ||
self.assertIsInstance(event_1.is_accepting_registration, bool) | ||
|
||
# testing image field | ||
event_1.banner = self.test_image | ||
self.assertIsNotNone(event_1.banner) | ||
|
||
# testing file field | ||
event_1.brochure = self.test_image | ||
self.assertIsNotNone(event_1.brochure) | ||
|
||
def test_server_model(self): | ||
test_server = Server.objects.get(name="TEST SERVER") | ||
|
||
# testing UUID Fields | ||
self.assertIsNotNone(test_server.uuid) | ||
self.assertIsInstance(test_server.uuid, UUID) | ||
|
||
# testing generic ip field | ||
self.assertIsNotNone(test_server.ip) | ||
self.assertIsInstance(test_server.ip, str) | ||
|
||
# testing positive big integer field | ||
self.assertIsNotNone(test_server.memory_in_mb) | ||
self.assertIsInstance(test_server.memory_in_mb, int) | ||
|
||
# testing positive small integer field | ||
self.assertIsNotNone(test_server.no_of_cores) | ||
self.assertIsInstance(test_server.no_of_cores, int) | ||
|
||
# testing small integer field | ||
self.assertIsNotNone(test_server.freq_in_ghz) | ||
self.assertIsInstance(test_server.freq_in_ghz, int) | ||
|
||
# testing positive integer field | ||
self.assertIsNotNone(test_server.no_of_threads) | ||
self.assertIsInstance(test_server.no_of_threads, int) | ||
|
||
# testing binary field | ||
self.assertIsNotNone(test_server.binary_sig) | ||
self.assertIsInstance(test_server.binary_sig, bytes) | ||
|
||
# testing decimal field | ||
self.assertIsNotNone(test_server.cache_size) | ||
self.assertIsInstance(test_server.cache_size, Decimal) |