More tests for filtering on length

This commit is contained in:
Tim 2024-07-12 17:09:12 +08:00
parent 806e47de41
commit e4f060d6d4

View File

@ -708,9 +708,9 @@ class MediaFilterTestCase(TestCase):
# Add a test source # Add a test source
self.source = Source.objects.create( self.source = Source.objects.create(
source_type=Source.SOURCE_TYPE_YOUTUBE_CHANNEL, source_type=Source.SOURCE_TYPE_YOUTUBE_CHANNEL,
key='testkey', key="testkey",
name='testname', name="testname",
directory='testdirectory', directory="testdirectory",
media_format=settings.MEDIA_FORMATSTR_DEFAULT, media_format=settings.MEDIA_FORMATSTR_DEFAULT,
index_schedule=3600, index_schedule=3600,
delete_old_media=False, delete_old_media=False,
@ -724,15 +724,18 @@ class MediaFilterTestCase(TestCase):
) )
# Add some test media # Add some test media
self.media = Media.objects.create( self.media = Media.objects.create(
key='mediakey', key="mediakey",
source=self.source, source=self.source,
metadata=metadata, metadata=metadata,
skip=False, skip=False,
published=timezone.make_aware(datetime(year=2020, month=1, day=1, hour=1, minute=1, second=1)) published=timezone.make_aware(
datetime(year=2020, month=1, day=1, hour=1, minute=1, second=1)
),
) )
# Fix a created datetime for predictable testing # Fix a created datetime for predictable testing
self.media.created = datetime(year=2020, month=1, day=1, hour=1, self.media.created = datetime(
minute=1, second=1) year=2020, month=1, day=1, hour=1, minute=1, second=1
)
def test_filter_unpublished_skip(self): def test_filter_unpublished_skip(self):
# Check if unpublished that we skip download it # Check if unpublished that we skip download it
@ -745,28 +748,31 @@ class MediaFilterTestCase(TestCase):
def test_filter_published_unskip(self): def test_filter_published_unskip(self):
# Check if we had previously skipped it, but now it's published, we won't skip it # Check if we had previously skipped it, but now it's published, we won't skip it
self.media.skip = True self.media.skip = True
self.media.published = timezone.make_aware(datetime(year=2020, month=1, day=1, hour=1, self.media.published = timezone.make_aware(
minute=1, second=1)) datetime(year=2020, month=1, day=1, hour=1, minute=1, second=1)
)
changed = filter_media(self.media) changed = filter_media(self.media)
self.assertTrue(changed) self.assertTrue(changed)
self.assertFalse(self.media.skip) self.assertFalse(self.media.skip)
def test_filter_filter_text_nomatch(self): def test_filter_filter_text_nomatch(self):
# Check that if we don't match the filter text, we skip # Check that if we don't match the filter text, we skip
self.media.source.filter_text = 'No fancy stuff' self.media.source.filter_text = "No fancy stuff"
self.media.skip = False self.media.skip = False
self.media.published = timezone.make_aware(datetime(year=2020, month=1, day=1, hour=1, self.media.published = timezone.make_aware(
minute=1, second=1)) datetime(year=2020, month=1, day=1, hour=1, minute=1, second=1)
)
changed = filter_media(self.media) changed = filter_media(self.media)
self.assertTrue(changed) self.assertTrue(changed)
self.assertTrue(self.media.skip) self.assertTrue(self.media.skip)
def test_filter_filter_text_match(self): def test_filter_filter_text_match(self):
# Check that if we match the filter text, we don't skip # Check that if we match the filter text, we don't skip
self.media.source.filter_text = '(?i)No fancy stuff' self.media.source.filter_text = "(?i)No fancy stuff"
self.media.skip = True self.media.skip = True
self.media.published = timezone.make_aware(datetime(year=2020, month=1, day=1, hour=1, self.media.published = timezone.make_aware(
minute=1, second=1)) datetime(year=2020, month=1, day=1, hour=1, minute=1, second=1)
)
changed = filter_media(self.media) changed = filter_media(self.media)
self.assertTrue(changed) self.assertTrue(changed)
self.assertFalse(self.media.skip) self.assertFalse(self.media.skip)
@ -775,8 +781,9 @@ class MediaFilterTestCase(TestCase):
# Check if it's older than the max_cap, we don't download it (1 second so it will always fail) # Check if it's older than the max_cap, we don't download it (1 second so it will always fail)
self.media.source.download_cap = 1 self.media.source.download_cap = 1
self.media.skip = False self.media.skip = False
self.media.published = timezone.make_aware(datetime(year=2020, month=1, day=1, hour=1, self.media.published = timezone.make_aware(
minute=1, second=1)) datetime(year=2020, month=1, day=1, hour=1, minute=1, second=1)
)
changed = filter_media(self.media) changed = filter_media(self.media)
self.assertTrue(changed) self.assertTrue(changed)
self.assertTrue(self.media.skip) self.assertTrue(self.media.skip)
@ -790,6 +797,54 @@ class MediaFilterTestCase(TestCase):
self.assertTrue(changed) self.assertTrue(changed)
self.assertFalse(self.media.skip) self.assertFalse(self.media.skip)
def test_filter_below_min(self):
# Filter videos shorter than the minimum limit
self.media.skip = False
self.media.source.filter_seconds_min = True
self.media.source.filter_seconds = 500
self.media.published = timezone.make_aware(
datetime(year=2020, month=1, day=1, hour=1, minute=1, second=1)
)
changed = filter_media(self.media)
self.assertTrue(changed)
self.assertTrue(self.media.skip)
def test_filter_above_min(self):
# Video is longer than the minimum, allow it
self.media.skip = True
self.media.source.filter_seconds_min = True
self.media.source.filter_seconds = 300
self.media.published = timezone.make_aware(
datetime(year=2020, month=1, day=1, hour=1, minute=1, second=1)
)
changed = filter_media(self.media)
self.assertTrue(changed)
self.assertFalse(self.media.skip)
def test_filter_above_max(self):
# Filter videos longer than the maximum limit
self.media.skip = False
self.media.source.filter_seconds_min = False
self.media.source.filter_seconds = 300
self.media.published = timezone.make_aware(
datetime(year=2020, month=1, day=1, hour=1, minute=1, second=1)
)
changed = filter_media(self.media)
self.assertTrue(changed)
self.assertTrue(self.media.skip)
def test_filter_below_max(self):
# Video is below the maximum, allow it
self.media.skip = True
self.media.source.filter_seconds_min = False
self.media.source.filter_seconds = 500
self.media.published = timezone.make_aware(
datetime(year=2020, month=1, day=1, hour=1, minute=1, second=1)
)
changed = filter_media(self.media)
self.assertTrue(changed)
self.assertFalse(self.media.skip)
class FormatMatchingTestCase(TestCase): class FormatMatchingTestCase(TestCase):