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

Dts 38402 duplicate kanban issues (10.1.0 #1188

Merged
merged 4 commits into from
Aug 5, 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 @@ -69,28 +69,32 @@ public class IssueKanbanWriter implements ItemWriter<CompositeResult> {
*/
@Override
public void write(Chunk<? extends CompositeResult> kanbanCompositeResults) throws Exception {
List<KanbanJiraIssue> jiraIssues = new ArrayList<>();
List<KanbanIssueCustomHistory> kanbanIssueCustomHistory = new ArrayList<>();
Map<String, KanbanJiraIssue> jiraIssues = new HashMap<>();
Map<String, KanbanIssueCustomHistory> kanbanIssueCustomHistory = new HashMap<>();
Set<KanbanAccountHierarchy> accountHierarchies = new HashSet<>();
Map<String, AssigneeDetails> assigneesToSave = new HashMap<>();
Set<Assignee> assignee = new HashSet<>();

for (CompositeResult kanbanCompositeResult : kanbanCompositeResults) {
if (null != kanbanCompositeResult.getKanbanJiraIssue()) {
jiraIssues.add(kanbanCompositeResult.getKanbanJiraIssue());
String key = kanbanCompositeResult.getKanbanJiraIssue().getNumber() + ","
+ kanbanCompositeResult.getKanbanJiraIssue().getBasicProjectConfigId();
jiraIssues.putIfAbsent(key, kanbanCompositeResult.getKanbanJiraIssue());
}
if (null != kanbanCompositeResult.getKanbanIssueCustomHistory()) {
kanbanIssueCustomHistory.add(kanbanCompositeResult.getKanbanIssueCustomHistory());
String key = kanbanCompositeResult.getKanbanIssueCustomHistory().getStoryID() + ","
+ kanbanCompositeResult.getKanbanIssueCustomHistory().getBasicProjectConfigId();
kanbanIssueCustomHistory.putIfAbsent(key, kanbanCompositeResult.getKanbanIssueCustomHistory());
}
if (CollectionUtils.isNotEmpty(kanbanCompositeResult.getKanbanAccountHierarchies())) {
accountHierarchies.addAll(kanbanCompositeResult.getKanbanAccountHierarchies());
}
addAssignees(assigneesToSave, assignee, kanbanCompositeResult);
}
if (CollectionUtils.isNotEmpty(jiraIssues)) {
if (MapUtils.isNotEmpty(jiraIssues)) {
writeKanbanJiraItem(jiraIssues);
}
if (CollectionUtils.isNotEmpty(kanbanIssueCustomHistory)) {
if (MapUtils.isNotEmpty(kanbanIssueCustomHistory)) {
writeKanbanJiraHistory(kanbanIssueCustomHistory);
}
if (CollectionUtils.isNotEmpty(accountHierarchies)) {
Expand Down Expand Up @@ -120,14 +124,16 @@ private static void addAssignees(Map<String, AssigneeDetails> assigneesToSave, S
}
}

public void writeKanbanJiraItem(List<KanbanJiraIssue> jiraItems) {
public void writeKanbanJiraItem(Map<String, KanbanJiraIssue> jiraItems) {
log.info("Writing issues to kanban_jira_Issue Collection");
kanbanJiraIssueRepository.saveAll(jiraItems);
List<KanbanJiraIssue> jiraIssues = new ArrayList<>(jiraItems.values());
kanbanJiraIssueRepository.saveAll(jiraIssues);
}

public void writeKanbanJiraHistory(List<KanbanIssueCustomHistory> kanbanIssueCustomHistory) {
public void writeKanbanJiraHistory(Map<String, KanbanIssueCustomHistory> kanbanIssueCustomHistory) {
log.info("Writing issues to kanban_jira_Issue_custom_history Collection");
kanbanJiraIssueHistoryRepository.saveAll(kanbanIssueCustomHistory);
List<KanbanIssueCustomHistory> jiraIssueCustomHistories = new ArrayList<>(kanbanIssueCustomHistory.values());
kanbanJiraIssueHistoryRepository.saveAll(jiraIssueCustomHistories);
}

public void writeKanbanAccountHierarchy(Set<KanbanAccountHierarchy> accountHierarchies) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,18 @@ public void testWrite() throws Exception {
}


@Test
public void testWriteDuplicates() throws Exception {
// Mock data
Chunk<CompositeResult> kanbanCompositeResults = createDuplicateMockKanbanCompositeResults();

// Invoke the method to be tested
issueKanbanWriter.write(kanbanCompositeResults);

// Verify interactions with repositories
verify(kanbanJiraIssueRepository, times(1)).saveAll(verifyMockJiraItems());
}

// Helper methods to create mock data for testing
private Chunk<CompositeResult> createMockKanbanCompositeResults() {
CompositeResult compositeResult = new CompositeResult();
Expand Down Expand Up @@ -129,4 +141,92 @@ private Map<String, AssigneeDetails> createMockAssigneesToSave() {
// Create mock AssigneeDetails objects and add them to the map
return assigneesToSave;
}

// Helper methods to create Duplicate mock data for testing
private Chunk<CompositeResult> createDuplicateMockKanbanCompositeResults() {
CompositeResult compositeResult = new CompositeResult();
CompositeResult compositeResultTwo = new CompositeResult();
compositeResult.setKanbanJiraIssue(createDuplicateMockJiraItems().get(0));
compositeResultTwo.setKanbanJiraIssue(createDuplicateMockJiraItems().get(1));
compositeResult.setKanbanAccountHierarchies((createDuplicateMockAccountHierarchies()));
compositeResultTwo.setKanbanAccountHierarchies((createDuplicateMockAccountHierarchies()));
compositeResult.setAssigneeDetails(createDuplicateMockAssigneesToSave().get("0"));
compositeResultTwo.setAssigneeDetails(createDuplicateMockAssigneesToSave().get("1"));
compositeResult.setKanbanIssueCustomHistory(createDuplicateMockKanbanIssueCustomHistory().get(0));
compositeResultTwo.setKanbanIssueCustomHistory(createDuplicateMockKanbanIssueCustomHistory().get(1));
Chunk<CompositeResult> kanbanCompositeResults = new Chunk<>();
kanbanCompositeResults.add(compositeResult);
kanbanCompositeResults.add(compositeResultTwo);
return kanbanCompositeResults;
}

private List<KanbanJiraIssue> createDuplicateMockJiraItems() {
KanbanJiraIssue kanbanJiraIssue = new KanbanJiraIssue();
kanbanJiraIssue.setId(new ObjectId("63bfa0f80b28191677615735"));
kanbanJiraIssue.setNumber("123");
kanbanJiraIssue.setBasicProjectConfigId("123");
KanbanJiraIssue kanbanJiraIssueTwo = new KanbanJiraIssue();
kanbanJiraIssueTwo.setId(new ObjectId("63bfa0f80b28191677615736"));
kanbanJiraIssueTwo.setNumber("123");
kanbanJiraIssueTwo.setBasicProjectConfigId("123");
List<KanbanJiraIssue> jiraItems = new ArrayList<>();
jiraItems.add(kanbanJiraIssue);
jiraItems.add(kanbanJiraIssueTwo);
// Create mock KanbanJiraIssue objects and add them to the list
return jiraItems;
}
private List<KanbanJiraIssue> verifyMockJiraItems() {
KanbanJiraIssue kanbanJiraIssue = new KanbanJiraIssue();
kanbanJiraIssue.setId(new ObjectId("63bfa0f80b28191677615735"));
kanbanJiraIssue.setNumber("123");
kanbanJiraIssue.setBasicProjectConfigId("123");
List<KanbanJiraIssue> jiraItems = new ArrayList<>();
jiraItems.add(kanbanJiraIssue);
// Create mock KanbanJiraIssue objects and add them to the list
return jiraItems;
}
private List<KanbanIssueCustomHistory> createDuplicateMockKanbanIssueCustomHistory() {
KanbanIssueCustomHistory kanbanIssueCustomHistory = new KanbanIssueCustomHistory();
kanbanIssueCustomHistory.setId(new ObjectId("63bfa0f80b28191677615735"));
List<KanbanIssueCustomHistory> kanbanIssueCustomHistoryList = new ArrayList<>();
kanbanIssueCustomHistoryList.add(kanbanIssueCustomHistory);
KanbanIssueCustomHistory kanbanIssueCustomHistoryTwo = new KanbanIssueCustomHistory();
kanbanIssueCustomHistoryTwo.setId(new ObjectId("63bfa0f80b28191677615736"));
kanbanIssueCustomHistoryList.add(kanbanIssueCustomHistoryTwo);
// Create mock KanbanIssueCustomHistory objects and add them to the list
return kanbanIssueCustomHistoryList;
}
private Map<String, AssigneeDetails> createDuplicateMockAssigneesToSave() {
AssigneeDetails assigneeDetails = new AssigneeDetails();
AssigneeDetails assigneeDetailsTwo = new AssigneeDetails();
Assignee assignee = new Assignee();
Set<Assignee> assignees = new HashSet<>();
assignees.add(assignee);
assigneeDetails.setBasicProjectConfigId("63bfa0f80b28191677615735");
assigneeDetails.setAssignee(assignees);
Assignee assigneeTwo = new Assignee();
assigneeTwo.setAssigneeId("987");
Set<Assignee> assigneesTwo = new HashSet<>();
assigneesTwo.add(assigneeTwo);
assigneeDetailsTwo.setBasicProjectConfigId("63bfa0f80b28191677615736");
assigneeDetailsTwo.setAssignee(assigneesTwo);
Map<String, AssigneeDetails> assigneesToSave = new HashMap<>();
assigneesToSave.put("0", assigneeDetails);
assigneesToSave.put("1", assigneeDetailsTwo);
// Create mock AssigneeDetails objects and add them to the map
return assigneesToSave;
}
private Set<KanbanAccountHierarchy> createDuplicateMockAccountHierarchies() {
KanbanAccountHierarchy kanbanAccountHierarchy = new KanbanAccountHierarchy();
kanbanAccountHierarchy.setId(new ObjectId("63bfa0f80b28191677615735"));
kanbanAccountHierarchy.setNodeId("123");
Set<KanbanAccountHierarchy> accountHierarchies = new HashSet<>();
accountHierarchies.add(kanbanAccountHierarchy);
KanbanAccountHierarchy kanbanAccountHierarchyTwo = new KanbanAccountHierarchy();
kanbanAccountHierarchyTwo.setId(new ObjectId("63bfa0f80b28191677615736"));
kanbanAccountHierarchyTwo.setNodeId("123");
accountHierarchies.add(kanbanAccountHierarchyTwo);
// Create mock KanbanAccountHierarchy objects and add them to the set
return accountHierarchies;
}
}
Loading