Replace deprecated DOM.setElementAttribute().
[online-glom:gwt-glom.git] / src / test / java / org / glom / web / server / SelfHostExampleTest.java
1 /*
2  * Copyright (C) 2012 Openismus GmbH
3  *
4  * This file is part of GWT-Glom.
5  *
6  * GWT-Glom is free software: you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * GWT-Glom is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
14  * for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with GWT-Glom.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 package org.glom.web.server;
21
22 import static org.junit.Assert.*;
23
24 import java.net.URL;
25 import java.sql.SQLException;
26
27 import org.glom.web.server.libglom.Document;
28 import org.jooq.SQLDialect;
29 import org.junit.AfterClass;
30 import org.junit.Test;
31
32 /**
33  * @author Murray Cumming <murrayc@openismus.com>
34  * 
35  */
36 public class SelfHostExampleTest {
37
38         private static SelfHoster selfHoster = null;
39
40         @Test
41         public void testPostgreSQL() throws SQLException {
42                 doTest(Document.HostingMode.HOSTING_MODE_POSTGRES_SELF);
43         }
44         
45         @Test
46         public void testMySQL() throws SQLException {
47                 doTest(Document.HostingMode.HOSTING_MODE_MYSQL_SELF);
48         }
49         
50         /* This is really a test of our test utility code. */
51         @Test
52         public void testSelfHosterEscapeIDSame() {
53                 final String id = "something";
54                 assertEquals("\"" + id + "\"", SelfHosterMySQL.quoteAndEscapeSqlId(id, SQLDialect.POSTGRES));
55                 assertEquals("`" + id + "`", SelfHosterMySQL.quoteAndEscapeSqlId(id, SQLDialect.MYSQL));
56         }
57
58         /* This is really a test of our test utility code. */
59         @Test
60         public void testSelfHosterEscapeIDNotSame() {
61                 final String id = "something with a \" and a ` char";
62                 assertNotEquals("\"" + id + "\"", SelfHosterMySQL.quoteAndEscapeSqlId(id, SQLDialect.POSTGRES));
63                 assertNotEquals("`" + id + "`", SelfHosterMySQL.quoteAndEscapeSqlId(id, SQLDialect.MYSQL));
64         }
65
66         /**
67          * @param hostingMode 
68          * @throws SQLException
69          */
70         private void doTest(Document.HostingMode hostingMode) throws SQLException {
71                 final URL url = SelfHostExampleTest.class.getResource("example_music_collection.glom");
72                 assertTrue(url != null);
73                 final String strUri = url.toString();
74
75                 final Document document = new Document();
76                 document.setFileURI(strUri);
77                 assertTrue(document.load());
78
79                 if (hostingMode == Document.HostingMode.HOSTING_MODE_POSTGRES_SELF) {
80                         selfHoster = new SelfHosterPostgreSQL(document);
81                 } else if (hostingMode == Document.HostingMode.HOSTING_MODE_MYSQL_SELF) {
82                         selfHoster = new SelfHosterMySQL(document);
83                 } else {
84                         // TODO: std::cerr << G_STRFUNC << ": This test function does not support the specified hosting_mode: " <<
85                         // hosting_mode << std::endl;
86                         assert false;
87                 }
88
89                 final boolean hosted = selfHoster.createAndSelfHostFromExample();
90                 assertTrue(hosted);
91                 
92                 SelfHostTestUtils.testExampleMusiccollectionData(selfHoster, document);
93                 
94                 if (selfHoster != null) {
95                         selfHoster.cleanup();
96                 }
97         }
98
99         @AfterClass
100         public static void tearDown() {
101                 if (selfHoster != null) {
102                         selfHoster.cleanup();
103                 }
104         }
105 }