From 02a598aefe637071f2c1f122d040ecfb7c0029f3 Mon Sep 17 00:00:00 2001 From: Valentin Sabatier Date: Mon, 27 Nov 2023 15:07:08 +0100 Subject: [PATCH] unit test + pydoc --- pod/dressing/admin.py | 1 + pod/dressing/forms.py | 4 + pod/dressing/models.py | 2 + pod/dressing/test.py | 3 - pod/dressing/tests/__init__.py | 0 pod/dressing/tests/test_models.py | 104 ++++++++++++++++++ pod/dressing/tests/test_views.py | 1 + pod/dressing/tests/testimage.jpg | Bin 0 -> 16980 bytes pod/dressing/utils.py | 2 + pod/dressing/views.py | 4 +- pod/video_encode_transcript/Encoding_video.py | 3 + 11 files changed, 120 insertions(+), 4 deletions(-) delete mode 100644 pod/dressing/test.py create mode 100644 pod/dressing/tests/__init__.py create mode 100644 pod/dressing/tests/test_models.py create mode 100644 pod/dressing/tests/test_views.py create mode 100644 pod/dressing/tests/testimage.jpg diff --git a/pod/dressing/admin.py b/pod/dressing/admin.py index b7a803c200..c39da3df0f 100644 --- a/pod/dressing/admin.py +++ b/pod/dressing/admin.py @@ -4,6 +4,7 @@ class DressingAdmin(admin.ModelAdmin): + """Dressing admin page.""" form = DressingForm list_display = ("title", "watermark", "opacity", "position", "opening_credits", "ending_credits") diff --git a/pod/dressing/forms.py b/pod/dressing/forms.py index ab564902a6..924164190f 100644 --- a/pod/dressing/forms.py +++ b/pod/dressing/forms.py @@ -44,12 +44,14 @@ class AddVideoHoldWidget(s2forms.ModelSelect2Widget): class DressingForm(forms.ModelForm): + """Form to add or edit a dressing.""" is_staff = True is_superuser = False admin_form = True site = forms.ModelChoiceField(Site.objects.all(), required=False) def __init__(self, *args, **kwargs): + """Init method.""" self.is_staff = ( kwargs.pop("is_staff") if "is_staff" in kwargs.keys() else self.is_staff ) @@ -91,6 +93,7 @@ def __init__(self, *args, **kwargs): self.fields["ending_credits"].queryset = query_videos.all() class Meta(object): + """Meta class.""" model = Dressing fields = "__all__" exclude = ['videos'] @@ -104,6 +107,7 @@ class Meta(object): class DressingDeleteForm(forms.Form): + """Form to delete a dressing.""" agree = forms.BooleanField( label=_("I agree"), help_text=_("Delete dressing cannot be undo"), diff --git a/pod/dressing/models.py b/pod/dressing/models.py index c97c22305e..059acf9ae1 100644 --- a/pod/dressing/models.py +++ b/pod/dressing/models.py @@ -104,10 +104,12 @@ class Dressing(models.Model): ) class Meta: + """Metadata for Dressing model.""" verbose_name = _("Video dressing") verbose_name_plural = _("Video dressings") def to_json(self): + """Convert to json format for encoding logs""" return { "id": self.id, "title": self.title, diff --git a/pod/dressing/test.py b/pod/dressing/test.py deleted file mode 100644 index 7ce503c2dd..0000000000 --- a/pod/dressing/test.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/pod/dressing/tests/__init__.py b/pod/dressing/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pod/dressing/tests/test_models.py b/pod/dressing/tests/test_models.py new file mode 100644 index 0000000000..88827d34da --- /dev/null +++ b/pod/dressing/tests/test_models.py @@ -0,0 +1,104 @@ +"""Unit tests for dressing models.""" + +import os +from django.test import TestCase +from django.contrib.auth.models import User +from django.conf import settings +from django.core.files.uploadedfile import SimpleUploadedFile +from pod.video.models import Type, Video +from pod.dressing.models import Dressing + +if getattr(settings, "USE_PODFILE", False): + from pod.podfile.models import CustomImageModel + from pod.podfile.models import UserFolder + + FILEPICKER = True +else: + FILEPICKER = False + from pod.main.models import CustomImageModel + + +class DressingModelTest(TestCase): + """Test case for Pod dressing models.""" + def setUp(self): + owner = User.objects.create(username="pod") + currentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + simplefile = SimpleUploadedFile( + name="testimage.jpg", + content=open(os.path.join(currentdir, "tests", "testimage.jpg"), "rb").read(), + content_type="image/jpeg", + ) + + home = UserFolder.objects.get(name="home", owner=owner) + if FILEPICKER: + home = UserFolder.objects.get(name="home", owner=owner) + customImage = CustomImageModel.objects.create( + name="testimage", + description="testimage", + created_by=owner, + folder=home, + file=simplefile, + ) + else: + customImage = CustomImageModel.objects.create(file=simplefile) + videotype = Type.objects.create(title="others") + video = Video.objects.create( + title="video", + type=videotype, + owner=owner, + video="test.mp4", + duration=20, + ) + video2 = Video.objects.create( + title="video2", + type=videotype, + owner=owner, + video="test2.mp4", + duration=20, + ) + dressing = Dressing.objects.create( + title='Test Dressing', + watermark=customImage, + position=Dressing.TOP_RIGHT, + opacity=50, + opening_credits=video, + ending_credits=video2, + ) + dressing.owners.set([owner]) + dressing.users.set([owner]) + + def test_attributs_full(self): + dressing = Dressing.objects.get(id=1) + owner = User.objects.get(username="pod") + video = Video.objects.get(id=1) + video2 = Video.objects.get(id=2) + self.assertEqual(dressing.title, 'Test Dressing') + self.assertEqual(list(dressing.owners.all()), [owner]) + self.assertEqual(list(dressing.users.all()), [owner]) + self.assertEqual(list(dressing.allow_to_groups.all()), []) + self.assertTrue("testimage" in dressing.watermark.name) + self.assertEqual(dressing.position, Dressing.TOP_RIGHT) + self.assertEqual(dressing.opacity, 50) + self.assertEqual(dressing.opening_credits, video) + self.assertEqual(dressing.ending_credits, video2) + + def test_dressing_to_json(self): + dressing = Dressing.objects.get(id=1) + dressing_json = dressing.to_json() + owner = User.objects.get(username="pod") + video = Video.objects.get(id=1) + video2 = Video.objects.get(id=2) + + expected_json = { + "id": dressing.id, + "title": "Test Dressing", + "allow_to_groups": [], + "owners": [owner.id], + "users": [owner.id], + "watermark": dressing.watermark.file.url, + "position": "En haut à droite", + "opacity": 50, + "opening_credits": video.slug, + "ending_credits": video2.slug, + } + self.assertEqual(dressing_json, expected_json) diff --git a/pod/dressing/tests/test_views.py b/pod/dressing/tests/test_views.py new file mode 100644 index 0000000000..46918e2294 --- /dev/null +++ b/pod/dressing/tests/test_views.py @@ -0,0 +1 @@ +"""Unit tests for dressing views.""" diff --git a/pod/dressing/tests/testimage.jpg b/pod/dressing/tests/testimage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..933f8ab7491466f85d505e0a33419ba17ce3b1de GIT binary patch literal 16980 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 J4~Q^7{U0EFV1@ty literal 0 HcmV?d00001 diff --git a/pod/dressing/utils.py b/pod/dressing/utils.py index cdb8eb12ba..f89b15fd8b 100644 --- a/pod/dressing/utils.py +++ b/pod/dressing/utils.py @@ -4,6 +4,7 @@ def get_position_value(position, height): + """Obtain dimensions proportional to the video format.""" height = str(float(height) * 0.05) if position == 'top_right': return 'overlay=main_w-overlay_w-' + height + ':' + height @@ -16,6 +17,7 @@ def get_position_value(position, height): def get_dressing_input(dressing, FFMPEG_DRESSING_INPUT): + """Function to obtain the files necessary for encoding a dressed video""" command = '' if dressing.watermark: command += FFMPEG_DRESSING_INPUT % { diff --git a/pod/dressing/views.py b/pod/dressing/views.py index 81d630344b..4d72c8495a 100644 --- a/pod/dressing/views.py +++ b/pod/dressing/views.py @@ -57,6 +57,7 @@ def video_dressing(request, slug): @csrf_protect @login_required(redirect_field_name="referrer") def dressing_edit(request, dressing_id): + """Edit a dressing object.""" dressing_edit = get_object_or_404(Dressing, id=dressing_id) form_dressing = DressingForm( instance=dressing_edit, @@ -86,6 +87,7 @@ def dressing_edit(request, dressing_id): @csrf_protect @login_required(redirect_field_name="referrer") def dressing_create(request): + """Create a dressing object.""" if request.method == 'POST': form_dressing = DressingForm(request.POST, user=request.user) if form_dressing.is_valid(): @@ -129,7 +131,7 @@ def dressing_delete(request, dressing_id): @csrf_protect @login_required(redirect_field_name="referrer") def my_dressings(request): - """Render the logged user's dressing""" + """Render the logged user's dressings.""" if in_maintenance(): return redirect(reverse("maintenance")) user = request.user diff --git a/pod/video_encode_transcript/Encoding_video.py b/pod/video_encode_transcript/Encoding_video.py index 75b194cf9a..8cb0698d01 100644 --- a/pod/video_encode_transcript/Encoding_video.py +++ b/pod/video_encode_transcript/Encoding_video.py @@ -393,12 +393,14 @@ def get_hls_command(self): return hls_command def get_dressing_file(self): + """Create or replace the dressed video file.""" dirname = os.path.dirname(self.video_file) filename, ext = os.path.splitext(os.path.basename(self.video_file)) output_file = os.path.join(dirname, filename + "_dressing" + ext) return output_file def get_dressing_command(self): + """Get the command based on the dressing object parameters""" height = str(list(self.list_video_track.items())[0][1]["height"]) order_opening_credits = 0 dressing_command_params = '[vid][0:a]' @@ -462,6 +464,7 @@ def get_dressing_command(self): return dressing_command def encode_video_dressing(self): + """Encode the dressed video.""" dressing_command = self.get_dressing_command() return_value, return_msg = launch_cmd(dressing_command) self.add_encoding_log("dressing_command", dressing_command, return_value,