Skip to content

Commit

Permalink
Merge pull request #1188 from PublicisSapient/DTS-38402_duplicate_kan…
Browse files Browse the repository at this point in the history
…ban_issues

Dts 38402 duplicate kanban issues (10.1.0
  • Loading branch information
Chittauri authored Aug 5, 2024
2 parents bcd003f + 92d8ded commit a780960
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 10 deletions.
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;
}
}

0 comments on commit a780960

Please sign in to comment.