Catalog alignment
[sdc.git] / asdctool / src / test / java / org / openecomp / sdc / asdctool / migration / core / SdcMigrationToolTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.asdctool.migration.core;
22
23 import org.mockito.InjectMocks;
24 import org.mockito.Mock;
25 import org.mockito.Mockito;
26 import org.mockito.MockitoAnnotations;
27 import org.mockito.internal.verification.Times;
28 import org.openecomp.sdc.asdctool.migration.core.task.Migration;
29 import org.openecomp.sdc.asdctool.migration.core.task.MigrationResult;
30 import org.openecomp.sdc.asdctool.migration.resolver.MigrationResolver;
31 import org.openecomp.sdc.asdctool.migration.service.SdcRepoService;
32 import org.testng.annotations.BeforeMethod;
33 import org.testng.annotations.Test;
34
35 import java.util.Arrays;
36 import java.util.Collections;
37
38 import static org.mockito.Mockito.spy;
39 import static org.mockito.Mockito.verify;
40 import static org.mockito.Mockito.when;
41
42 public class SdcMigrationToolTest {
43
44         @InjectMocks
45         private SdcMigrationTool testInstance = spy(SdcMigrationTool.class);
46
47         @Mock
48         private MigrationResolver migrationResolverMock;
49
50         @Mock
51         private SdcRepoService sdcRepoServiceMock;
52
53         @BeforeMethod
54     public void setUp() {
55                 MockitoAnnotations.initMocks(this);
56         }
57
58         @Test
59     public void testMigrate_noMigrations() {
60                 when(migrationResolverMock.resolveMigrations()).thenReturn(Collections.emptyList());
61                 testInstance.migrate(false);
62                 verify(sdcRepoServiceMock, new Times(0)).clearTasksForCurrentMajor();
63                 verify(sdcRepoServiceMock, new Times(0)).createMigrationTask(Mockito.any());
64         }
65
66         @Test
67     public void testMigrate_enforceFlag_removeAllMigrationTasksForCurrentVersion() {
68                 when(migrationResolverMock.resolveMigrations()).thenReturn(Collections.emptyList());
69                 testInstance.migrate(true);
70                 verify(sdcRepoServiceMock, new Times(1)).clearTasksForCurrentMajor();
71         }
72
73         @Test
74     public void testMigrate_stopAfterFirstFailure() {
75                 when(migrationResolverMock.resolveMigrations())
76                                 .thenReturn(Arrays.asList(new SuccessfulMigration(), new FailedMigration(), new SuccessfulMigration()));
77                 testInstance.migrate(false);
78                 verify(sdcRepoServiceMock, new Times(0)).clearTasksForCurrentMajor();
79                 verify(sdcRepoServiceMock, new Times(1)).createMigrationTask(Mockito.any());
80
81         }
82
83         private class FailedMigration implements Migration {
84
85                 @Override
86                 public String description() {
87                         return null;
88                 }
89
90                 @Override
91                 public DBVersion getVersion() {
92                         return DBVersion.fromString("1710.22");
93                 }
94
95                 @Override
96                 public MigrationResult migrate() {
97                         MigrationResult migrationResult = new MigrationResult();
98                         migrationResult.setMigrationStatus(MigrationResult.MigrationStatus.FAILED);
99                         return migrationResult;
100                 }
101         }
102
103         private class SuccessfulMigration implements Migration {
104
105                 @Override
106                 public String description() {
107                         return null;
108                 }
109
110                 @Override
111                 public DBVersion getVersion() {
112                         return DBVersion.fromString("1710.22");
113                 }
114
115                 @Override
116                 public MigrationResult migrate() {
117                         MigrationResult migrationResult = new MigrationResult();
118                         migrationResult.setMigrationStatus(MigrationResult.MigrationStatus.COMPLETED);
119                         return migrationResult;
120                 }
121         }
122 }