source: trunk/test/unit/dbnp/studycapturing/AssayControllerTests.groovy @ 1261

Last change on this file since 1261 was 1261, checked in by s.h.sikkema@…, 13 years ago

Changed jumbar layout to simple iframe for modules

  • Property svn:keywords set to Author Date Rev
File size: 4.8 KB
Line 
1package dbnp.studycapturing
2
3import grails.test.*
4
5import dbnp.data.Term
6
7/**
8 * AssayControllerTests Test
9 *
10 * Description of my test
11 *
12 * @author  your email (+name?)
13 * @since       2010mmdd
14 * @package     ???
15 *
16 * Revision information:
17 * $Rev: 1261 $
18 * $Author: s.h.sikkema@gmail.com $
19 * $Date: 2010-12-13 10:50:28 +0000 (ma, 13 dec 2010) $
20 */
21class AssayControllerTests extends ControllerUnitTestCase {
22    protected void setUp() {
23        super.setUp()
24
25        mockDomain(Term,          [ new Term(id: 1, name: 'Human')])
26
27        mockDomain(TemplateField, [ new TemplateField(id: 1, name: 'tf1', type: TemplateFieldType.STRING),
28                                    new TemplateField(id: 2, name: 'tf2', type: TemplateFieldType.STRING),
29                                    new TemplateField(id: 3, name: 'tf3', type: TemplateFieldType.STRING)])
30
31        mockDomain(Template,      [ new Template(id: 1, fields: [TemplateField.get(1), TemplateField.get(2)]),
32                                    new Template(id: 2, fields: [TemplateField.get(3)])])
33
34        mockDomain(Subject,       [ new Subject(id: 1, name:'subject1', template: Template.get(1), species: Term.get(1)),
35                                    new Subject(id: 2, name:'subject2', template: Template.get(2), species: Term.get(1))])
36
37        mockDomain(SamplingEvent, [ new SamplingEvent(id:1, startTime: 2, duration: 5, sampleTemplate: new Template())])
38
39        mockDomain(Event,         [ new Event(id: 1, startTime: 6, endTime: 7)])//, new Event(id: 2, startTime: 8, endTime: 9)])
40
41        mockDomain(EventGroup,    [ new EventGroup(id:1, events: [Event.get(1)]) ])
42
43        mockDomain(Sample,        [ new Sample(id: 1, name:'sample1', parentSubject: Subject.get(1), parentEvent: SamplingEvent.get(1), parentEventGroup: EventGroup.get(1)),
44                                    new Sample(id: 2, name:'sample2', parentSubject: Subject.get(2), parentEvent: SamplingEvent.get(1))])
45
46        mockDomain(Assay,         [ new Assay(id: 1, samples:[Sample.get(1),Sample.get(2)]),
47                                    new Assay(id: 2, samples:[])])
48
49        Subject.get(1).setFieldValue('tf1', 'tfv1')
50        Subject.get(1).setFieldValue('tf2', 'tfv2')
51        Subject.get(2).setFieldValue('tf3', 'tfv3')
52    }
53
54    protected void tearDown() {
55        super.tearDown()
56    }
57
58    void testWrongAssayID() {
59        mockParams.id = 3
60
61        controller.exportAssayAsExcel()
62
63        assertEquals 'Redirected action should match', [action: 'selectAssay'], redirectArgs
64        assertEquals 'Error message', 'No assay found with id: 3.', mockFlash.errorMessage
65    }
66
67    void testExceptionHandling() {
68        mockParams.id = 1
69
70        controller.assayService = [exportAssayDataAsExcelFile:{throw new Exception('msg')}]
71        controller.exportAssayAsExcel()
72
73        assertEquals 'Redirected action should match', [action: 'selectAssay'], redirectArgs
74        assertEquals 'Error message', 'msg', mockFlash.errorMessage
75    }
76
77    void testEmptySampleList() {
78        mockParams.id = 2
79
80        def passedAssayData = []
81
82        controller.assayService = [exportAssayDataAsExcelFile:{a -> passedAssayData = a}]
83        controller.exportAssayAsExcel()
84
85        assertEquals 'Assay data', [], passedAssayData*.value.flatten()
86    }
87
88    void testTemplateFieldsAreCollected() {
89
90        mockParams.id = 1
91
92        Map passedAssayData
93
94        controller.assayService = [exportAssayDataAsExcelFile:{a -> passedAssayData = a}]
95        controller.exportAssayAsExcel()
96
97        def sample1index = passedAssayData.'Sample Data'.'name'.findIndexOf{it == 'sample1'}
98        def sample2index = passedAssayData.'Sample Data'.'name'.findIndexOf{it == 'sample2'}
99
100        assertEquals 'Subject template field', ['tfv1',''], passedAssayData.'Subject Data'.tf1[sample1index, sample2index]
101        assertEquals 'Subject template field', ['tfv2',''], passedAssayData.'Subject Data'.tf2[sample1index, sample2index]
102        assertEquals 'Subject template field', ['','tfv3'], passedAssayData.'Subject Data'.tf3[sample1index, sample2index]
103        assertEquals 'Subject species template field', ['Human', 'Human'], passedAssayData.'Subject Data'.species*.toString()
104        assertEquals 'Subject name template field', ['subject1','subject2'], passedAssayData.'Subject Data'.name[sample1index, sample2index]
105
106        assertEquals 'Sampling event template fields', [2], passedAssayData.'Sampling Event Data'.startTime
107        assertEquals 'Sampling event template fields', [5], passedAssayData.'Sampling Event Data'.duration
108        assertEquals 'Sampling event template fields', '[null]', passedAssayData.'Sampling Event Data'.sampleTemplate.toString()
109        assertEquals 'Event template fields', [6], passedAssayData.'Event Data'.startTime
110        assertEquals 'Event template fields', [7], passedAssayData.'Event Data'.endTime
111        assertEquals 'Sample template fields', ['sample1', 'sample2'], passedAssayData.'Sample Data'.name[sample1index, sample2index]
112    }
113}
Note: See TracBrowser for help on using the repository browser.