1   package org.riverock.dbrevision.manager.patch;
2   
3   import java.io.InputStream;
4   
5   import junit.framework.TestCase;
6   
7   import org.riverock.dbrevision.annotation.schema.db.Action;
8   import org.riverock.dbrevision.annotation.schema.db.ActionParameter;
9   import org.riverock.dbrevision.annotation.schema.db.DbForeignKey;
10  import org.riverock.dbrevision.annotation.schema.db.DbPrimaryKey;
11  import org.riverock.dbrevision.annotation.schema.db.DbPrimaryKeyColumn;
12  import org.riverock.dbrevision.annotation.schema.db.Patch;
13  import org.riverock.dbrevision.annotation.schema.db.Patches;
14  import org.riverock.dbrevision.utils.Utils;
15  
16  /**
17   * User: SMaslyukov
18   * Date: 02.08.2007
19   * Time: 13:23:15
20   */
21  public class TestPatchUnmarshaling extends TestCase {
22  
23      public void testUnmarshalPatch_1() throws Exception {
24          InputStream inputStream = TestPatchUnmarshaling.class.getResourceAsStream("/xml/patch/patch-1.xml"); 
25          Patches patches = Utils.getObjectFromXml(Patches.class, inputStream);
26          assertNotNull(patches);
27          assertNotNull(patches.getPatches());
28          assertEquals(6, patches.getPatches().size());
29          Patch p;
30          p = patches.getPatches().get(0);
31          assertEquals("test_2_1", p.getName());
32          assertEquals("test_1_1", p.getPreviousName());
33  
34          assertEquals(2, p.getActionOrCustomClassActionOrSqlAction().size());
35  
36          assertTrue( p.getActionOrCustomClassActionOrSqlAction().get(0) instanceof DbPrimaryKey);
37          assertTrue( p.getActionOrCustomClassActionOrSqlAction().get(1) instanceof DbForeignKey);
38  
39          DbPrimaryKey pk = (DbPrimaryKey)p.getActionOrCustomClassActionOrSqlAction().get(0);
40          assertEquals(1, pk.getColumns().size());
41  
42          DbPrimaryKeyColumn col = pk.getColumns().get(0);
43          // schemaName="MILLENNIUM" tableName="TEST_1_1" columnName="ID_TEST11" keySeq="1" pkName="ID_TEST11_T11_PK"
44          assertEquals("MILLENNIUM", pk.getSchemaName());
45          assertEquals("TEST_1_1", pk.getTableName());
46          assertEquals("ID_TEST11", col.getColumnName());
47          assertEquals(1, col.getKeySeq());
48          assertEquals("ID_TEST11_T11_PK", pk.getPkName());
49  
50          DbForeignKey fk = (DbForeignKey)p.getActionOrCustomClassActionOrSqlAction().get(1);
51          assertNotNull(fk.getDeleteRule());
52          assertEquals(new Integer(0), fk.getDeleteRule().getRuleType());
53          assertEquals("java.sql.DatabaseMetaData.importedKeyCascade", fk.getDeleteRule().getRuleName());
54          assertNotNull(fk.getDeferrability());
55          assertEquals(new Integer(7), fk.getDeferrability().getRuleType());
56          assertEquals("java.sql.DatabaseMetaData.importedKeyNotDeferrable", fk.getDeferrability().getRuleName());
57  
58          // pkSchemaName="MILLENNIUM" pkTableName="TEST_1_1" pkColumnName="ID_TEST11" pkName="ID_TEST11_T11_PK"
59          // fkSchemaName="MILLENNIUM" fkTableName="TEST_1_2" fkColumnName="ID_TEST11" keySeq="1" fkName="ID_TEST11_T12_FK"
60          assertEquals("MILLENNIUM", fk.getPkSchemaName());
61          assertEquals("MILLENNIUM", fk.getFkSchemaName());
62          assertEquals("TEST_1_1", fk.getPkTableName());
63          assertEquals("TEST_1_2", fk.getFkTableName());
64          assertEquals("ID_TEST11_T11_PK", fk.getPkName());
65          assertEquals("ID_TEST11_T12_FK", fk.getFkName());
66          assertEquals(1, fk.getColumns().size());
67          assertEquals("ID_TEST11", fk.getColumns().get(0).getPkColumnName());
68          assertEquals("ID_TEST11", fk.getColumns().get(0).getFkColumnName());
69          assertEquals(new Integer(1), fk.getColumns().get(0).getKeySeq());
70      }
71  
72      public void testUnmarshalPatch_2() throws Exception {
73          InputStream inputStream = TestPatchUnmarshaling.class.getResourceAsStream("/xml/patch/patch-2.xml"); 
74          Patches patches = Utils.getObjectFromXml(Patches.class, inputStream);
75          assertNotNull(patches);
76          assertNotNull(patches.getPatches());
77          assertEquals(1, patches.getPatches().size());
78          Patch p;
79          p = patches.getPatches().get(0);
80          assertEquals("webmill_init_def_v2", p.getName());
81          assertNull(p.getPreviousName());
82  
83          assertEquals(1, p.getActionOrCustomClassActionOrSqlAction().size());
84  
85          assertTrue( p.getActionOrCustomClassActionOrSqlAction().get(0) instanceof Action);
86  
87          Action action = (Action)p.getActionOrCustomClassActionOrSqlAction().get(0);
88          assertEquals("CUSTOM_CLASS_ACTION", action.getType());
89  
90          assertEquals(1, action.getActionParameters().size());
91          ActionParameter ap = action.getActionParameters().get(0);
92          assertEquals("class_name", ap.getName());
93          assertEquals("org.riverock.db.definition.InitWebmillStructureV2", ap.getData());
94      }
95  }