Skip to content

Commit

Permalink
ADM-794:[backend]fix: add test for pipeline (#1014)
Browse files Browse the repository at this point in the history
* ADM-794:[backend]fix: add test for generate report

* ADM-794:[backend]fix: repair test for pipeline

* ADM-794:[backend]fix: add test for pipeline

* ADM-794:[backend]fix: refactor code

* ADM-794:[backend]fix: refactor for report service test

---------

Co-authored-by: yunsong.yang <[email protected]>
  • Loading branch information
yulongcai and mikeyangyun authored Feb 1, 2024
1 parent a436d74 commit 9197e13
Show file tree
Hide file tree
Showing 5 changed files with 117 additions and 58 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -641,7 +641,7 @@ void shouldGetDataFromCache() {

assertEquals(EXPORT_CSV_VALIDITY_TIME, res.getExportValidityTime());
assertEquals(true, res.getAllMetricsCompleted());
assertEquals(null, res.getReportMetricsError().getBoardMetricsError());
assertNull(res.getReportMetricsError().getBoardMetricsError());
}

@Test
Expand All @@ -662,7 +662,7 @@ void shouldReturnCompletedFalseGivenResponseNullMetricsDataCompletedFalseWhenGet
assertEquals(false, res.getBoardMetricsCompleted());
assertEquals(false, res.getPipelineMetricsCompleted());
assertEquals(false, res.getSourceControlMetricsCompleted());
assertEquals(null, res.getReportMetricsError().getBoardMetricsError());
assertNull(res.getReportMetricsError().getBoardMetricsError());
}

@Test
Expand All @@ -683,7 +683,7 @@ void shouldReturnCompletedTrueGivenResponseNonNullMetricsDataCompletedFalseWhenG
assertEquals(true, res.getBoardMetricsCompleted());
assertEquals(true, res.getPipelineMetricsCompleted());
assertEquals(true, res.getSourceControlMetricsCompleted());
assertEquals(null, res.getReportMetricsError().getBoardMetricsError());
assertNull(res.getReportMetricsError().getBoardMetricsError());
}

@Test
Expand All @@ -697,10 +697,10 @@ void shouldReturnMetricsCompletedStatusIsNullWhenAsyncMetricsStatusIsNull() {

assertEquals(EXPORT_CSV_VALIDITY_TIME, res.getExportValidityTime());
assertEquals(false, res.getAllMetricsCompleted());
assertEquals(null, res.getBoardMetricsCompleted());
assertEquals(null, res.getPipelineMetricsCompleted());
assertEquals(null, res.getSourceControlMetricsCompleted());
assertEquals(null, res.getReportMetricsError().getBoardMetricsError());
assertNull(res.getBoardMetricsCompleted());
assertNull(res.getPipelineMetricsCompleted());
assertNull(res.getSourceControlMetricsCompleted());
assertNull(res.getReportMetricsError().getBoardMetricsError());
}

@Test
Expand Down
41 changes: 41 additions & 0 deletions backend/src/test/java/heartbeat/service/report/KanbanFixture.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package heartbeat.service.report;

import heartbeat.controller.board.dto.request.RequestJiraBoardColumnSetting;
import heartbeat.controller.board.dto.request.StoryPointsAndCycleTimeRequest;
import heartbeat.controller.board.dto.response.TargetField;
import heartbeat.controller.report.dto.request.JiraBoardSetting;

import java.util.List;

