import json
except ImportError, e:
import simplejson as json
+from datetime import timedelta
import os
import shutil
import sys
from django.core import mail
from django.core.exceptions import ObjectDoesNotExist
from django.test import TestCase
+from django.test.utils import setup_test_environment, teardown_test_environment
+from django.db import connection
+from django.conf import settings
from htsworkflow.frontend.experiments import models
from htsworkflow.frontend.experiments import experiments
from htsworkflow.frontend.auth import apidata
NSMAP = {'libns':'http://jumpgate.caltech.edu/wiki/LibraryOntology#'}
+from django.db import connection
+
class ClusterStationTestCases(TestCase):
- fixtures = ['test_flowcells.json']
+ fixtures = ['initial_data.json',
+ 'test_flowcells.json']
def test_default(self):
c = models.ClusterStation.default()
class SequencerTestCases(TestCase):
- fixtures = ['test_flowcells.json']
+ fixtures = ['initial_data.json',
+ 'test_flowcells.json']
def test_default(self):
# starting with no default
class ExperimentsTestCases(TestCase):
- fixtures = ['test_flowcells.json',
+ fixtures = ['initial_data.json',
+ 'test_flowcells.json',
]
def setUp(self):
tree = fromstring(response.content)
flowcell_spans = tree.xpath('//span[@property="libns:flowcell_id"]',
namespaces=NSMAP)
- self.assertEqual(flowcell_spans[0].text, '30012AAXX (failed)')
- failed_fc_span = flowcell_spans[0]
+ self.assertEqual(flowcell_spans[1].text, '30012AAXX (failed)')
+ failed_fc_span = flowcell_spans[1]
failed_fc_a = failed_fc_span.getparent()
# make sure some of our RDF made it.
self.assertEqual(failed_fc_a.get('typeof'), 'libns:IlluminaFlowcell')
self.assertTrue(library_id in expected[lane_id])
self.assertEqual(count, 10)
+ def test_flowcell_estimates(self):
+ classic_flowcell = models.FlowCell.objects.get(pk=153)
+ classic_mid = experiments.estimateFlowcellDuration(classic_flowcell)
+
+ self.assertEqual(classic_mid, timedelta(4, 44000))
+
+ rapid_flowcell = models.FlowCell.objects.get(pk=300)
+ rapid_mid = experiments.estimateFlowcellDuration(rapid_flowcell)
+ self.assertEqual(rapid_mid, timedelta(seconds=60800))
+
+ def test_round_to_days(self):
+ data = [
+ [timedelta(2, 12345), (timedelta(days=2), timedelta(days=3))],
+ [timedelta(0, 345), (timedelta(days=0), timedelta(days=1))],
+ ]
+
+ for estimate, expected in data:
+ rounded = experiments.roundToDays(estimate)
+ self.assertEqual(rounded, expected)
class TestFileType(TestCase):
+ fixtures = ['initial_data.json',
+ 'test_flowcells.json',
+ ]
+
def test_file_type_unicode(self):
file_type_objects = models.FileType.objects
name = 'QSEQ tarfile'
file_type_object = file_type_objects.get(name=name)
- self.assertEqual(u"<FileType: QSEQ tarfile>",
+ self.assertEqual(u"QSEQ tarfile",
unicode(file_type_object))
-class TestFileType(TestCase):
def test_find_file_type(self):
file_type_objects = models.FileType.objects
cases = [('woldlab_090921_HWUSI-EAS627_0009_42FC3AAXX_l7_r1.tar.bz2',
self.assertEqual(result.get('end', None), end)
class TestEmailNotify(TestCase):
- fixtures = ['test_flowcells.json']
+ fixtures = ['initial_data.json',
+ 'test_flowcells.json']
def test_started_email_not_logged_in(self):
response = self.client.get('/experiments/started/153/')
return dict( ((x['library_id'],x) for x in lane) )
class TestSequencer(TestCase):
- fixtures = ['test_flowcells.json',
+ fixtures = ['initial_data.json',
+ 'test_flowcells.json',
]
def test_name_generation(self):
load_string_into_model(model, 'rdfa', response.content)
errmsgs = list(inference.run_validation())
- self.assertEqual(len(errmsgs), 2)
- for errmsg in errmsgs:
- self.assertEqual(errmsg, 'Missing type for: http://localhost/')
+ self.assertEqual(len(errmsgs), 0)
def test_lane_with_rdf_validation(self):
from htsworkflow.util.rdfhelp import add_default_schemas, \
load_string_into_model(model, 'rdfa', response.content)
errmsgs = list(inference.run_validation())
- self.assertEqual(len(errmsgs), 2)
- for errmsg in errmsgs:
- self.assertEqual(errmsg, 'Missing type for: http://localhost/')
+ self.assertEqual(len(errmsgs), 0)
+
+def suite():
+ from unittest import TestSuite, defaultTestLoader
+ suite = TestSuite()
+ for testcase in [ClusterStationTestCases,
+ SequencerTestCases,
+ ExerimentsTestCases,
+ TestFileType,
+ TestEmailNotify,
+ TestSequencer]:
+ suite.addTests(defaultTestLoader.loadTestsFromTestCase(testcase))
+ return suite
+
+if __name__ == "__main__":
+ from unittest import main
+ main(defaultTest="suite")