1 package org.melati.admin.test;
2
3
4 import junit.framework.TestCase;
5
6 import org.melati.LogicalDatabase;
7 import org.melati.admin.AnticipatedException;
8 import org.melati.admin.Copy;
9 import org.melati.poem.PoemTask;
10 import org.melati.poem.test.Dynamic;
11 import org.melati.poem.test.EverythingDatabase;
12 import org.melati.poem.test.StringField;
13
14
15
16
17 public class CopyTest extends TestCase {
18
19
20
21
22 public CopyTest(String name) {
23 super(name);
24 }
25
26
27
28
29 protected void setUp() throws Exception {
30 }
31
32
33
34
35 protected void tearDown() throws Exception {
36 }
37
38
39
40
41 public void testCopyDissimilarDbs() {
42 try {
43 Copy.copy("everything", "melatitest");
44 fail("Should have bombed");
45 } catch (AnticipatedException e) {
46 e = null;
47 }
48 }
49
50
51
52
53 public void testRecordsActuallyCopied() {
54 final EverythingDatabase edb = (EverythingDatabase)LogicalDatabase.getDatabase("everything");
55 final EverythingDatabase edb2 = (EverythingDatabase)LogicalDatabase.getDatabase("everything2");
56 System.err.println("From " + edb);
57 System.err.println("To " + edb2);
58 System.err.println("");
59 edb.inSessionAsRoot(
60 new PoemTask() {
61 public void run() {
62 StringField p = (StringField)(edb).getStringFieldTable().newPersistent();
63 p.setStringfield("1");
64 p.makePersistent();
65 assertEquals(1, edb.getStringFieldTable().count());
66 }
67 });
68 Copy.copy(edb, edb2);
69 edb2.inSessionAsRoot(
70 new PoemTask() {
71 public void run() {
72 assertEquals(1, edb2.getStringFieldTable().count());
73 }
74 });
75 }
76
77
78
79
80 public void testRecordsNotCopiedIfAnyPresent() {
81 final EverythingDatabase edb = (EverythingDatabase)LogicalDatabase.getDatabase("everything");
82 final EverythingDatabase edb2 = (EverythingDatabase)LogicalDatabase.getDatabase("everything2");
83 System.err.println("From " + edb);
84 System.err.println("To " + edb2);
85 System.err.println("");
86 edb.inSessionAsRoot(
87 new PoemTask() {
88 public void run() {
89 Dynamic p = (Dynamic)(edb).getDynamicTable().newPersistent();
90 p.setName("1");
91 p.makePersistent();
92 assertEquals(3, edb.getDynamicTable().count());
93 }
94 });
95 Copy.copy(edb, edb2);
96 edb2.inSessionAsRoot(
97 new PoemTask() {
98 public void run() {
99 assertEquals(2, edb2.getDynamicTable().count());
100 }
101 });
102 }
103
104 }