root/trunk/test/integration/dbnp/query/SampleSearchTests.groovy @ 1456

Revision 1456, 7.3 KB (checked in by business@…, 3 years ago)

moved gdt package to org.dbnp, moved tests for RelTime?, TemplateEntity?, Template etc. to gdt plugin

  • Property svn:keywords set to Rev Author Date
Line 
1package dbnp.query
2
3import dbnp.studycapturing.*
4
5/**
6 * SearchTests Test
7 *
8 * Description of my test
9 *
10 * @author  your email (+name?)
11 * @since       2010mmdd
12 * @package     ???
13 *
14 * Revision information:
15 * $Rev$
16 * $Author$
17 * $Date$
18 */
19class SampleSearchTests extends GroovyTestCase {
20
21    protected void setUp() {
22        super.setUp()
23//
24//              def owner = SecUser.findByUsername( "user" );
25//             
26//              // Look up the used ontologies which should be in the database by now
27//              def speciesOntology                             = Ontology.getOrCreateOntologyByNcboId(1132)
28//
29//              // Look up the used templates which should also be in the database by now
30//              def studyTemplate                               = Template.findByName("Academic study")
31//              def mouseTemplate                               = Template.findByName("Mouse")
32//              def dietTreatmentTemplate               = Template.findByName("Diet treatment")
33//              def liverSamplingEventTemplate  = Template.findByName("Liver extraction")
34//              def humanTissueSampleTemplate   = Template.findByName("Human tissue sample")
35//              def ccAssayTemplate                             = Template.findByName("Clinical chemistry assay")
36//
37//              // Add terms manually, to avoid having to do many HTTP requests to the BioPortal website
38//              def mouseTerm = Term.findByName( "Mus musculus" );
39//
40//              // Add example mouse study
41//              def testStudy = new Study(
42//                      template        : studyTemplate,
43//                      title           : "TestStudy 1",
44//                      description     : "C57Bl/6 mice were fed a high fat (45 en%) or low fat (10 en%) diet after a four week run-in on low fat diet.",
45//                      code            : "TESTPPS3_leptin_module",
46//                      researchQuestion: "Leptin etc.",
47//                      ecCode          : "2007117.c",
48//                      startDate       : Date.parse('yyyy-MM-dd', '2008-01-02'),
49//                      owner           : owner
50//              ).with { if (!validate()) { errors.each { println it} } else save()}
51//
52//             
53//              def evLF = new Event(
54//                      startTime       : 3600,
55//                      endTime         : 3600 + 7 * 24 * 3600,
56//                      template        : dietTreatmentTemplate
57//              ).setFieldValue('Diet', 'low fat')
58//
59//              def evS = new SamplingEvent(
60//                      startTime       : 3600,
61//                      template        : liverSamplingEventTemplate,
62//                      sampleTemplate: humanTissueSampleTemplate).setFieldValue('Sample weight', 5F)
63//
64//              // Add events to study
65//              testStudy.addToEvents(evLF).addToSamplingEvents(evS).with { if (!validate()) { errors.each { println it} } else save()}
66//
67//              // Extra check if the SamplingEvents are saved correctly
68//              evS.with { if (!validate()) { errors.each { println it} } else save()}
69//              evLF.with { if (!validate()) { errors.each { println it} } else save()}
70//
71//             
72//              def LFBV1 = new EventGroup(name: "10% fat + vehicle for 1 week").addToEvents(evLF).addToSamplingEvents(evS)
73//
74//              // Add subjects and samples and compose EventGroups
75//              def x = 1
76//              5.times {
77//                      def currentSubject = new Subject(
78//                              name: "TestA" + x++,
79//                              species: mouseTerm,
80//                              template: mouseTemplate,
81//                      ).setFieldValue("Gender", "Male")
82//
83//                      // We have to save the subject first, otherwise the parentEvent property of the sample cannot be set
84//                      // (this is possibly a Grails or Hibernate bug)
85//                      testStudy.addToSubjects(currentSubject)
86//                      currentSubject.with { if (!validate()) { errors.each { println it} } else save()}
87//
88//                      // Add subject to appropriate EventGroup
89//                      LFBV1.addToSubjects(currentSubject).with { if (!validate()) { errors.each { println it} } else save()}
90//
91//                      // Create sample
92//                      def currentSample = new Sample(
93//                              name: currentSubject.name + '_B',
94//                              material: mouseTerm,
95//                              template: humanTissueSampleTemplate,
96//                              parentSubject: currentSubject,
97//                              parentEvent: evS
98//                      );
99//                      testStudy.addToSamples(currentSample)
100//                      currentSample.setFieldValue("Text on vial", "T" + (Math.random() * 100L))
101//                      currentSample.with { if (!validate()) { errors.each { println it} } else save()}
102//              }
103//
104//              // Add EventGroups to study
105//              testStudy.addToEventGroups(LFBV1)
106//              LFBV1.with { if (!validate()) { errors.each { println it} } else save()}
107//              testStudy.with { if (!validate()) { errors.each { println it} } else save(flush:true)}
108//
109//              testStudy.save(flush:true)
110//
111//              //assert Sample.list()*.name.contains( "TestA2_B" );
112//             
113//              // Make sure session is kept open
114//              Session session = SessionFactoryUtils.getSession(sessionFactory, true)
115//              session.flush();
116//              session.clear();
117
118    }
119
120    protected void tearDown() {
121        super.tearDown()
122    }
123
124        void testExecute() {
125
126                List criteria = [
127                        new Criterion( entity: "Sample", field: "name", operator: Operator.contains, value: "B" ),
128                        new Criterion( entity: "Study", field: "code", operator: Operator.equals, value: "PPS3_leptin_module" ),
129                        new Criterion( entity: "Study", field: "code", operator: Operator.equals, value: "PPSH" )
130                ]
131               
132                def search = new SampleSearch();
133
134                search.setCriteria( [ criteria[0] ] );
135                search.execute();
136                assert search.getResults().size() >= 2
137               
138                assert search.getResults()[0] instanceof Sample
139                assert search.getResults()*.name.contains( "A2_B" );
140                assert search.getResults()*.name.contains( "A4_B" );
141               
142                search.setCriteria( [ criteria[0], criteria[1] ] );
143                search.execute();
144                assert search.getResults().size() >= 1
145                assert search.getResults()*.name.contains( "A2_B" );
146               
147                search.setCriteria( [ criteria[0], criteria[2] ] );
148                search.execute();
149                assert search.getResults().size() >= 1
150               
151                // Conflicting criteria shouldn't return any samples
152                search.setCriteria( [ criteria[2], criteria[1] ] );
153                search.execute();
154                assert search.getResults().size() == 0
155        }
156       
157        void testExecuteDifferentCriteria() {
158                List criteria = [
159                        new Criterion( entity: "Study", field: "title", operator: Operator.contains, value: "NuGO PPS3 mouse study" ),
160                        new Criterion( entity: "Subject", field: "species", operator: Operator.equals, value: "Mus musculus" ),
161                        new Criterion( entity: "Sample", field: "name", operator: Operator.contains, value: "A" ),
162                        new Criterion( entity: "Assay", field: "name", operator: Operator.contains, value: "Lipid" ),
163                        //new Criterion( entity: "Event", field: "startTime", operator: Operator.equals, value: "3600" ),
164                        //new Criterion( entity: "SamplingEvent", field: "startTime", operator: Operator.equals, value: 3600 + 7 * 24 * 3600 ),
165                ]
166               
167                def search = new SampleSearch();
168
169                // All criteria should result in 1 sample with code 'abc'
170                criteria.each {
171                        println "Criterion " + it
172                        search.setCriteria( [ it ] );
173                        search.execute();
174                       
175                        def results = search.getResults();
176                        assert results;
177                        assert results.size() >= 2
178                        assert results[0] instanceof Sample;
179                        assert results*.name.contains( "A2_B" );
180                }
181        }
182
183        void testExecuteNonExistingCriteria() {
184                List criteria = [
185                        new Criterion( entity: "Study", field: "title", operator: Operator.contains, value: "This shouldn't exist" ),
186                        new Criterion( entity: "Subject", field: "name", operator: Operator.contains, value: "This shouldn't exist" ),
187                        new Criterion( entity: "Sample", field: "name", operator: Operator.contains, value: "This shouldn't exist" ),
188                        new Criterion( entity: "Assay", field: "name", operator: Operator.contains, value: "This shouldn't exist" ),
189                        new Criterion( entity: "Event", field: "startTime", operator: Operator.equals, value: "481920" ),
190                        new Criterion( entity: "SamplingEvent", field: "startTime", operator: Operator.equals, value: "0192039" ),
191                ]
192               
193                def search = new SampleSearch();
194
195                // All criteria should result in 1 study with code 'abc'
196                criteria.each {
197                        println "Criterion " + it
198                        search.setCriteria( [ it ] );
199                        search.execute();
200                        assert search.getResults().size() == 0
201                }
202        }
203
204}
Note: See TracBrowser for help on using the browser.