aacbcdd738b1bce5a3ad2f24690295aff9bb0bba
[sdc.git] /
1 package org.openecomp.sdc.asdctool.migration.resolver;
2
3 import org.mockito.InjectMocks;
4 import org.mockito.Mock;
5 import org.mockito.MockitoAnnotations;
6 import org.openecomp.sdc.asdctool.migration.core.DBVersion;
7 import org.openecomp.sdc.asdctool.migration.core.task.IMigrationStage;
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.dao.MigrationTasksDao;
11 import org.openecomp.sdc.asdctool.migration.service.SdcRepoService;
12 import org.openecomp.sdc.be.dao.cassandra.CassandraClient;
13 import org.testng.annotations.BeforeMethod;
14 import org.testng.annotations.Test;
15
16 import java.util.Arrays;
17 import java.util.Collections;
18 import java.util.List;
19
20 import static org.mockito.Mockito.mock;
21 import static org.mockito.Mockito.when;
22 import static org.testng.Assert.assertEquals;
23 import static org.testng.Assert.assertTrue;
24
25 public class SpringBeansMigrationResolverTest {
26
27         @InjectMocks
28         private SpringBeansMigrationResolver testInstance;
29
30         @Mock
31         private SdcRepoService sdcRepoServiceMock;
32
33         private List<Migration> migrations = Arrays.asList(createMigration("1710.1"), createMigration("1710.22"),
34                         createMigration("1707.12"), createMigration("1710.3"));
35
36         @BeforeMethod
37     public void setUp() {
38                 MockitoAnnotations.initMocks(this);
39                 testInstance.setMigrations(migrations);
40         }
41
42         @Test
43     public void testResolveMigrations_getMigrationsWithVersionGreaterThanLatest() {
44                 when(sdcRepoServiceMock.getLatestDBVersion()).thenReturn(DBVersion.fromString("1710.2"));
45                 testInstance.setPostMigrations(Collections.emptyList());
46                 List<IMigrationStage> resolvedMigrations = testInstance.resolveMigrations();
47                 assertEquals(resolvedMigrations.size(), 2);
48                 assertEquals(resolvedMigrations.get(0).getVersion(), DBVersion.fromString("1710.3"));
49                 assertEquals(resolvedMigrations.get(1).getVersion(), DBVersion.fromString("1710.22"));
50         }
51
52         @Test
53     public void testResolveMigration_noLatestVersionForCurrentMajorVersion() {
54                 when(sdcRepoServiceMock.getLatestDBVersion()).thenReturn(DBVersion.fromString("1710.-1"));
55                 testInstance.setPostMigrations(Collections.emptyList());
56                 List<IMigrationStage> resolvedMigrations = testInstance.resolveMigrations();
57                 assertEquals(resolvedMigrations.size(), 3);
58                 assertEquals(resolvedMigrations.get(0).getVersion(), DBVersion.fromString("1710.1"));
59                 assertEquals(resolvedMigrations.get(1).getVersion(), DBVersion.fromString("1710.3"));
60                 assertEquals(resolvedMigrations.get(2).getVersion(), DBVersion.fromString("1710.22"));
61         }
62
63         @Test
64     public void testResolveMigrations_emptyMigrationsList() {
65                 testInstance.setMigrations(Collections.emptyList());
66                 testInstance.setPostMigrations(Collections.emptyList());
67                 when(sdcRepoServiceMock.getLatestDBVersion()).thenReturn(DBVersion.fromString("1710.-1"));
68                 List<IMigrationStage> resolvedMigrations = testInstance.resolveMigrations();
69                 assertTrue(resolvedMigrations.isEmpty());
70         }
71
72         private Migration createMigration(String version) {
73                 return new Migration() {
74                         @Override
75                         public String description() {
76                                 return null;
77                         }
78
79                         @Override
80                         public DBVersion getVersion() {
81                                 return DBVersion.fromString(version);
82                         }
83
84                         @Override
85                         public MigrationResult migrate() {
86                                 return null;
87                         }
88                 };
89         }
90
91         private SpringBeansMigrationResolver createTestSubject() {
92                 return new SpringBeansMigrationResolver(null, null, new SdcRepoService(new MigrationTasksDao(mock(CassandraClient.class))));
93         }
94 }