[SDC] rebase 1710 code
[sdc.git] / asdctool / src / test / java / org / openecomp / sdc / asdctool / migration / core / SdcMigrationToolTest.java
1 package org.openecomp.sdc.asdctool.migration.core;
2
3 import org.mockito.InjectMocks;
4 import org.mockito.Mock;
5 import org.mockito.Mockito;
6 import org.mockito.MockitoAnnotations;
7 import org.mockito.internal.verification.Times;
8 import org.openecomp.sdc.asdctool.migration.core.task.Migration;
9 import org.openecomp.sdc.asdctool.migration.core.task.MigrationResult;
10 import org.openecomp.sdc.asdctool.migration.resolver.MigrationResolver;
11 import org.openecomp.sdc.asdctool.migration.service.SdcRepoService;
12 import org.testng.annotations.BeforeMethod;
13 import org.testng.annotations.Test;
14
15 import java.util.Arrays;
16 import java.util.Collections;
17
18 import static org.mockito.Mockito.spy;
19 import static org.mockito.Mockito.verify;
20 import static org.mockito.Mockito.when;
21
22 public class SdcMigrationToolTest {
23
24     @InjectMocks
25     private SdcMigrationTool testInstance = spy(SdcMigrationTool.class);
26
27     @Mock
28     private MigrationResolver migrationResolverMock;
29
30     @Mock
31     private SdcRepoService sdcRepoServiceMock;
32
33     @BeforeMethod
34     public void setUp() throws Exception {
35         MockitoAnnotations.initMocks(this);
36     }
37
38     @Test
39     public void testMigrate_noMigrations() throws Exception {
40         when(migrationResolverMock.resolveMigrations()).thenReturn(Collections.emptyList());
41         testInstance.migrate(false);
42         verify(sdcRepoServiceMock, new Times(0)).clearTasksForCurrentMajor();
43         verify(sdcRepoServiceMock, new Times(0)).createMigrationTask(Mockito.any());
44     }
45
46     @Test
47     public void testMigrate_enforceFlag_removeAllMigrationTasksForCurrentVersion() throws Exception {
48         when(migrationResolverMock.resolveMigrations()).thenReturn(Collections.emptyList());
49         testInstance.migrate(true);
50         verify(sdcRepoServiceMock, new Times(1)).clearTasksForCurrentMajor();
51     }
52
53     @Test
54     public void testMigrate_stopAfterFirstFailure() throws Exception {
55         when(migrationResolverMock.resolveMigrations()).thenReturn(Arrays.asList(new SuccessfulMigration(), new FailedMigration(), new SuccessfulMigration()));
56         testInstance.migrate(false);
57         verify(sdcRepoServiceMock, new Times(0)).clearTasksForCurrentMajor();
58         verify(sdcRepoServiceMock, new Times(1)).createMigrationTask(Mockito.any());
59
60     }
61
62     private class FailedMigration implements Migration {
63
64         @Override
65         public String description() {
66             return null;
67         }
68
69         @Override
70         public DBVersion getVersion() {
71             return DBVersion.fromString("1710.22");
72         }
73
74         @Override
75         public MigrationResult migrate() {
76             MigrationResult migrationResult = new MigrationResult();
77             migrationResult.setMigrationStatus(MigrationResult.MigrationStatus.FAILED);
78             return migrationResult;
79         }
80     }
81
82     private class SuccessfulMigration implements Migration {
83
84         @Override
85         public String description() {
86             return null;
87         }
88
89         @Override
90         public DBVersion getVersion() {
91             return DBVersion.fromString("1710.22");
92         }
93
94         @Override
95         public MigrationResult migrate() {
96             MigrationResult migrationResult = new MigrationResult();
97             migrationResult.setMigrationStatus(MigrationResult.MigrationStatus.COMPLETED);
98             return migrationResult;
99         }
100     }
101 }