Useful conditions can be put in lambdas

and an extra test to asure transcoding with upload is possible
This commit is contained in:
2020-05-21 19:08:59 +02:00
parent 2e1c7e7165
commit c6f2bacf0f
2 changed files with 28 additions and 9 deletions

View File

@@ -14,16 +14,17 @@ def create(model: Type[T], **kwargs) -> T:
return _create_with_defaults(models.Video, kwargs, title='Title', slug='slug', description='Description')
if model is models.Transcoding:
defaults = dict(
def url():
# only URL if no upload for they are mutually exclusive
if 'upload' not in kwargs:
return 'https://some_url'
return _create_with_defaults(models.Transcoding, kwargs,
video=lambda: create(models.Video),
quality=models.qualities[0].name,
type=str(models.transcoding_types[0]),
url=url,
)
if 'upload' not in kwargs:
# only URL if no upload for they are multually exclusive
defaults['url'] = 'https://some_url'
return _create_with_defaults(models.Transcoding, kwargs, **defaults)
if model is models.Upload:
return _create_with_defaults(models.Upload, kwargs, file=SimpleUploadedFile('some_file.txt', b'some contents'))

View File

@@ -1,7 +1,9 @@
import os
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import TestCase
from videodinges.models import Transcoding, Video
from tests.videodinges import factories
from datetime import datetime
from videodinges.models import Transcoding, Video, Upload
from tests.videodinges import factories, UploadMixin
class TranscodingTestCase(TestCase):
def test_factory_returns_model(self):
@@ -35,3 +37,19 @@ class TranscodingTestCase(TestCase):
)
self.assertEquals(Video.objects.all().count(), 1)
class TranscodingWithUploadTestCase(UploadMixin, TestCase):
def test_can_assign_upload(self):
transcoding = factories.create(
Transcoding,
quality='720p',
type='video/mp4',
video=factories.create(Video, slug='yet-another-video-slug'),
upload=factories.create(Upload, file=SimpleUploadedFile('my_upload.txt', b'some_contents'))
)
self.assertTrue(os.path.exists(os.path.join(self.media_root.name, 'my_upload.txt')))
with open(os.path.join(self.media_root.name, 'my_upload.txt'), 'rb') as f:
self.assertEquals(f.read(), b'some_contents')