[TEST] increase coverage of project preference service test (#15939)
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectPreferenceServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectPreferenceServiceTest.java
index 530c15d..7a74a7c 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectPreferenceServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectPreferenceServiceTest.java
@@ -60,28 +60,65 @@
public void testUpdateProjectPreference() {
User loginUser = getGeneralUser();
+ // no permission
+ Mockito.when(projectService.hasProjectAndWritePerm(Mockito.any(), Mockito.any(), Mockito.any(Result.class)))
+ .thenReturn(false);
+ Result result = projectPreferenceService.updateProjectPreference(loginUser, projectCode, "value");
+ Assertions.assertNull(result.getCode());
+ Assertions.assertNull(result.getData());
+ Assertions.assertNull(result.getMsg());
+
+ // when preference exists in project
+ Mockito.when(projectPreferenceMapper.selectOne(Mockito.any())).thenReturn(null);
Mockito.when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
+
+ // success
Mockito.when(projectService.hasProjectAndWritePerm(Mockito.any(), Mockito.any(), Mockito.any(Result.class)))
.thenReturn(true);
- Mockito.when(projectPreferenceMapper.selectOne(Mockito.any())).thenReturn(null);
Mockito.when(projectPreferenceMapper.insert(Mockito.any())).thenReturn(1);
- Result result = projectPreferenceService.updateProjectPreference(loginUser, projectCode, "value");
+ result = projectPreferenceService.updateProjectPreference(loginUser, projectCode, "value");
Assertions.assertEquals(Status.SUCCESS.getCode(), result.getCode());
+
+ // database operatation fail
+ Mockito.when(projectPreferenceMapper.insert(Mockito.any())).thenReturn(-1);
+ result = projectPreferenceService.updateProjectPreference(loginUser, projectCode, "value");
+ Assertions.assertEquals(Status.CREATE_PROJECT_PREFERENCE_ERROR.getCode(), result.getCode());
+
+ // when preference exists in project
+ Mockito.when(projectPreferenceMapper.selectOne(Mockito.any())).thenReturn(getProjectPreference());
+
+ // success
+ Mockito.when(projectPreferenceMapper.updateById(Mockito.any())).thenReturn(1);
+ result = projectPreferenceService.updateProjectPreference(loginUser, projectCode, "value");
+ Assertions.assertEquals(Status.SUCCESS.getCode(), result.getCode());
+
+ // database operation fail
+ Mockito.when(projectPreferenceMapper.updateById(Mockito.any())).thenReturn(-1);
+ result = projectPreferenceService.updateProjectPreference(loginUser, projectCode, "value");
+ Assertions.assertEquals(Status.UPDATE_PROJECT_PREFERENCE_ERROR.getCode(), result.getCode());
}
@Test
public void testQueryProjectPreferenceByProjectCode() {
User loginUser = getGeneralUser();
+ // no permission
+ Mockito.when(projectService.hasProjectAndWritePerm(Mockito.any(), Mockito.any(), Mockito.any(Result.class)))
+ .thenReturn(false);
+ Result result = projectPreferenceService.queryProjectPreferenceByProjectCode(loginUser, projectCode);
+ Assertions.assertNull(result.getCode());
+ Assertions.assertNull(result.getData());
+ Assertions.assertNull(result.getMsg());
+
// PROJECT_PARAMETER_NOT_EXISTS
Mockito.when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
Mockito.when(projectService.hasProjectAndPerm(Mockito.any(), Mockito.any(), Mockito.any(Result.class),
Mockito.any())).thenReturn(true);
Mockito.when(projectPreferenceMapper.selectOne(Mockito.any())).thenReturn(null);
- Result result = projectPreferenceService.queryProjectPreferenceByProjectCode(loginUser, projectCode);
+ result = projectPreferenceService.queryProjectPreferenceByProjectCode(loginUser, projectCode);
Assertions.assertEquals(Status.SUCCESS.getCode(), result.getCode());
// SUCCESS
@@ -94,14 +131,29 @@
public void testEnableProjectPreference() {
User loginUser = getGeneralUser();
+ // no permission
+ Mockito.when(projectService.hasProjectAndWritePerm(Mockito.any(), Mockito.any(), Mockito.any(Result.class)))
+ .thenReturn(false);
+ Result result = projectPreferenceService.enableProjectPreference(loginUser, projectCode, 1);
+ Assertions.assertNull(result.getCode());
+ Assertions.assertNull(result.getData());
+ Assertions.assertNull(result.getMsg());
+
Mockito.when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
Mockito.when(projectService.hasProjectAndWritePerm(Mockito.any(), Mockito.any(), Mockito.any(Result.class)))
.thenReturn(true);
+ // success
Mockito.when(projectPreferenceMapper.selectOne(Mockito.any())).thenReturn(getProjectPreference());
- Result result = projectPreferenceService.enableProjectPreference(loginUser, projectCode, 1);
+ Mockito.when(projectPreferenceMapper.updateById(Mockito.any())).thenReturn(1);
+ result = projectPreferenceService.enableProjectPreference(loginUser, projectCode, 2);
Assertions.assertEquals(Status.SUCCESS.getCode(), result.getCode());
+ // db operation fail
+ Mockito.when(projectPreferenceMapper.selectOne(Mockito.any())).thenReturn(getProjectPreference());
+ Mockito.when(projectPreferenceMapper.updateById(Mockito.any())).thenReturn(-1);
+ result = projectPreferenceService.enableProjectPreference(loginUser, projectCode, 2);
+ Assertions.assertEquals(Status.UPDATE_PROJECT_PREFERENCE_STATE_ERROR.getCode(), result.getCode());
}
private User getGeneralUser() {