1 | package dbnp.studycapturing |
---|
2 | |
---|
3 | import grails.test.* |
---|
4 | |
---|
5 | import 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 | */ |
---|
21 | class 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 | } |
---|