re base 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.*;
19
20 public class SdcMigrationToolTest {
21
22         @InjectMocks
23         private SdcMigrationTool testInstance = spy(SdcMigrationTool.class);
24
25         @Mock
26         private MigrationResolver migrationResolverMock;
27
28         @Mock
29         private SdcRepoService sdcRepoServiceMock;
30
31         @BeforeMethod
32     public void setUp() {
33                 MockitoAnnotations.initMocks(this);
34         }
35
36         @Test
37     public void testMigrate_noMigrations() {
38                 when(migrationResolverMock.resolveMigrations()).thenReturn(Collections.emptyList());
39                 testInstance.migrate(false);
40                 verify(sdcRepoServiceMock, new Times(0)).clearTasksForCurrentMajor();
41                 verify(sdcRepoServiceMock, new Times(0)).createMigrationTask(Mockito.any());
42         }
43
44         @Test
45     public void testMigrate_enforceFlag_removeAllMigrationTasksForCurrentVersion() {
46                 when(migrationResolverMock.resolveMigrations()).thenReturn(Collections.emptyList());
47                 testInstance.migrate(true);
48                 verify(sdcRepoServiceMock, new Times(1)).clearTasksForCurrentMajor();
49         }
50
51         @Test
52     public void testMigrate_stopAfterFirstFailure() {
53                 when(migrationResolverMock.resolveMigrations())
54                                 .thenReturn(Arrays.asList(new SuccessfulMigration(), new FailedMigration(), new SuccessfulMigration()));
55                 testInstance.migrate(false);
56                 verify(sdcRepoServiceMock, new Times(0)).clearTasksForCurrentMajor();
57                 verify(sdcRepoServiceMock, new Times(1)).createMigrationTask(Mockito.any());
58
59         }
60
61         private class FailedMigration implements Migration {
62
63                 @Override
64                 public String description() {
65                         return null;
66                 }
67
68                 @Override
69                 public DBVersion getVersion() {
70                         return DBVersion.fromString("1710.22");
71                 }
72
73                 @Override
74                 public MigrationResult migrate() {
75                         MigrationResult migrationResult = new MigrationResult();
76                         migrationResult.setMigrationStatus(MigrationResult.MigrationStatus.FAILED);
77                         return migrationResult;
78                 }
79         }
80
81         private class SuccessfulMigration implements Migration {
82
83                 @Override
84                 public String description() {
85                         return null;
86                 }
87
88                 @Override
89                 public DBVersion getVersion() {
90                         return DBVersion.fromString("1710.22");
91                 }
92
93                 @Override
94                 public MigrationResult migrate() {
95                         MigrationResult migrationResult = new MigrationResult();
96                         migrationResult.setMigrationStatus(MigrationResult.MigrationStatus.COMPLETED);
97                         return migrationResult;
98                 }
99         }
100 }