Clover Coverage Report - Liquibase Integration Tests 2.0.3-SNAPSHOT
Coverage timestamp: Wed Dec 31 1969 19:00:00 EST
54   168   7   9
2   100   0.13   6
6     1.17  
1    
 
  AddUniqueConstraintExecutorTest       Line # 17 54 0% 7 62 0% 0.0
 
No Tests
 
1    package liquibase.statementexecute;
2   
3    import liquibase.database.*;
4    import liquibase.database.core.*;
5    import liquibase.database.typeconversion.TypeConverterFactory;
6    import liquibase.test.DatabaseTestContext;
7    import liquibase.statement.SqlStatement;
8    import liquibase.statement.core.CreateTableStatement;
9    import liquibase.statement.NotNullConstraint;
10    import liquibase.statement.core.AddUniqueConstraintStatement;
11   
12    import java.util.List;
13    import java.util.ArrayList;
14   
15    import org.junit.Test;
16   
 
17    public class AddUniqueConstraintExecutorTest extends AbstractExecuteTest {
18   
19    protected static final String TABLE_NAME = "AddUQTest";
20    protected static final String COLUMN_NAME = "colToMakeUQ";
21    protected static final String CONSTRAINT_NAME = "UQ_TEST";
22    protected static final String TABLESPACE_NAME = "LB_TABLESPACE";
23   
 
24  0 toggle @Override
25    protected List<? extends SqlStatement> setupStatements(Database database) {
26  0 List<CreateTableStatement> statements = new ArrayList<CreateTableStatement>();
27  0 CreateTableStatement table = new CreateTableStatement(null, TABLE_NAME);
28  0 table
29    .addColumn("id", TypeConverterFactory.getInstance().findTypeConverter(database).getDataType("int", false), null, new NotNullConstraint())
30    .addColumn(COLUMN_NAME, TypeConverterFactory.getInstance().findTypeConverter(database).getDataType("int", false), null, new NotNullConstraint());
31  0 statements.add(table);
32   
33  0 if (database.supportsSchemas()) {
34  0 table = new CreateTableStatement(DatabaseTestContext.ALT_SCHEMA, TABLE_NAME);
35  0 table
36    .addColumn("id", TypeConverterFactory.getInstance().findTypeConverter(database).getDataType("int", false), null, new NotNullConstraint())
37    .addColumn(COLUMN_NAME, TypeConverterFactory.getInstance().findTypeConverter(database).getDataType("int", false), null, new NotNullConstraint());
38  0 statements.add(table);
39    }
40  0 return statements;
41    }
42   
43    // @Test
44    // public void execute_noSchema() throws Exception {
45    // new DatabaseTestTemplate().testOnAvailableDatabases(
46    // new SqlStatementDatabaseTest(null, new AddUniqueConstraintStatement(null, TABLE_NAME, COLUMN_NAME, "uq_adduqtest")) {
47    //
48    // protected void preExecuteAssert(DatabaseSnapshotGenerator snapshot) {
49    // assertFalse(snapshot.getTable(TABLE_NAME).getColumn(COLUMN_NAME).isUnique());
50    // }
51    //
52    // protected void postExecuteAssert(DatabaseSnapshotGenerator snapshot) {
53    // //todo: enable snapshot and assertion when snapshot can check for unique constraints
54    // //snapshot = new DatabaseSnapshotGenerator(snapshot);
55    // assertTrue(snapshot.getTable(TABLE_NAME).getColumn(COLUMN_NAME).isUnique());
56    // }
57    // });
58    // }
59    //
60    // @Test
61    // public void execute_withSchema() throws Exception {
62    // new DatabaseTestTemplate().testOnAvailableDatabases(
63    // new SqlStatementDatabaseTest(TestContext.ALT_SCHEMA, new AddUniqueConstraintStatement(TestContext.ALT_SCHEMA, TABLE_NAME, COLUMN_NAME, "uq_adduqtest")) {
64    // protected void preExecuteAssert(DatabaseSnapshotGenerator snapshot) {
65    // assertFalse(snapshot.getTable(TABLE_NAME).getColumn(COLUMN_NAME).isUnique());
66    // }
67    //
68    // protected void postExecuteAssert(DatabaseSnapshotGenerator snapshot) {
69    // //todo: enable snapshot and assertion when snapshot can check for unique constraints
70    // snapshot = new DatabaseSnapshotGenerator(database, TestContext.ALT_SCHEMA);
71    // assertTrue(snapshot.getTable(TABLE_NAME).getColumn(COLUMN_NAME).isUnique());
72    // }
73    //
74    // });
75    // }
76    //
77    // @Test
78    // public void execute_withTablespace() throws Exception {
79    // new DatabaseTestTemplate().testOnAvailableDatabases(
80    // new SqlStatementDatabaseTest(null, new AddUniqueConstraintStatement(null, TABLE_NAME, COLUMN_NAME, "uq_adduqtest").setTablespace(TestContext.ALT_TABLESPACE)) {
81    // protected void preExecuteAssert(DatabaseSnapshotGenerator snapshot) {
82    // assertFalse(snapshot.getTable(TABLE_NAME).getColumn(COLUMN_NAME).isUnique());
83    // }
84    //
85    // protected void postExecuteAssert(DatabaseSnapshotGenerator snapshot) {
86    // //todo: enable snapshot and assertion when snapshot can check for unique constraints
87    // // snapshot = new DatabaseSnapshotGenerator(database);
88    //// assertTrue(snapshot.getTable(TABLE_NAME).getColumn(COLUMN_NAME).isUnique());
89    // }
90    // });
91    // }
92   
 
93  0 toggle @SuppressWarnings("unchecked")
94    @Test
95    public void execute_noSchema() throws Exception {
96  0 this.statementUnderTest = new AddUniqueConstraintStatement(null, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME);
97  0 assertCorrect("alter table [adduqtest] add constraint [uq_test] unique ([coltomakeuq])", SybaseDatabase.class);
98  0 assertCorrect("alter table [dbo].[adduqtest] add constraint [uq_test] unique ([coltomakeuq])", MSSQLDatabase.class);
99  0 assertCorrect("alter table [adduqtest] add constraint [uq_test] unique ([coltomakeuq])", SybaseASADatabase.class);
100  0 assertCorrect("alter table `adduqtest` add constraint `uq_test` unique (`coltomakeuq`)", MySQLDatabase.class);
101  0 assertCorrect("alter table adduqtest add constraint unique (coltomakeuq) constraint uq_test", InformixDatabase.class);
102  0 assertCorrect("alter table adduqtest add constraint uq_test unique (coltomakeuq)", OracleDatabase.class);
103  0 assertCorrect("alter table \"adduqtest\" add constraint uq_test unique (\"coltomakeuq\")", PostgresDatabase.class);
104  0 assertCorrect("alter table adduqtest add constraint uq_test unique (coltomakeuq)", DerbyDatabase.class);
105  0 assertCorrect("alter table [adduqtest] add constraint [uq_test] unique ([coltomakeuq])");
106    }
107   
 
108  0 toggle @SuppressWarnings("unchecked")
109    @Test
110    public void execute_noConstraintName() throws Exception {
111  0 this.statementUnderTest = new AddUniqueConstraintStatement(null, TABLE_NAME, COLUMN_NAME, null);
112  0 assertCorrect("alter table `adduqtest` add unique (`coltomakeuq`)", MySQLDatabase.class);
113  0 assertCorrect("alter table adduqtest add constraint unique (coltomakeuq)", InformixDatabase.class);
114  0 assertCorrect("alter table adduqtest add unique (coltomakeuq)", OracleDatabase.class);
115  0 assertCorrect("alter table \"adduqtest\" add unique (\"coltomakeuq\")", PostgresDatabase.class);
116  0 assertCorrect("alter table adduqtest add unique (coltomakeuq)", DerbyDatabase.class);
117  0 assertCorrect("alter table [adduqtest] add unique ([coltomakeuq])", SybaseASADatabase.class, SybaseDatabase.class);
118  0 assertCorrect("alter table [dbo].[adduqtest] add unique ([coltomakeuq])", MSSQLDatabase.class);
119   
120  0 assertCorrect("alter table [adduqtest] add unique ([coltomakeuq])");
121    }
122   
 
123  0 toggle @SuppressWarnings("unchecked")
124    @Test
125    public void execute_withSchema() throws Exception {
126  0 statementUnderTest = new AddUniqueConstraintStatement(DatabaseTestContext.ALT_SCHEMA, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME);
127   
128    // FIXME Syntax for mysql is correct, but exception "Table 'liquibaseb.adduqtest' doesn't exist" is thrown
129    // assertCorrect("alter table `liquibaseb`.`adduqtest` add constraint `uq_test` unique (`coltomakeuq`)", MySQLDatabase.class);
130  0 assertCorrect("alter table liquibaseb.adduqtest add constraint unique (coltomakeuq) constraint uq_test", InformixDatabase.class);
131  0 assertCorrect("alter table liquibaseb.adduqtest add constraint uq_test unique (coltomakeuq)", OracleDatabase.class);
132  0 assertCorrect("alter table liquibaseb.\"adduqtest\" add constraint uq_test unique (\"coltomakeuq\")", PostgresDatabase.class);
133  0 assertCorrect("alter table liquibaseb.adduqtest add constraint uq_test unique (coltomakeuq)", DerbyDatabase.class);
134  0 assertCorrect("alter table [liquibaseb].[adduqtest] add constraint [uq_test] unique ([coltomakeuq])", SybaseASADatabase.class, SybaseDatabase.class, MSSQLDatabase.class);
135  0 assertCorrect("alter table [adduqtest] add constraint [uq_test] unique ([coltomakeuq])", FirebirdDatabase.class);
136   
137  0 assertCorrectOnRest("alter table [liquibaseb].[adduqtest] add constraint [uq_test] unique ([coltomakeuq])");
138   
139    }
140   
 
141  0 toggle @SuppressWarnings("unchecked")
142    @Test
143    public void execute_withTablespace() throws Exception {
144  0 statementUnderTest = new AddUniqueConstraintStatement(null, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME).setTablespace(TABLESPACE_NAME);
145  0 assertCorrect("alter table [adduqtest] add constraint [uq_test] unique ([coltomakeuq])", SybaseASADatabase.class, SybaseDatabase.class);
146  0 assertCorrect("alter table [dbo].[adduqtest] add constraint [uq_test] unique ([coltomakeuq])", MSSQLDatabase.class);
147  0 assertCorrect("alter table adduqtest add constraint unique (coltomakeuq) constraint uq_test", InformixDatabase.class);
148  0 assertCorrect("alter table \"adduqtest\" add constraint uq_test unique (\"coltomakeuq\") USING INDEX TABLESPACE " + TABLESPACE_NAME, PostgresDatabase.class);
149  0 assertCorrect("alter table `adduqtest` add constraint `uq_test` unique (`coltomakeuq`)", MySQLDatabase.class);
150  0 assertCorrect("alter table adduqtest add constraint uq_test unique (coltomakeuq)", DerbyDatabase.class, HsqlDatabase.class, DB2Database.class, H2Database.class, CacheDatabase.class, FirebirdDatabase.class, MaxDBDatabase.class);
151  0 assertCorrectOnRest("alter table [adduqtest] add constraint [uq_test] unique ([coltomakeuq]) USING INDEX TABLESPACE " + TABLESPACE_NAME);
152    }
153   
 
154  0 toggle @SuppressWarnings("unchecked")
155    @Test
156    public void execute_withDefferedAndDisabled() throws Exception {
157  0 statementUnderTest = new AddUniqueConstraintStatement(null, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME).setDeferrable(true).setInitiallyDeferred(true).setDisabled(true);
158  0 assertCorrect("alter table [adduqtest] add constraint [uq_test] unique ([coltomakeuq])", SybaseDatabase.class);
159  0 assertCorrect("alter table [dbo].[adduqtest] add constraint [uq_test] unique ([coltomakeuq])", MSSQLDatabase.class);
160  0 assertCorrect("alter table [adduqtest] add constraint [uq_test] unique ([coltomakeuq])", SybaseASADatabase.class);
161  0 assertCorrect("alter table `adduqtest` add constraint `uq_test` unique (`coltomakeuq`)", MySQLDatabase.class);
162  0 assertCorrect("alter table adduqtest add constraint unique (coltomakeuq) constraint uq_test", InformixDatabase.class);
163  0 assertCorrect("alter table adduqtest add constraint uq_test unique (coltomakeuq) DEFERRABLE INITIALLY DEFERRED DISABLE", OracleDatabase.class);
164  0 assertCorrect("alter table \"adduqtest\" add constraint uq_test unique (\"coltomakeuq\")", PostgresDatabase.class);
165  0 assertCorrect("alter table adduqtest add constraint uq_test unique (coltomakeuq)", DerbyDatabase.class);
166  0 assertCorrect("alter table [adduqtest] add constraint [uq_test] unique ([coltomakeuq])");
167    }
168    }