Browse Source

Add one extra test scenario to getting remote css size

rafalp 6 years ago
parent
commit
811bb68229
1 changed files with 63 additions and 0 deletions
  1. 63 0
      misago/themes/admin/tests/test_getting_remote_css_size.py

+ 63 - 0
misago/themes/admin/tests/test_getting_remote_css_size.py

@@ -0,0 +1,63 @@
+import responses
+
+from ..tasks import update_remote_css_size
+
+
+def mock_http_head_response(css_link, content_length=None):
+    headers = {}
+    if content_length is not None:
+        headers["content-length"] = str(content_length)
+
+    responses.add(responses.HEAD, css_link.url, headers=headers)
+
+
+@responses.activate
+def test_task_uses_content_length_header_to_set_css_size(css_link):
+    content_length = 343
+    mock_http_head_response(css_link, content_length)
+
+    update_remote_css_size(css_link.pk)
+
+    css_link.refresh_from_db()
+    assert css_link.size == content_length
+
+
+@responses.activate
+def test_task_doesnt_change_css_size_if_content_length_header_is_incorrect(css_link):
+    mock_http_head_response(css_link, "incorrect")
+    update_remote_css_size(css_link.pk)
+
+    css_link.refresh_from_db()
+    assert css_link.size == 0
+
+
+@responses.activate
+def test_task_doesnt_change_css_size_if_content_length_header_is_empty(css_link):
+    mock_http_head_response(css_link, "")
+    update_remote_css_size(css_link.pk)
+
+    css_link.refresh_from_db()
+    assert css_link.size == 0
+
+
+@responses.activate
+def test_task_doesnt_change_css_size_if_content_length_header_is_not_set(css_link):
+    mock_http_head_response(css_link)
+    update_remote_css_size(css_link.pk)
+
+    css_link.refresh_from_db()
+    assert css_link.size == 0
+
+
+@responses.activate
+def test_task_doesnt_change_css_size_if_http_request_failed(css_link):
+    responses.add(responses.HEAD, css_link.url, status=404)
+    update_remote_css_size(css_link.pk)
+
+
+def test_task_handles_css_without_url(css):
+    update_remote_css_size(css.pk)
+
+
+def test_task_handles_nonexisting_css(db):
+    update_remote_css_size(1)