1 package com.atlassian.dbexporter.importer;
2
3 import com.atlassian.dbexporter.Context;
4 import com.atlassian.dbexporter.DatabaseInformation;
5 import com.atlassian.dbexporter.ImportExportErrorService;
6 import com.atlassian.dbexporter.progress.ProgressMonitor;
7 import org.junit.After;
8 import org.junit.Before;
9 import org.junit.Rule;
10 import org.junit.Test;
11 import org.junit.runner.RunWith;
12 import org.mockito.Mock;
13 import org.mockito.junit.MockitoJUnitRunner;
14
15 import static org.junit.Assert.assertEquals;
16 import static org.junit.Assert.assertFalse;
17 import static org.junit.Assert.assertNotNull;
18 import static org.junit.Assert.assertTrue;
19 import static org.mockito.Mockito.when;
20
21 @RunWith(MockitoJUnitRunner.class)
22 public class DatabaseInformationImporterTest {
23 @Rule
24 public NodeParserRule nodeParser = new NodeParserRule();
25
26 private DatabaseInformationImporter importer;
27
28 @Mock
29 private DatabaseInformationChecker checker;
30
31 @Mock
32 private ImportConfiguration configuration;
33
34 @Mock
35 private ProgressMonitor progressMonitor;
36
37 @Mock
38 private ImportExportErrorService errorService;
39
40 @Test
41 @Xml("<database />")
42 public void importEmptyInformation() {
43 final Context context = new Context();
44 importer.doImportNode(nodeParser.getNode(), configuration, context);
45
46 final DatabaseInformation info = getDatabaseInformation(context);
47 assertNotNull(info);
48 assertTrue(info.isEmpty());
49 }
50
51 @Test
52 @Xml("<database><meta key=\"a-key\" value=\"some-value\"/></database>")
53 public void importMetaInformation() {
54 final Context context = new Context();
55 importer.doImportNode(nodeParser.getNode(), configuration, context);
56
57 final DatabaseInformation info = getDatabaseInformation(context);
58 assertNotNull(info);
59 assertFalse(info.isEmpty());
60 assertEquals("some-value", info.getString("a-key"));
61 }
62
63 @Before
64 public void setUp() throws Exception {
65 when(configuration.getProgressMonitor()).thenReturn(progressMonitor);
66
67 importer = new DatabaseInformationImporter(errorService, checker);
68 }
69
70 @After
71 public void tearDown() throws Exception {
72 importer = null;
73 }
74
75 private DatabaseInformation getDatabaseInformation(Context context) {
76 return context.get(DatabaseInformation.class);
77 }
78 }