public class KanbanFixture {

public static JiraBoardSetting MOCK_JIRA_BOARD_SETTING() {
return JiraBoardSetting.builder()
.users(List.of("user1"))
.token("token")
.type("jira")
.site("site")
.projectKey("ADM")
.boardId("2")
.boardColumns(List.of(RequestJiraBoardColumnSetting.builder().value("DONE").name("DONE").build()))
.targetFields(List.of(TargetField.builder().key("customer").build()))
.treatFlagCardAsBlock(true)
.assigneeFilter("assignee")
.build();
}

public static StoryPointsAndCycleTimeRequest MOCK_EXPECT_STORY_POINT_AND_CYCLE_TIME_REQUEST() {
return StoryPointsAndCycleTimeRequest.builder()
.token("token")
.type("jira")
.site("site")
.project("ADM")
.boardId("2")
.targetFields(List.of(TargetField.builder().key("customer").build()))
.treatFlagCardAsBlock(true)
.startTime("startTime")
.endTime("endTime")
.build();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,12 @@ class KanbanServiceTest {
private KanbanCsvService kanbanCsvService;

@Test
void shouldCallCsvServiceToGenerateScvInfo() {
void shouldCallCsvServiceToGenerateCSVInfoWhenJiraBoardSettingIsNotNull() {
JiraBoardSetting mockJiraBoardSetting = KanbanFixture.MOCK_JIRA_BOARD_SETTING();
GenerateReportRequest request = GenerateReportRequest.builder()
.jiraBoardSetting(JiraBoardSetting.builder().treatFlagCardAsBlock(true).build())
.jiraBoardSetting(mockJiraBoardSetting)
.startTime("startTime")
.endTime("endTime")
.build();
CardCollection realDoneCardCollection = CardCollection.builder().build();
CardCollection nonDoneCardCollection = CardCollection.builder().build();
Expand All @@ -49,6 +52,12 @@ void shouldCallCsvServiceToGenerateScvInfo() {
assertEquals(realDoneCardCollection, result.getRealDoneCardCollection());
assertEquals(nonDoneCardCollection, result.getNonDoneCardCollection());
verify(kanbanCsvService).generateCsvInfo(request, realDoneCardCollection, nonDoneCardCollection);
verify(jiraService).getStoryPointsAndCycleTimeForNonDoneCards(
KanbanFixture.MOCK_EXPECT_STORY_POINT_AND_CYCLE_TIME_REQUEST(), mockJiraBoardSetting.getBoardColumns(),
mockJiraBoardSetting.getUsers());
verify(jiraService).getStoryPointsAndCycleTimeForDoneCards(
KanbanFixture.MOCK_EXPECT_STORY_POINT_AND_CYCLE_TIME_REQUEST(), mockJiraBoardSetting.getBoardColumns(),
mockJiraBoardSetting.getUsers(), mockJiraBoardSetting.getAssigneeFilter());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import heartbeat.service.report.calculator.model.FetchedData;
import heartbeat.service.source.github.GitHubService;
import org.assertj.core.util.Lists;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
Expand All @@ -28,6 +29,7 @@
import org.mockito.quality.Strictness;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

Expand Down Expand Up @@ -56,25 +58,40 @@ public class PipelineServiceTest {
@Captor
ArgumentCaptor<Map<String, String>> roadMapArgumentCaptor;

private String token;

private String startTime;

private String endTime;

@BeforeEach
public void setup() {
startTime = "startTime";
endTime = "endTime";
token = "token";
}

@Nested
class FetchGithubData {

@Test
void shouldReturnEmptyBuildInfosListAndEmptyLeadTimeWhenDeploymentEnvironmentsIsEmpty() {
GenerateReportRequest request = GenerateReportRequest.builder()
.buildKiteSetting(BuildKiteSetting.builder().deploymentEnvList(new ArrayList()).build())
.buildKiteSetting(BuildKiteSetting.builder().deploymentEnvList(new ArrayList<>()).build())
.metrics(new ArrayList<>())
.codebaseSetting(CodebaseSetting.builder().token(token).build())
.build();
FetchedData.BuildKiteData result = pipelineService.fetchGithubData(request);

assertEquals(0, result.getBuildInfosList().size());
verify(buildKiteService, never()).countDeployTimes(any(), any(), any(), any());
verify(gitHubService).fetchPipelinesLeadTime(List.of(), new HashMap<>(), token);
}

@Test
void shouldReturnEmptyPipelineLeadTimeWhenCodebaseSettingIsEmpty() {
GenerateReportRequest request = GenerateReportRequest.builder()
.buildKiteSetting(BuildKiteSetting.builder().deploymentEnvList(new ArrayList()).build())
.buildKiteSetting(BuildKiteSetting.builder().deploymentEnvList(new ArrayList<>()).build())
.metrics(new ArrayList<>())
.build();
FetchedData.BuildKiteData result = pipelineService.fetchGithubData(request);
Expand All @@ -84,11 +101,8 @@ void shouldReturnEmptyPipelineLeadTimeWhenCodebaseSettingIsEmpty() {
}

@Test
void shouldGetPipelineLeadTimeFromGithubServiceAndBuildkiteServiceWhenCodebaseSettingIsNotEmpty() {
void shouldGetPipelineLeadTimeFromGithubServiceAndBuildKiteServiceWhenCodebaseSettingIsNotEmpty() {
List<BuildKiteBuildInfo> fakeBuildKiteBuildInfos = new ArrayList<>();
String startTime = "startTime";
String endTime = "endTime";
String token = "token";
GenerateReportRequest request = GenerateReportRequest.builder()
.buildKiteSetting(BuildKiteSetting.builder()
.deploymentEnvList(List.of(DeploymentEnvironment.builder().id("env1").repository("repo1").build(),
Expand Down Expand Up @@ -120,9 +134,6 @@ void shouldGetPipelineLeadTimeFromGithubServiceAndBuildkiteServiceWhenCodebaseSe
@Test
void shouldGetSecondValueInRoadMapWhenDeployEnvironmentListHasTwoElementWithSameKey() {
List<BuildKiteBuildInfo> fakeBuildKiteBuildInfos = new ArrayList<>();
String startTime = "startTime";
String endTime = "endTime";
String token = "token";
GenerateReportRequest request = GenerateReportRequest.builder()
.buildKiteSetting(BuildKiteSetting.builder()
.deploymentEnvList(List.of(DeploymentEnvironment.builder().id("env1").repository("repo1").build(),
Expand Down Expand Up @@ -157,9 +168,6 @@ void shouldFilterAuthorByInputCrews() {
BuildKiteBuildInfo.builder()
.author(BuildKiteBuildInfo.Author.builder().name("test-author2").build())
.build());
String startTime = "startTime";
String endTime = "endTime";
String token = "token";
GenerateReportRequest request = GenerateReportRequest.builder()
.buildKiteSetting(BuildKiteSetting.builder()
.deploymentEnvList(List.of(DeploymentEnvironment.builder().id("env1").repository("repo1").build()))
Expand Down Expand Up @@ -197,7 +205,7 @@ class FetchBuildKiteInfo {
@Test
void shouldReturnEmptyWhenDeploymentEnvListIsEmpty() {
GenerateReportRequest request = GenerateReportRequest.builder()
.buildKiteSetting(BuildKiteSetting.builder().deploymentEnvList(new ArrayList()).build())
.buildKiteSetting(BuildKiteSetting.builder().deploymentEnvList(new ArrayList<>()).build())
.metrics(new ArrayList<>())
.build();
FetchedData.BuildKiteData result = pipelineService.fetchBuildKiteInfo(request);
Expand All @@ -213,9 +221,6 @@ void shouldReturnValueWhenDeploymentEnvListIsNotEmpty() {
List<BuildKiteBuildInfo> fakeBuildKiteBuildInfos = List.of(BuildKiteBuildInfo.builder()
.creator(BuildKiteBuildInfo.Creator.builder().name("someone").build())
.build());
String startTime = "startTime";
String endTime = "endTime";
String token = "token";
GenerateReportRequest request = GenerateReportRequest.builder()
.buildKiteSetting(BuildKiteSetting.builder()
.token(token)
Expand Down Expand Up @@ -250,9 +255,6 @@ void shouldFilterCreatorByInputCrews() {
.creator(BuildKiteBuildInfo.Creator.builder().name("test-creator2").build())
.build(),
BuildKiteBuildInfo.builder().creator(null).build());
String startTime = "startTime";
String endTime = "endTime";
String token = "token";
GenerateReportRequest request = GenerateReportRequest.builder()
.buildKiteSetting(BuildKiteSetting.builder()
.deploymentEnvList(List.of(DeploymentEnvironment.builder().id("env1").repository("repo1").build()))
Expand Down Expand Up @@ -284,8 +286,6 @@ class GenerateCSVForPipelineWithCodebase {

@Test
void shouldReturnEmptyWhenDeploymentEnvironmentsIsEmpty() {
String startTime = "startTime";
String endTime = "endTime";
List<PipelineCSVInfo> result = pipelineService.generateCSVForPipelineWithCodebase(
CodebaseSetting.builder().build(), startTime, endTime, FetchedData.BuildKiteData.builder().build(),
Lists.list());
Expand All @@ -296,8 +296,6 @@ void shouldReturnEmptyWhenDeploymentEnvironmentsIsEmpty() {

@Test
void shouldReturnEmptyWhenNoBuildInfoFoundForDeploymentEnvironment() {
String startTime = "startTime";
String endTime = "endTime";
List<PipelineCSVInfo> result = pipelineService.generateCSVForPipelineWithCodebase(
CodebaseSetting.builder().build(), startTime, endTime,
FetchedData.BuildKiteData.builder().buildInfosList(List.of(Map.entry("env1", List.of()))).build(),
Expand All @@ -309,8 +307,6 @@ void shouldReturnEmptyWhenNoBuildInfoFoundForDeploymentEnvironment() {

@Test
void shouldReturnEmptyWhenPipelineStepsIsEmpty() {
String startTime = "startTime";
String endTime = "endTime";
List<BuildKiteBuildInfo> kiteBuildInfos = List.of(BuildKiteBuildInfo.builder().build());
when(buildKiteService.getPipelineStepNames(eq(kiteBuildInfos))).thenReturn(List.of());

Expand All @@ -327,8 +323,6 @@ void shouldReturnEmptyWhenPipelineStepsIsEmpty() {

@Test
void shouldReturnEmptyWhenBuildJobIsEmpty() {
String startTime = "startTime";
String endTime = "endTime";
List<BuildKiteBuildInfo> kiteBuildInfos = List.of(BuildKiteBuildInfo.builder().build());
when(buildKiteService.getPipelineStepNames(eq(kiteBuildInfos))).thenReturn(List.of("check"));
when(buildKiteService.getBuildKiteJob(any(), any(), any(), eq(startTime), eq(endTime))).thenReturn(null);
Expand All @@ -347,8 +341,6 @@ void shouldReturnEmptyWhenBuildJobIsEmpty() {

@Test
void shouldFilterOutInvalidBuildOfCommentIsEmtpy() {
String startTime = "startTime";
String endTime = "endTime";
List<BuildKiteBuildInfo> kiteBuildInfos = List.of(BuildKiteBuildInfo.builder().commit("").build());
when(buildKiteService.getPipelineStepNames(eq(kiteBuildInfos))).thenReturn(List.of("check"));
when(buildKiteService.getStepsBeforeEndStep(any(), any())).thenReturn(List.of("check"));
Expand All @@ -369,8 +361,6 @@ void shouldFilterOutInvalidBuildOfCommentIsEmtpy() {

@Test
void shouldGenerateValueWithoutCommitWhenCodebaseSettingIsEmpty() {
String startTime = "startTime";
String endTime = "endTime";
List<BuildKiteBuildInfo> kiteBuildInfos = List.of(BuildKiteBuildInfo.builder().commit("commit").build());
when(buildKiteService.getPipelineStepNames(eq(kiteBuildInfos))).thenReturn(List.of("check"));
when(buildKiteService.getStepsBeforeEndStep(any(), any())).thenReturn(List.of("check"));
Expand All @@ -393,8 +383,6 @@ void shouldGenerateValueWithoutCommitWhenCodebaseSettingIsEmpty() {

@Test
void shouldGenerateValueWithoutCommitWhenCodebaseSettingTokenIsEmpty() {
String startTime = "startTime";
String endTime = "endTime";
List<BuildKiteBuildInfo> kiteBuildInfos = List.of(BuildKiteBuildInfo.builder().commit("commit").build());
when(buildKiteService.getPipelineStepNames(eq(kiteBuildInfos))).thenReturn(List.of("check"));
when(buildKiteService.getStepsBeforeEndStep(any(), any())).thenReturn(List.of("check"));
Expand All @@ -418,8 +406,6 @@ void shouldGenerateValueWithoutCommitWhenCodebaseSettingTokenIsEmpty() {

@Test
void shouldGenerateValueWithoutCommitWhenCommitIdIsEmpty() {
String startTime = "startTime";
String endTime = "endTime";
List<BuildKiteBuildInfo> kiteBuildInfos = List.of(BuildKiteBuildInfo.builder().commit("commit").build());
when(buildKiteService.getPipelineStepNames(eq(kiteBuildInfos))).thenReturn(List.of("check"));
when(buildKiteService.getStepsBeforeEndStep(any(), any())).thenReturn(List.of("check"));
Expand All @@ -443,8 +429,6 @@ void shouldGenerateValueWithoutCommitWhenCommitIdIsEmpty() {

@Test
void shouldGenerateValueHasCommit() {
String startTime = "startTime";
String endTime = "endTime";
List<BuildKiteBuildInfo> kiteBuildInfos = List.of(BuildKiteBuildInfo.builder().commit("commit").build());
CommitInfo fakeCommitInfo = CommitInfo.builder().build();
when(buildKiteService.getPipelineStepNames(eq(kiteBuildInfos))).thenReturn(List.of("check"));
Expand Down Expand Up @@ -473,8 +457,6 @@ void shouldGenerateValueHasCommit() {

@Test
void shouldGenerateValueWithLeadTimeWhenLeadTimeExisting() {
String startTime = "startTime";
String endTime = "endTime";
List<BuildKiteBuildInfo> kiteBuildInfos = List.of(BuildKiteBuildInfo.builder().commit("commit").build());
CommitInfo fakeCommitInfo = CommitInfo.builder().build();
when(buildKiteService.getPipelineStepNames(eq(kiteBuildInfos))).thenReturn(List.of("check"));
Expand Down
Loading

0 comments on commit 9197e13

Please sign in to comment.