KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > hajdbc > TestForeignKeyConstraint


1 /*
2  * HA-JDBC: High-Availability JDBC
3  * Copyright (c) 2004-2006 Paul Ferraro
4  *
5  * This library is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU Lesser General Public License as published by the
7  * Free Software Foundation; either version 2.1 of the License, or (at your
8  * option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
13  * for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this library; if not, write to the Free Software Foundation,
17  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * Contact: ferraro@users.sourceforge.net
20  */

21 package net.sf.hajdbc;
22
23 import java.sql.Connection JavaDoc;
24 import java.sql.DatabaseMetaData JavaDoc;
25 import java.sql.ResultSet JavaDoc;
26 import java.sql.SQLException JavaDoc;
27 import java.util.Collection JavaDoc;
28 import java.util.Collections JavaDoc;
29 import java.util.Map JavaDoc;
30
31 import org.easymock.EasyMock;
32 import org.easymock.IMocksControl;
33 import org.testng.annotations.AfterMethod;
34 import org.testng.annotations.Test;
35
36 /**
37  * @author Paul Ferraro
38  * @since 1.0
39  */

40 @Test
41 public class TestForeignKeyConstraint
42 {
43     private IMocksControl control = EasyMock.createControl();
44     private Connection JavaDoc connection = this.control.createMock(Connection JavaDoc.class);
45     private DatabaseMetaData JavaDoc metaData = this.control.createMock(DatabaseMetaData JavaDoc.class);
46     private ResultSet JavaDoc resultSet = this.control.createMock(ResultSet JavaDoc.class);
47     
48     @AfterMethod
49     public void reset()
50     {
51         this.control.reset();
52     }
53     
54     /**
55      * Test method for {@link ForeignKeyConstraint#collect(Connection, Map)}
56      */

57     public void testCollect()
58     {
59         try
60         {
61             EasyMock.expect(this.connection.getMetaData()).andReturn(this.metaData);
62             
63             EasyMock.expect(this.metaData.getImportedKeys(null, "fk_schema", "fk_table")).andReturn(this.resultSet);
64             
65             EasyMock.expect(this.resultSet.next()).andReturn(true);
66             
67             EasyMock.expect(this.resultSet.getString("FK_NAME")).andReturn("fk");
68             
69             EasyMock.expect(this.resultSet.getString("FKCOLUMN_NAME")).andReturn("fk_column1");
70             
71             EasyMock.expect(this.resultSet.getString("PKTABLE_SCHEM")).andReturn("pk_schema");
72             
73             EasyMock.expect(this.resultSet.getString("PKTABLE_NAME")).andReturn("pk_table");
74
75             EasyMock.expect(this.resultSet.getString("PKCOLUMN_NAME")).andReturn("pk_column1");
76
77             EasyMock.expect(this.resultSet.next()).andReturn(true);
78             
79             EasyMock.expect(this.resultSet.getString("FK_NAME")).andReturn("fk");
80             
81             EasyMock.expect(this.resultSet.getString("FKCOLUMN_NAME")).andReturn("fk_column2");
82             
83             EasyMock.expect(this.resultSet.getString("PKTABLE_SCHEM")).andReturn("pk_schema");
84             
85             EasyMock.expect(this.resultSet.getString("PKTABLE_NAME")).andReturn("pk_table");
86
87             EasyMock.expect(this.resultSet.getString("PKCOLUMN_NAME")).andReturn("pk_column2");
88
89             EasyMock.expect(this.resultSet.next()).andReturn(false);
90             
91             this.resultSet.close();
92             
93             this.control.replay();
94             
95             Collection JavaDoc<ForeignKeyConstraint> collection = ForeignKeyConstraint.collect(this.connection, Collections.singletonMap("fk_schema", Collections.singletonList("fk_table")));
96             
97             this.control.verify();
98             
99             assert collection != null;
100             assert collection.size() == 1 : collection.size();
101             
102             ForeignKeyConstraint constraint = collection.iterator().next();
103             
104             assert constraint.getName().equals("fk") : constraint.getName();
105             assert constraint.getSchema().equals("fk_schema") : constraint.getSchema();
106             assert constraint.getTable().equals("fk_table") : constraint.getTable();
107             assert constraint.getColumnList().size() == 2 : constraint.getColumnList().size();
108             assert constraint.getColumnList().get(0).equals("fk_column1") : constraint.getColumnList().get(0);
109             assert constraint.getColumnList().get(1).equals("fk_column2") : constraint.getColumnList().get(1);
110             assert constraint.getForeignSchema().equals("pk_schema") : constraint.getForeignSchema();
111             assert constraint.getForeignTable().equals("pk_table") : constraint.getForeignTable();
112             assert constraint.getForeignColumnList().size() == 2 : constraint.getForeignColumnList().size();
113             assert constraint.getForeignColumnList().get(0).equals("pk_column1") : constraint.getForeignColumnList().get(0);
114             assert constraint.getForeignColumnList().get(1).equals("pk_column2") : constraint.getForeignColumnList().get(1);
115         }
116         catch (SQLException e)
117         {
118             assert false : e;
119         }
120     }
121     
122     /**
123      * Test method for {@link ForeignKeyConstraint#collect(Connection, Map)}
124      */

125     public void testCollectNoSchema()
126     {
127         try
128         {
129             EasyMock.expect(this.connection.getMetaData()).andReturn(this.metaData);
130             
131             EasyMock.expect(this.metaData.getImportedKeys(null, null, "fk_table")).andReturn(this.resultSet);
132             
133             EasyMock.expect(this.resultSet.next()).andReturn(true);
134             
135             EasyMock.expect(this.resultSet.getString("FK_NAME")).andReturn("fk");
136             
137             EasyMock.expect(this.resultSet.getString("FKCOLUMN_NAME")).andReturn("fk_column1");
138             
139             EasyMock.expect(this.resultSet.getString("PKTABLE_SCHEM")).andReturn(null);
140             
141             EasyMock.expect(this.resultSet.getString("PKTABLE_NAME")).andReturn("pk_table");
142
143             EasyMock.expect(this.resultSet.getString("PKCOLUMN_NAME")).andReturn("pk_column1");
144
145             EasyMock.expect(this.resultSet.next()).andReturn(true);
146             
147             EasyMock.expect(this.resultSet.getString("FK_NAME")).andReturn("fk");
148             
149             EasyMock.expect(this.resultSet.getString("FKCOLUMN_NAME")).andReturn("fk_column2");
150             
151             EasyMock.expect(this.resultSet.getString("PKTABLE_SCHEM")).andReturn(null);
152             
153             EasyMock.expect(this.resultSet.getString("PKTABLE_NAME")).andReturn("pk_table");
154
155             EasyMock.expect(this.resultSet.getString("PKCOLUMN_NAME")).andReturn("pk_column2");
156
157             EasyMock.expect(this.resultSet.next()).andReturn(false);
158             
159             this.resultSet.close();
160             
161             this.control.replay();
162             
163             Collection JavaDoc<ForeignKeyConstraint> collection = ForeignKeyConstraint.collect(this.connection, Collections.singletonMap((String JavaDoc) null, Collections.singletonList("fk_table")));
164             
165             this.control.verify();
166             
167             assert collection != null;
168             assert collection.size() == 1 : collection.size();
169             
170             ForeignKeyConstraint constraint = collection.iterator().next();
171             
172             assert constraint.getName().equals("fk") : constraint.getName();
173             assert constraint.getSchema() == null : constraint.getSchema();
174             assert constraint.getTable().equals("fk_table") : constraint.getTable();
175             assert constraint.getColumnList().size() == 2 : constraint.getColumnList().size();
176             assert constraint.getColumnList().get(0).equals("fk_column1") : constraint.getColumnList().get(0);
177             assert constraint.getColumnList().get(1).equals("fk_column2") : constraint.getColumnList().get(1);
178             assert constraint.getForeignSchema() == null : constraint.getForeignSchema();
179             assert constraint.getForeignTable().equals("pk_table") : constraint.getForeignTable();
180             assert constraint.getForeignColumnList().size() == 2 : constraint.getForeignColumnList().size();
181             assert constraint.getForeignColumnList().get(0).equals("pk_column1") : constraint.getForeignColumnList().get(0);
182             assert constraint.getForeignColumnList().get(1).equals("pk_column2") : constraint.getForeignColumnList().get(1);
183         }
184         catch (SQLException e)
185         {
186             assert false : e;
187         }
188     }
189
190     /**
191      * Test method for {@link Constraint#hashCode()}
192      */

193     public void testHashCode()
194     {
195         ForeignKeyConstraint key = new ForeignKeyConstraint("test", null, null);
196         
197         assert "test".hashCode() == key.hashCode();
198     }
199
200     /**
201      * Test method for {@link Constraint#equals(Object)}
202      */

203     public void testEqualsObject()
204     {
205         ForeignKeyConstraint key1 = new ForeignKeyConstraint("test", "", "");
206         ForeignKeyConstraint key2 = new ForeignKeyConstraint("test", null, null);
207         ForeignKeyConstraint key3 = new ForeignKeyConstraint("testing", null, null);
208         
209         assert key1.equals(key2);
210         assert !key1.equals(key3);
211         assert !key2.equals(key3);
212     }
213 }
214
Popular Tags