1 21 package net.sf.hajdbc.dialect; 22 23 import java.sql.DatabaseMetaData ; 24 import java.sql.SQLException ; 25 26 import net.sf.hajdbc.Dialect; 27 import net.sf.hajdbc.ForeignKeyConstraint; 28 import net.sf.hajdbc.UniqueConstraint; 29 30 import org.easymock.EasyMock; 31 import org.testng.annotations.Test; 32 33 37 @Test 38 public class TestMySQLDialect extends TestDefaultDialect 39 { 40 43 @Override 44 protected Dialect createDialect() 45 { 46 return new MySQLDialect(); 47 } 48 49 52 @Override 53 public void testGetCreateForeignKeyConstraintSQL() 54 { 55 ForeignKeyConstraint constraint = new ForeignKeyConstraint("fk_name", "schema", "table"); 56 constraint.getColumnList().add("column1"); 57 constraint.getColumnList().add("column2"); 58 constraint.setForeignSchema("other_schema"); 59 constraint.setForeignTable("other_table"); 60 constraint.getForeignColumnList().add("other_column1"); 61 constraint.getForeignColumnList().add("other_column2"); 62 constraint.setUpdateRule(DatabaseMetaData.importedKeyNoAction); 63 constraint.setDeleteRule(DatabaseMetaData.importedKeyNoAction); 64 constraint.setDeferrability(DatabaseMetaData.importedKeyNotDeferrable); 65 66 String quote = "'"; 67 68 try 69 { 70 EasyMock.expect(this.metaData.getIdentifierQuoteString()).andReturn(quote); 71 EasyMock.expect(this.metaData.supportsSchemasInDataManipulation()).andReturn(true); 72 EasyMock.expect(this.metaData.getIdentifierQuoteString()).andReturn(quote).times(4); 73 EasyMock.expect(this.metaData.supportsSchemasInDataManipulation()).andReturn(true); 74 EasyMock.expect(this.metaData.getIdentifierQuoteString()).andReturn(quote).times(4); 75 76 this.control.replay(); 77 78 String sql = this.dialect.getCreateForeignKeyConstraintSQL(this.metaData, constraint); 79 80 this.control.verify(); 81 82 assert sql.equals("ALTER TABLE 'schema'.'table' ADD CONSTRAINT 'fk_name' FOREIGN KEY ('column1','column2') REFERENCES 'other_schema'.'other_table' ('other_column1','other_column2') ON DELETE NO ACTION ON UPDATE NO ACTION") : sql; 83 } 84 catch (SQLException e) 85 { 86 assert false : e; 87 } 88 } 89 90 93 @Override 94 public void testGetDropForeignKeyConstraintSQL() 95 { 96 ForeignKeyConstraint constraint = new ForeignKeyConstraint("fk_name", "schema", "table"); 97 String quote = "'"; 98 99 try 100 { 101 EasyMock.expect(this.metaData.getIdentifierQuoteString()).andReturn(quote); 102 EasyMock.expect(this.metaData.supportsSchemasInDataManipulation()).andReturn(true); 103 EasyMock.expect(this.metaData.getIdentifierQuoteString()).andReturn(quote).times(2); 104 105 this.control.replay(); 106 107 String sql = this.dialect.getDropForeignKeyConstraintSQL(this.metaData, constraint); 108 109 this.control.verify(); 110 111 assert sql.equals("ALTER TABLE 'schema'.'table' DROP FOREIGN KEY 'fk_name'") : sql; 112 } 113 catch (SQLException e) 114 { 115 assert false : e; 116 } 117 } 118 119 122 @Override 123 public void testGetCreateUniqueConstraintSQL() 124 { 125 UniqueConstraint constraint = new UniqueConstraint("uk_name", "schema", "table"); 126 constraint.getColumnList().add("column1"); 127 constraint.getColumnList().add("column2"); 128 String quote = "'"; 129 130 try 131 { 132 EasyMock.expect(this.metaData.getIdentifierQuoteString()).andReturn(quote); 133 EasyMock.expect(this.metaData.supportsSchemasInDataManipulation()).andReturn(true); 134 EasyMock.expect(this.metaData.getIdentifierQuoteString()).andReturn(quote).times(4); 135 136 this.control.replay(); 137 138 String sql = this.dialect.getCreateUniqueConstraintSQL(this.metaData, constraint); 139 140 this.control.verify(); 141 142 assert sql.equals("ALTER TABLE 'schema'.'table' ADD UNIQUE 'uk_name' ('column1','column2')") : sql; 143 } 144 catch (SQLException e) 145 { 146 assert false : e; 147 } 148 } 149 150 153 @Override 154 public void testGetDropUniqueConstraintSQL() 155 { 156 UniqueConstraint constraint = new UniqueConstraint("uk_name", "schema", "table"); 157 String quote = "'"; 158 159 try 160 { 161 EasyMock.expect(this.metaData.getIdentifierQuoteString()).andReturn(quote); 162 EasyMock.expect(this.metaData.supportsSchemasInDataManipulation()).andReturn(true); 163 EasyMock.expect(this.metaData.getIdentifierQuoteString()).andReturn(quote).times(2); 164 165 this.control.replay(); 166 167 String sql = this.dialect.getDropUniqueConstraintSQL(this.metaData, constraint); 168 169 this.control.verify(); 170 171 assert sql.equals("ALTER TABLE 'schema'.'table' DROP INDEX 'uk_name'") : sql; 172 } 173 catch (SQLException e) 174 { 175 assert false : e; 176 } 177 } 178 } 179 | Popular Tags |