about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/qc_app/test_parse.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/qc_app/test_parse.py b/tests/qc_app/test_parse.py
index 0a62df4..b7bf938 100644
--- a/tests/qc_app/test_parse.py
+++ b/tests/qc_app/test_parse.py
@@ -1,6 +1,8 @@
 """Test the 'parse' module in the web-ui"""
 import redis
 
+import pytest
+
 from qc_app.jobs import job
 from tests.conftest import uploadable_file_object
 
@@ -40,3 +42,52 @@ def test_parse_with_existing_uploaded_file(client, redis_server, monkeypatch):
         "python3", "-m", "scripts.worker", filetype,
         f"{client.application.config['UPLOAD_FOLDER']}/{filename}", redis_server,
         module_uuid4()])
+
+@pytest.mark.parametrize(
+    "filename,uri,error_msgs",
+    (("non_existent.file",
+      "/parse/parse?filename=non_existent.file&filename=average",
+      [(b'<span class="alert alert-error">Selected file does not exist '
+        b'(any longer)</span>')]),
+     ("non_existent.file",
+      "/parse/parse?filename=non_existent.file&filename=standard-error",
+      [(b'<span class="alert alert-error">Selected file does not exist '
+        b'(any longer)</span>')]),
+     ("non_existent.file",
+      "/parse/parse?filename=non_existent.file&filename=percival",
+      [(b'<span class="alert alert-error">Selected file does not exist '
+        b'(any longer)</span>'),
+       b'<span class="alert alert-error">Invalid filetype provided</span>']),
+     ("no_data_errors.tsv",
+      "/parse/parse?filename=no_data_errors.tsv&filename=percival",
+      [b'<span class="alert alert-error">Invalid filetype provided</span>']),
+     ("no_data_errors.tsv",
+      "/parse/parse?filename=no_data_errors.tsv",
+      [b'<span class="alert alert-error">No filetype provided</span>']),
+     (None, "/parse/parse",
+      [b'<span class="alert alert-error">No file provided</span>',
+       b'<span class="alert alert-error">No filetype provided</span>'])))
+def test_parse_with_non_uploaded_file(client, filename, uri, error_msgs):
+    """
+    GIVEN: 1. A flask application testing client
+           2. A valid filetype
+           3. A filename to a file that has not been uploaded yet
+    WHEN: The parsing triggered
+    THEN: Ensure that the appropriate errors are displayed
+    """
+    ## Conditionally upload files
+    if filename and filename != "non_existent.file":
+        client.post(
+        "/", data={
+            "filetype": "average",
+            "qc_text_file": uploadable_file_object(filename)})
+    # Trigger
+    resp = client.get(uri,follow_redirects=True)
+    ## Check that there was exactly one redirect
+    assert len(resp.history) == 1 and resp.history[0].status_code == 302
+    ## Check that redirect is to home page and is successful
+    assert resp.request.path == "/"
+    assert resp.status_code == 200
+    ## Check that error(s) are displayed
+    for error_msg in error_msgs:
+        assert error_msg in resp.data