78 lines
2.2 KiB
Python
78 lines
2.2 KiB
Python
from django.test import TestCase
|
|
|
|
from watchlist.models import IMDB_ID_RE, CSFD_ID_RE
|
|
|
|
class IMDBIDTest(TestCase):
|
|
|
|
def test_valid_imdb_id(self):
|
|
valid = [
|
|
"tt0000000",
|
|
"tt1234567",
|
|
"tt4975722",
|
|
"tt3581920"
|
|
]
|
|
for testId in valid:
|
|
with self.subTest(testId=testId):
|
|
self.assertTrue(IMDB_ID_RE.match(testId))
|
|
|
|
def test_invalid_imdb_id(self):
|
|
invalid = [
|
|
"tt",
|
|
"tt1",
|
|
"1234567"
|
|
"tt123456",
|
|
"-tt1234567",
|
|
""
|
|
]
|
|
for testId in invalid:
|
|
with self.subTest(testId=testId):
|
|
self.assertFalse(IMDB_ID_RE.match(testId))
|
|
|
|
def test_url_extraction(self):
|
|
urls = [
|
|
("https://www.imdb.com/title/tt4925292/?ref_=hm_rvi_tt_i_1", "tt4925292"),
|
|
("https://www.imdb.com/title/tt5580390/", "tt5580390"),
|
|
]
|
|
for url, result in urls:
|
|
with self.subTest(url=url, result=result):
|
|
m = IMDB_ID_RE.search(url)
|
|
self.assertTrue(m)
|
|
self.assertEqual(m.group(), result)
|
|
|
|
class CSFDIDTest(TestCase):
|
|
|
|
def test_valid_csfd_id(self):
|
|
valid = [
|
|
"1",
|
|
"123",
|
|
"969361"
|
|
|
|
]
|
|
for testId in valid:
|
|
with self.subTest(testId=testId):
|
|
self.assertTrue(CSFD_ID_RE.match(testId))
|
|
|
|
def test_invalid_csfd_id(self):
|
|
invalid = [
|
|
"abc",
|
|
"-1",
|
|
"0",
|
|
"tt0000000",
|
|
"",
|
|
]
|
|
for testId in invalid:
|
|
with self.subTest(testId=testId):
|
|
self.assertFalse(CSFD_ID_RE.match(testId))
|
|
|
|
def test_url_extraction(self):
|
|
urls = [
|
|
("https://www.csfd.cz/film/1-predevsim-nikomu-neublizim/recenze/", "1"),
|
|
("https://www.csfd.cz/film/969361-velryba/prehled/", "969361"),
|
|
("https://www.csfd.cz/film/370706-daredevil/galerie/?page=20", "370706")
|
|
]
|
|
for url, result in urls:
|
|
with self.subTest(url=url, result=result):
|
|
m = CSFD_ID_RE.search(url)
|
|
self.assertTrue(m)
|
|
self.assertEqual(m.group(), result)
|