4 import simplejson as json
6 from django.test import TestCase
7 from htsworkflow.frontend.experiments import models
8 from htsworkflow.frontend.experiments import experiments
10 class ExperimentsTestCases(TestCase):
11 fixtures = ['test_flowcells.json']
16 def test_flowcell_information(self):
18 Check the code that packs the django objects into simple types.
20 for fc_id in [u'303TUAAXX', u"42JTNAAXX", "42JU1AAXX"]:
21 fc_dict = experiments.flowcell_information(fc_id)
22 fc_django = models.FlowCell.objects.get(flowcell_id=fc_id)
23 self.failUnlessEqual(fc_dict['flowcell_id'], fc_id)
24 self.failUnlessEqual(fc_django.flowcell_id, fc_id)
25 self.failUnlessEqual(fc_dict['sequencer'], fc_django.sequencer.name)
26 self.failUnlessEqual(fc_dict['read_length'], fc_django.read_length)
27 self.failUnlessEqual(fc_dict['notes'], fc_django.notes)
28 self.failUnlessEqual(fc_dict['cluster_station'], fc_django.cluster_station.name)
30 for lane in fc_django.lane_set.all():
31 lane_dict = fc_dict['lane_set'][lane.lane_number]
32 self.failUnlessEqual(lane_dict['cluster_estimate'], lane.cluster_estimate)
33 self.failUnlessEqual(lane_dict['comment'], lane.comment)
34 self.failUnlessEqual(lane_dict['flowcell'], lane.flowcell.flowcell_id)
35 self.failUnlessEqual(lane_dict['lane_number'], lane.lane_number)
36 self.failUnlessEqual(lane_dict['library_name'], lane.library.library_name)
37 self.failUnlessEqual(lane_dict['library_id'], lane.library_id)
38 self.failUnlessAlmostEqual(lane_dict['pM'], float(lane.pM))
40 self.client.login(username='test', password='BJOKL5kAj6aFZ6A5')
41 response = self.client.get('/experiments/config/%s/json' % (fc_id,))
42 # strptime isoformat string = '%Y-%m-%dT%H:%M:%S'
43 fc_json = json.loads(response.content)
44 self.failUnlessEqual(fc_json['flowcell_id'], fc_id)
45 self.failUnlessEqual(fc_json['sequencer'], fc_django.sequencer.name)
46 self.failUnlessEqual(fc_json['read_length'], fc_django.read_length)
47 self.failUnlessEqual(fc_json['notes'], fc_django.notes)
48 self.failUnlessEqual(fc_json['cluster_station'], fc_django.cluster_station.name)
51 for lane in fc_django.lane_set.all():
52 lane_dict = fc_json['lane_set'][unicode(lane.lane_number)]
53 self.failUnlessEqual(lane_dict['cluster_estimate'], lane.cluster_estimate)
54 self.failUnlessEqual(lane_dict['comment'], lane.comment)
55 self.failUnlessEqual(lane_dict['flowcell'], lane.flowcell.flowcell_id)
56 self.failUnlessEqual(lane_dict['lane_number'], lane.lane_number)
57 self.failUnlessEqual(lane_dict['library_name'], lane.library.library_name)
58 self.failUnlessEqual(lane_dict['library_id'], lane.library_id)
59 self.failUnlessAlmostEqual(lane_dict['pM'], float(lane.pM))
61 def test_invalid_flowcell(self):
63 Make sure we get a 404 if we request an invalid flowcell ID
65 self.client.login(username='test', password='BJOKL5kAj6aFZ6A5')
66 response = self.client.get('/experiments/config/nottheone/json')
67 self.failUnlessEqual(response.status_code, 404)
69 def test_not_logged_in(self):
71 Require logging in to retrieve meta data
73 response = self.client.get(u'/experiments/config/303TUAAXX/json')
74 self.failUnlessEqual(response.status_code, 302)