From ecd4e76f3c90af4695cfa7292a22021c7937273a Mon Sep 17 00:00:00 2001
From: "Gervaise H. Henry" <gervaise.henry@utsouthwestern.edu>
Date: Tue, 26 Jan 2021 16:36:46 -0600
Subject: [PATCH] Add new py tests for integration and override

---
 .gitlab-ci.yml                    |  9 ++++++-
 CHANGELOG.md                      |  1 +
 workflow/tests/test_completion.py | 42 +++++++++++++++++++++++++++++++
 3 files changed, 51 insertions(+), 1 deletion(-)
 create mode 100644 workflow/tests/test_completion.py

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2b0b70a..9c02255 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -666,6 +666,7 @@ integration_se:
   - ulimit -a
   - nextflow -q run ./workflow/rna-seq.nf --deriva ./test_data/auth/credential.json --bdbag ./test_data/auth/cookies.txt --repRID 16-1ZX4 --source dev --upload true -with-dag dag.png --dev false --ci true -with-report ./SE_report.html
   - find . -type f -name "multiqc_data.json" -exec cp {} ./SE_multiqc_data.json \;
+  - pytest -m completionIntegration_se
   artifacts:
     name: "$CI_JOB_NAME"
     when: always
@@ -690,6 +691,7 @@ integration_pe:
   - ulimit -a
   - nextflow -q run ./workflow/rna-seq.nf --deriva ./test_data/auth/credential.json --bdbag ./test_data/auth/cookies.txt --repRID Q-Y5JA --source dev --upload true -with-dag dag.png --dev false --ci true -with-report ./PE_report.html
   - find . -type f -name "multiqc_data.json" -exec cp {} ./PE_multiqc_data.json \;
+  - pytest -m completionIntegration_pe
   artifacts:
     name: "$CI_JOB_NAME"
     when: always
@@ -791,6 +793,7 @@ override_inputBag:
   - ulimit -a
   - nextflow -q run ./workflow/rna-seq.nf --deriva ./test_data/auth/credential.json --bdbag ./test_data/auth/cookies.txt --repRID Q-Y5F6 --source dev --inputBagForce ./test_data/bag/Q-Y5F6_inputBag_xxxxxxxx.zip --upload false --dev false --ci true -with-report ./inputBagOverride_report.html
   - find . -type f -name "multiqc_data.json" -exec cp {} ./inputBagOverride_PE_multiqc_data.json \;
+  - pytest -m completionOverride_inputBag
   artifacts:
     name: "$CI_JOB_NAME"
     when: always
@@ -813,6 +816,7 @@ override_fastq:
   - ulimit -a
   - nextflow -q run ./workflow/rna-seq.nf --deriva ./test_data/auth/credential.json --bdbag ./test_data/auth/cookies.txt --repRID Q-Y5F6  --source dev --fastqsForce './test_data/fastq/small/Q-Y5F6_1M.R{1,2}.fastq.gz' --upload false --dev false --ci true -with-report ./fastqOverride_report.html
   - find . -type f -name "multiqc_data.json" -exec cp {} ./fastqOverride_PE_multiqc_data.json \;
+  - pytest -m completionOverride_fastq
   artifacts:
     name: "$CI_JOB_NAME"
     when: always
@@ -835,6 +839,7 @@ override_species:
   - ulimit -a
   - nextflow -q run ./workflow/rna-seq.nf --deriva ./test_data/auth/credential.json --bdbag ./test_data/auth/cookies.txt --repRID Q-Y5ER --source dev --speciesForce 'Homo sapiens' --upload false --dev false --ci true -with-report ./speciesOverride_report.html
   - find . -type f -name "multiqc_data.json" -exec cp {} ./speciesOverride_PE_multiqc_data.json \;
+  - pytest -m completionOverride_spike
   artifacts:
     name: "$CI_JOB_NAME"
     when: always
@@ -857,6 +862,7 @@ override_stranded:
   - ulimit -a
   - nextflow -q run ./workflow/rna-seq.nf --deriva ./test_data/auth/credential.json --bdbag ./test_data/auth/cookies.txt --repRID Q-Y5ER --source dev --strandedForce unstranded --upload false --dev false --ci true -with-report ./strandedOverride_report.html
   - find . -type f -name "multiqc_data.json" -exec cp {} ./strandedOverride_PE_multiqc_data.json \;
+  - pytest -m completionOverride_stranded
   artifacts:
     name: "$CI_JOB_NAME"
     when: always
@@ -868,7 +874,7 @@ override_stranded:
     when:
       - always
 
-override_stpike:
+override_spike:
   stage: integration
   only: [merge_requests]
   except:
@@ -879,6 +885,7 @@ override_stpike:
   - ulimit -a
   - nextflow -q run ./workflow/rna-seq.nf --deriva ./test_data/auth/credential.json --bdbag ./test_data/auth/cookies.txt --repRID Q-Y5ER --source dev --spikeForce t --upload false --dev false --ci true -with-report ./spikeOverride_report.html
   - find . -type f -name "multiqc_data.json" -exec cp {} ./spikeOverride_PE_multiqc_data.json \;
+  - pytest -m completionOverride_spike
   artifacts:
     name: "$CI_JOB_NAME"
     when: always
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e45a78d..66553e9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,7 @@
 * Data-hub column title change from "Has_Strand_Specific_Information" to "Strandedness" (#115)
 * Merge data error pre-inference execution run upload/finalize to 1 process
 * Change uploadOutputBag logic to change reuse hatrac file if alread exists (re-uses Output_Bag entry by reassigning Execution_Run RID) (#112)
+* Add new CI py tests for override and integration
 
 *Known Bugs*
 * Override params (inputBag, fastq, species) aren't checked for integrity
diff --git a/workflow/tests/test_completion.py b/workflow/tests/test_completion.py
new file mode 100644
index 0000000..aa04f19
--- /dev/null
+++ b/workflow/tests/test_completion.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+
+import pytest
+import pandas as pd
+from io import StringIO
+import os
+import json
+
+test_output_path = os.path.dirname(os.path.abspath(__file__)) + \
+    '/../../'
+
+
+@pytest.mark.consistencySE
+def test_consistencySE():
+    assert os.path.exists(os.path.join(
+        test_output_path, 'SE_multiqc_data.json'))
+
+    with open(os.path.join(
+        test_output_path, 'SE_multiqc_data.json')) as f:
+        assigned_reads_json = json.load(f)
+    assigned_reads = assigned_reads_json['report_general_stats_data'][4]['16-1ZX4_sorted']['Assigned']
+    baseline = 7746121
+    baseline_hi = baseline+(baseline*0.05)
+    baseline_lo = baseline-(baseline*0.05)
+    assert (assigned_reads >= baseline_lo)
+    assert (assigned_reads <=  baseline_hi)
+
+
+@pytest.mark.consistencyPE
+def test_consistencyPE():
+    assert os.path.exists(os.path.join(
+        test_output_path, 'PE_multiqc_data.json'))
+
+    with open(os.path.join(
+        test_output_path, 'PE_multiqc_data.json')) as f:
+        assigned_reads_json = json.load(f)
+    assigned_reads = assigned_reads_json['report_general_stats_data'][4]['Q-Y5JA_sorted']['Assigned']
+    baseline = 2596053
+    baseline_hi = baseline+(baseline*0.05)
+    baseline_lo = baseline-(baseline*0.05)
+    assert (assigned_reads >= baseline_lo)
+    assert (assigned_reads <=  baseline_hi)
-- 
GitLab