001: /*
002: * Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com> and
003: * JR Boyens <gnu-jrb[remove] at gmx dot net>
004: * Distributed under the terms of either:
005: * - the common development and distribution license (CDDL), v1.0; or
006: * - the GNU Lesser General Public License, v2.1 or later
007: * $Id: TestGenericQueryManagerConstrained.java 3634 2007-01-08 21:42:24Z gbevin $
008: */
009: package com.uwyn.rife.database.querymanagers.generic;
010:
011: import com.uwyn.rife.database.Datasource;
012: import com.uwyn.rife.database.exceptions.DatabaseException;
013: import com.uwyn.rife.database.querymanagers.generic.beans.ConstrainedBean;
014: import com.uwyn.rife.database.querymanagers.generic.beans.LinkBean;
015: import com.uwyn.rife.site.ValidationError;
016: import java.sql.SQLException;
017: import junit.framework.TestCase;
018:
019: public class TestGenericQueryManagerConstrained extends TestCase {
020: private Datasource mDatasource = null;
021:
022: private GenericQueryManager<LinkBean> mLinkManager = null;
023: private GenericQueryManager<ConstrainedBean> mConstrainedManager = null;
024:
025: public TestGenericQueryManagerConstrained(Datasource datasource,
026: String datasourceName, String name) {
027: super (name);
028: mDatasource = datasource;
029: }
030:
031: protected void setUp() throws Exception {
032: mLinkManager = GenericQueryManagerFactory.getInstance(
033: mDatasource, LinkBean.class);
034: mConstrainedManager = GenericQueryManagerFactory.getInstance(
035: mDatasource, ConstrainedBean.class);
036:
037: int poolsize = mDatasource.getPoolsize();
038: // disabling pool for firebird
039: if ("org.firebirdsql.jdbc.FBDriver".equals(mDatasource
040: .getAliasedDriver())) {
041: mDatasource.setPoolsize(0);
042: }
043: try {
044: mLinkManager.install();
045: mConstrainedManager.install();
046: } finally {
047: if ("org.firebirdsql.jdbc.FBDriver".equals(mDatasource
048: .getAliasedDriver())) {
049: mDatasource.setPoolsize(poolsize);
050: }
051: }
052: }
053:
054: protected void tearDown() throws Exception {
055: int poolsize = mDatasource.getPoolsize();
056: // disabling pool for firebird
057: if ("org.firebirdsql.jdbc.FBDriver".equals(mDatasource
058: .getAliasedDriver())) {
059: mDatasource.setPoolsize(0);
060: }
061: try {
062: mConstrainedManager.remove();
063: mLinkManager.remove();
064: } finally {
065: if ("org.firebirdsql.jdbc.FBDriver".equals(mDatasource
066: .getAliasedDriver())) {
067: mDatasource.setPoolsize(poolsize);
068: }
069: }
070: }
071:
072: public void testGetBaseClass() {
073: assertSame(LinkBean.class, mLinkManager.getBaseClass());
074: assertSame(ConstrainedBean.class, mConstrainedManager
075: .getBaseClass());
076: }
077:
078: public void testInstallCustomQuery() {
079: int poolsize = mDatasource.getPoolsize();
080: // disabling pool for firebird
081: if ("org.firebirdsql.jdbc.FBDriver".equals(mDatasource
082: .getAliasedDriver())) {
083: mDatasource.setPoolsize(0);
084: }
085: try {
086: mConstrainedManager.remove();
087: mLinkManager.remove();
088:
089: mLinkManager.install(mLinkManager.getInstallTableQuery());
090: mConstrainedManager.install(mConstrainedManager
091: .getInstallTableQuery());
092: } finally {
093: if ("org.firebirdsql.jdbc.FBDriver".equals(mDatasource
094: .getAliasedDriver())) {
095: mDatasource.setPoolsize(poolsize);
096: }
097: }
098: }
099:
100: public void testSaveRestoreConstrained() {
101: ConstrainedBean bean = new ConstrainedBean();
102: ConstrainedBean newbean = null;
103:
104: bean.setTestString("This is my test string");
105:
106: int id = mConstrainedManager.save(bean);
107:
108: newbean = mConstrainedManager.restore(id);
109:
110: assertTrue(newbean != null);
111: assertTrue(newbean != bean);
112: assertEquals(newbean.getTestString(), bean.getTestString());
113: assertEquals(newbean.getIdentifier(), id);
114:
115: bean.setIdentifier(id);
116: bean.setTestString("This is a new test string");
117:
118: assertEquals(mConstrainedManager.save(bean), id);
119: assertEquals(bean.getIdentifier(), id);
120:
121: newbean = mConstrainedManager.restore(id);
122:
123: assertTrue(newbean != null);
124: assertTrue(newbean != bean);
125:
126: assertEquals(newbean.getTestString(),
127: "This is a new test string");
128:
129: bean.setIdentifier(999999);
130: bean.setTestString("This is another test string");
131:
132: assertFalse(999999 == mConstrainedManager.save(bean));
133: assertEquals(bean.getIdentifier(), id + 1);
134: }
135:
136: public void testValidationContextManyToOne() {
137: LinkBean linkbean1 = new LinkBean();
138: LinkBean linkbean2 = new LinkBean();
139: LinkBean linkbean3 = new LinkBean();
140:
141: linkbean1.setTestString("linkbean 1");
142: linkbean2.setTestString("linkbean 2");
143: linkbean3.setTestString("linkbean 3");
144:
145: mLinkManager.save(linkbean1);
146: mLinkManager.save(linkbean2);
147: mLinkManager.save(linkbean3);
148:
149: ConstrainedBean bean1 = new ConstrainedBean();
150: bean1.setTestString("test_string1");
151: assertTrue(bean1.validate(mConstrainedManager));
152: int id1 = mConstrainedManager.save(bean1);
153:
154: ConstrainedBean bean2 = new ConstrainedBean();
155: bean2.setTestString("test_string2");
156: bean2.setLinkBean(linkbean1.getId());
157: assertTrue(bean2.validate(mConstrainedManager));
158: int id2 = mConstrainedManager.save(bean2);
159: assertTrue(id1 != id2);
160:
161: ConstrainedBean bean3 = new ConstrainedBean();
162: bean3.setTestString("test_string2");
163: bean3.setLinkBean(23);
164: assertFalse(bean3.validate(mConstrainedManager));
165: ValidationError error = (ValidationError) bean3
166: .getValidationErrors().iterator().next();
167: assertEquals(error.getSubject(), "linkBean");
168: assertEquals(error.getIdentifier(),
169: ValidationError.IDENTIFIER_INVALID);
170: if (!"com.mysql.jdbc.Driver".equals(mDatasource
171: .getAliasedDriver())) {
172: try {
173: mConstrainedManager.save(bean3);
174: fail("exception not thrown");
175: } catch (DatabaseException e) {
176: assertTrue(e.getCause() instanceof SQLException);
177: }
178: }
179:
180: bean3.resetValidation();
181: bean3.setLinkBean(linkbean3.getId());
182: assertTrue(bean3.validate(mConstrainedManager));
183: int id3 = mConstrainedManager.save(bean3);
184: assertTrue(id2 != id3);
185: }
186: }
|