source: trunk/test/integration/gscf/OntologyTests.groovy @ 1504

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

Partially fixed the integration tests

  • Property svn:keywords set to Rev Author Date
File size: 5.9 KB
Line 
1package gscf
2
3import grails.test.*
4import org.dbnp.bgdt.Ontology
5import org.dbnp.bgdt.Term
6
7/**
8 * OntologyTests Test
9 *
10 * Test ontology/term functionality on domain model level
11 *
12 * @author keesvb
13 * @since 20100510
14 * @package dbnp.studycapturing
15 *
16 * Revision information:
17 * $Rev: 1504 $
18 * $Author: s.h.sikkema@gmail.com $
19 * $Date: 2011-02-08 09:48:41 +0000 (di, 08 feb 2011) $
20 */
21class OntologyTests extends GrailsUnitTestCase {
22
23        final String testOntologyName = "Test ontology"
24        final String testOntologyDescription = "Test description"
25        final String testOntologyUrl = "http://www.test.com"
26        final String testOntologyVersionNumber = "1.0"
27        final int testOntologyNcboId = 0
28        final int testOntologyNcboVersionedId = 0
29        final String testTermName = "Test term"
30        final String testAccession = 'TEST01234$'
31
32        protected void setUp() {
33                super.setUp()
34
35                def ontology = new Ontology(
36                    name: testOntologyName,
37                    description: testOntologyDescription,
38                    url: testOntologyUrl,
39                    versionNumber: testOntologyVersionNumber,
40                    ncboId: testOntologyNcboId,
41                    ncboVersionedId: testOntologyNcboVersionedId
42                );
43
44                // Validate and save ontology
45                assert ontology.validate()
46                assert ontology.save(flush: true)
47        }
48
49        protected void tearDown() {
50                super.tearDown()
51        }
52
53        /**
54         * Test if ontology was properly saved
55         */
56        void testSave() {
57
58                // Try to retrieve the ontology and make sure it's the same
59                def ontologyDB = Ontology.findByName(testOntologyName)
60                assert ontologyDB
61                assert ontologyDB.name.equals(testOntologyName)
62                assert ontologyDB.description.equals(testOntologyDescription)
63                assert ontologyDB.url.equals(testOntologyUrl)
64                assert ontologyDB.versionNumber.equals(testOntologyVersionNumber)
65                assert ontologyDB.ncboId.equals(testOntologyNcboId)
66                assert ontologyDB.ncboVersionedId.equals(testOntologyNcboVersionedId)
67
68        }
69
70        /**
71         * Test saving and retrieving a term within the ontology and test giveTermByName(name) and giveTerms()
72         */
73        void testTermSave() {
74
75                // Find created ontology
76                def testOntology = Ontology.findByName(testOntologyName)
77                assert testOntology
78
79                // Create a new term
80                def term = new Term(
81                    name: testTermName,
82                    accession: testAccession,
83                    ontology: testOntology
84                )
85
86                assert term.validate()
87                assert term.save(flush: true)
88
89                // Try to retrieve the term from the ontology and make sure it's the same
90                def termDB = testOntology.giveTermByName(testTermName)
91                assert termDB.name.equals(testTermName)
92                assert termDB.accession.equals(testAccession)
93                assert termDB.ontology == testOntology
94
95                // Test giveTerms() and make sure the term is in there
96                def terms = testOntology.giveTerms()
97                assert terms
98                assert terms.size() == 1
99                assert terms.asList().first().name.equals(testTermName)
100        }
101
102        /**
103         * Ontocat test for debug purposes: show all properties of a certain ontology
104        * Make this method private in order to run it
105         */
106        private void testOntocatBioPortalDebug() {
107                // Instantiate OLS service
108                uk.ac.ebi.ontocat.OntologyService os = new uk.ac.ebi.ontocat.bioportal.BioportalOntologyService()
109
110                // Find ontology by ncboId
111                uk.ac.ebi.ontocat.Ontology o = os.getOntology("1005")
112                StringBuilder sb = new StringBuilder();
113                // This is of course a very scary way to getting more information on 'o', but it seems to be the only way to reach codingScheme
114                def bean = os.getOntologyBean()
115                String codingScheme = bean.codingScheme
116                sb.append("OntologyBean:\n")
117                sb.append("property codingScheme=" + codingScheme + "\n")
118                sb.append("Bean.properties:\n")
119                bean.properties.each {
120                        sb.append(it.key + "=" + it.value + "\n")
121                }
122                sb.append "Bean:\t" + bean.dump()
123                sb.append("Coding scheme: ")
124                sb.append(bean.properties['codingScheme'])
125                sb.append("\t");
126                sb.append(o.getAbbreviation());
127                sb.append("\t");
128                sb.append(o.getLabel());
129                sb.append("\t");
130                sb.append(o.getOntologyAccession());
131                sb.append("\t");
132                sb.append("Ontology meta properties:\n")
133                o.getVersionNumber() + o.getMetaPropertyValues().each {
134                        sb.append(it.name + "=" + it.value + "\n")
135                }
136                sb.append("Ontology properties:\n");
137                o.getProperties().each {
138                        sb.append(it.key + "=" + it.value + "\n")
139                }
140                sb.append("Ontology root terms:\n");
141                os.getRootTerms(o).each {
142                        sb.append("Term ${os.makeLookupHyperlink(it.properties.get('accession'))} properties:\n")
143                        it.properties.each {
144                                sb.append it.key + "=" + it.value + "\n"
145                        }
146                }
147                System.out.println(sb.toString());
148        }
149
150        /**
151         * Add all OLS ontologies to the database via the Ontocat framework
152         */
153        private void testOntocatOLSOntologies() {
154                // Instantiate EBI OLS service
155                uk.ac.ebi.ontocat.OntologyService os = new uk.ac.ebi.ontocat.ols.OlsOntologyService()
156                addOntologies(os)
157        }
158
159        /**
160         * Add all BioPortal ontologies to the database via the Ontocat framework
161         */
162        private void testOntocatBioPortalOntologies() {
163                // Instantiate BioPortal service
164                uk.ac.ebi.ontocat.OntologyService os = new uk.ac.ebi.ontocat.bioportal.BioportalOntologyService()
165                addOntologies(os)
166        }
167
168        private void addOntologies(uk.ac.ebi.ontocat.OntologyService os) {
169
170                // Iterate over all ontologies in OLS
171                os.getOntologies().each { o ->
172
173                        // Instantiate ontology
174                        def ontology = new Ontology(
175                            name: o.label,
176                            description: o.description,
177                            url: o.properties['homepage'],
178                            //url: 'http://bioportal.bioontology.org/ontologies/' + versionedId,
179                            versionNumber: o.versionNumber,
180                            ncboId: o.ontologyAccession,
181                            ncboVersionedId: o.id
182                        );
183
184                        // Validate and save ontology
185                        assert ontology.validate()
186                        assert ontology.save(flush: true)
187
188                        //println ontology.dump()
189                }
190
191        }
192
193        public void testAddBioPortalOntology() {
194                // Add a new ontology
195                def ontology = Ontology.getBioPortalOntology("1031")
196                // Validate and save ontology
197                if (!ontology.validate()) { ontology.errors.each { println it} }
198                assert ontology.validate()
199                assert ontology.save(flush: true)
200                assert Ontology.findByNcboId(1031).name.equals(ontology.name)
201
202                // Make sure that it is not possible to add an ontology twice
203                def addAgain = Ontology.getBioPortalOntology("1031")
204                assert !addAgain.validate()
205        }
206}
Note: See TracBrowser for help on using the repository browser.