Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 7 commits into from
Feb 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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")
Comment on lines +14 to +19
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

duplicated code with line 29 ~ line 33

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

different types of object definitions, do not know how to repeat

.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();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for the test description shouldCallCsvServiceToGenerateScvInfo -> shouldCallCsvServiceToGenerateCSVInfo, yes?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is when for this test case

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

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
Loading