diff options
-rw-r--r-- | tests.py | 32 | ||||
-rw-r--r-- | tests/data/2018/empty.html | 50 |
2 files changed, 80 insertions, 2 deletions
@@ -18,6 +18,7 @@ from unittest import mock from django.test import TestCase from django.utils import timezone +from .management.parsers.abstractparser import ParserError from .management.parsers.ups2018 import Parser as UPS2018Parser from .models import Course, Group, Room, Source, Timetable, Year from .utils import tz_now @@ -43,12 +44,14 @@ def mock_requests_get(*args, **kwargs): return MockedResponse(response.read()) if args[0] == "https://example.org/2018": - if not kwargs["params"]: + if "params" not in kwargs or not kwargs["params"]: return mocked_response_from_file("tests/data/2018/september.html") elif kwargs["params"].get("Date") == "20181001": return mocked_response_from_file("tests/data/2018/october.html") else: - return MockedResponse("<html></html>") + return mocked_response_from_file("tests/data/2018/empty.html") + + return MockedResponse("<html></html>") class CourseTestCase(TestCase): @@ -581,3 +584,28 @@ class UPS2018ParserTestCase(TestCase): def test_get_update_date(self): # Pas de date de mise à jour dans ce format self.assertIsNone(self.parser.get_update_date()) + + +class UPS2018BrokenSourceTestCase(TestCase): + @mock.patch("requests.get") + def test_broken_source(self, mock_get): + mock_get.return_value = mock_requests_get("") + + source = Source.objects.create(url="https://example.org/2018") + with self.assertRaises(ParserError): + UPS2018Parser(source) + + @mock.patch("requests.get") + def test_half_broken_source(self, mock_get): + source = Source.objects.create(url="https://example.org/2018") + mock_get.side_effect = [ + mock_requests_get(""), + mock_requests_get(source.url) + ] + + parser = UPS2018Parser(source) + self.assertEqual(parser.months, [ + "September, 2018", "October, 2018", "November, 2018", + "December, 2018", "January, 2019", "February, 2019", "March, 2019", + "April, 2019", "May, 2019", "June, 2019", "July, 2019" + ]) diff --git a/tests/data/2018/empty.html b/tests/data/2018/empty.html new file mode 100644 index 0000000..dde78b6 --- /dev/null +++ b/tests/data/2018/empty.html @@ -0,0 +1,50 @@ +<script> +function do_something() { +alert("something"); +} +</script> + + <option value="August, 2017">August, 2017</option> + <option value="September, 2017">September, 2017</option> + <option value="October, 2017">October, 2017</option> + <option value="November, 2017">November, 2017</option> + <option value="December, 2017">December, 2017</option> + <option value="January, 2018">January, 2018</option> + <option value="February, 2018">February, 2018</option> + <option value="March, 2018">March, 2018</option> + <option value="April, 2018">April, 2018</option> + <option value="May, 2018">May, 2018</option> + <option value="June, 2018">June, 2018</option> + <option value="July, 2018">July, 2018</option> + <option value="August, 2018">August, 2018</option> + <option value="September, 2018">September, 2018</option> + <option value="October, 2018">October, 2018</option> + <option value="November, 2018">November, 2018</option> + <option value="December, 2018">December, 2018</option> + <option value="January, 2019">January, 2019</option> + <option value="February, 2019">February, 2019</option> + <option value="March, 2019">March, 2019</option> + <option value="April, 2019">April, 2019</option> + <option value="May, 2019">May, 2019</option> + <option value="June, 2019">June, 2019</option> + <option value="July, 2019">July, 2019</option> + +<script> +function do_something_else() { +var v = "a variable"; +var vv = "another_variable"; +do_something(); +} +</script> + +<script> +function courses() { +var v = {}; +v.events.list = [];; +} +</script> + +<script> +courses(); +do_something_else(); +</script> |