diff --git a/tests/flaskunittest.py b/tests/flaskunittest.py new file mode 100644 index 0000000000000000000000000000000000000000..cb2435fc95cd46e91b1cf5cd2bb5e39ceab70374 --- /dev/null +++ b/tests/flaskunittest.py @@ -0,0 +1,23 @@ +import unittest +import server +import flask +import os +import random + +class FlaskTestCase(unittest.TestCase): + def tearDown(self): + pass + + def setUp(self): + server.app.testing = True + self.requestContext = server.app.test_request_context() + self.client = server.app.test_client() + self.app = server.app + + def videoagLogin(self): + self.sess_csrf_token = os.urandom(32) + self.sess_dbid = random.randint(0, 100) + self.sess_username = 'videoag' + with self.client.session_transaction() as sess: + sess['user'] = {'name': self.sess_username, '_csrf_token': self.csrf_token, 'dbid': self.sess_dbid} + sess['_csrf_token'] = self.sess_csrf_token diff --git a/tests/test_jobmanagement.py b/tests/test_jobmanagement.py index 98037365b801a717b1225b2291e3a2a10e403588..fc950c690dddc240b6ca7462ce0846b628f98050 100644 --- a/tests/test_jobmanagement.py +++ b/tests/test_jobmanagement.py @@ -1,22 +1,11 @@ -import unittest -import server -import flask +from flaskunittest import FlaskTestCase from datetime import datetime, timedelta import jobmanagement from server import query -class JobmanagementTestCase(unittest.TestCase): - def tearDown(self): - pass - - def setUp(self): - server.app.testing = True - self.requestContext = server.app.test_request_context() - self.client = server.app.test_client() - self.app = server.app - +class JobmanagementTestCase(FlaskTestCase): def getJobCount(self, state=None): if not state: data = query("SELECT count(id) AS count from jobs") diff --git a/tests/test_general.py b/tests/test_misc.py similarity index 100% rename from tests/test_general.py rename to tests/test_misc.py diff --git a/tests/test_sorter.py b/tests/test_sorter.py new file mode 100644 index 0000000000000000000000000000000000000000..0a3c87884772c5ea798f9334290aaba00c2b46d6 --- /dev/null +++ b/tests/test_sorter.py @@ -0,0 +1,65 @@ +from flaskunittest import FlaskTestCase + +import sorter +from datetime import datetime, date, time + +class SorterTestCase(FlaskTestCase): + def test_split_filename(self): + testdata = [ + {'filename': 'asdasd', 'chunks': ['asdasd']}, + {'filename': 'a-b-c-d', 'chunks': ['a', 'b', 'c', 'd']}, + {'filename': 'a_', 'chunks': ['a', '']}, + {'filename': 'a-', 'chunks': ['a', '']}, + {'filename': 'a ', 'chunks': ['a', '']}, + {'filename': '-ß', 'chunks': ['', 'ß']}, + {'filename': 'b-a.mp4', 'chunks': ['b', 'a.mp4']}, + {'filename': '', 'chunks': ['']} + ] + for test in testdata: + result = sorter.split_filename(test['filename']) + assert result == test['chunks'], 'result was {}, should be {}'.format(result, test) + + def extract_format_keyword_from_filename(self): + testdata = [ + {'chunks': ['',''], 'format': ''}, + {'chunks': ['asd','720p'], 'format': '720p'}, + {'chunks': ['asd','720P'], 'format': '720p'}, + {'chunks': ['asd','#\ää'], 'format': '#\ää'}, + {'chunks': ['123'], 'format': '123'}, + ] + for test in testdata: + result = sorter.extract_format_keyword_from_filename(test['chunks']) + assert result == test['format'], 'result was {}, should be {}'.format(result, test) + + def test_filter_formats_by_filename(self): + testdata = [ + {'chunks': ['ääüp','ßääää'], 'format': 0}, + {'chunks': ['123üß','720P'], 'format': 5}, + {'chunks': ['testvideo','1080p'], 'format': 4}, + {'chunks': ['mp3'], 'format': 7}, + ] + with self.requestContext: + for test in testdata: + result = sorter.filter_formats_by_filename(test['chunks']) + assert result == test['formatid'], 'result was {}, should be {}'.format(result, test) + + def test_parse_filename(self): + testdata = [ + {'filename': '', 'data': {'keywords': ['']}}, + {'filename': '18ss-mc-180413_720p.mp4', 'data': {'keywords': ['18ss', 'mc', '720p'], 'date': date(year=2018, month=4, day=13)}}, + {'filename': 'astaintern-astawiki-1080p.mp4', 'data': {'keywords': ['astaintern', 'astawiki', '1080p']}}, + {'filename': '15ss-zkk-extremale-codes-720p.mp4', 'data': {'keywords': ['15ss', 'zkk', 'extremale', 'codes', '720p']}}, + # TODO: missing test data for time + ] + for test in testdata: + result = sorter.parse_filename(sorter.split_filename(test['filename'])) + assert result == test['data'], 'result was {}, should be {}'.format(result, test['data']) + + def test_filter_lectures_by_keywords(self): + pass + def test_filter_lectures_by_datetime(self): + pass + def test_filter_formats_by_filename(self): + pass + def test_sort_file(self): + pass