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
18
19
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
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
59
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 }