private MyNewIssuesNotification createMyNewIssuesNotificationMock() { MyNewIssuesNotification notification = mock(MyNewIssuesNotification.class); when(notification.setAssignee(any(UserDto.class))).thenReturn(notification); when(notification.setProject(any(), any(), any(), any())).thenReturn(notification); when(notification.setProjectVersion(any())).thenReturn(notification); when(notification.setAnalysisDate(any())).thenReturn(notification); when(notification.setStatistics(any(), any())).thenReturn(notification); when(notification.setDebt(any())).thenReturn(notification); return notification; }
public MyNewIssuesNotification newMyNewIssuesNotification() { return new MyNewIssuesNotification(dbClient, durations); }
public MyNewIssuesNotification setAssignee(@Nullable UserDto assignee) { if (assignee == null) { return this; } setFieldValue(FIELD_ASSIGNEE, assignee.getLogin()); return this; }
private void sendMyNewIssuesNotification(NewIssuesStatistics statistics, Component project, long analysisDate, NotificationStatistics notificationStatistics) { Map<String, UserDto> userDtoByUuid = loadUserDtoByUuid(statistics); statistics.getAssigneesStatistics().entrySet() .stream() .filter(e -> e.getValue().hasIssuesOnLeak()) .forEach(e -> { String assigneeUuid = e.getKey(); NewIssuesStatistics.Stats assigneeStatistics = e.getValue(); MyNewIssuesNotification myNewIssuesNotification = newIssuesNotificationFactory .newMyNewIssuesNotification() .setAssignee(userDtoByUuid.get(assigneeUuid)); myNewIssuesNotification .setProject(project.getKey(), project.getName(), getBranchName(), getPullRequest()) .setProjectVersion(project.getProjectAttributes().getVersion()) .setAnalysisDate(new Date(analysisDate)) .setStatistics(project.getName(), assigneeStatistics) .setDebt(Duration.create(assigneeStatistics.effort().getOnLeak())); notificationStatistics.myNewIssuesDeliveries += service.deliver(myNewIssuesNotification); notificationStatistics.myNewIssues++; }); }
@Test public void set_assignee() { UserDto user = UserTesting.newUserDto(); underTest.setAssignee(user); assertThat(underTest.getFieldValue(FIELD_ASSIGNEE)).isEqualTo(user.getLogin()); }
@Test public void set_with_a_specific_type() { assertThat(underTest.getType()).isEqualTo(MyNewIssuesNotification.MY_NEW_ISSUES_NOTIF_TYPE); } }
private void sendNewIssuesNotificationToAssignees(NewIssuesStatistics statistics, Component project, long analysisDate) { Map<String, UserDto> userDtoByUuid = loadUserDtoByUuid(statistics); statistics.getAssigneesStatistics().entrySet() .stream() .filter(e -> e.getValue().hasIssuesOnLeak()) .forEach(e -> { String assigneeUuid = e.getKey(); NewIssuesStatistics.Stats assigneeStatistics = e.getValue(); MyNewIssuesNotification myNewIssuesNotification = newIssuesNotificationFactory .newMyNewIssuesNotification() .setAssignee(userDtoByUuid.get(assigneeUuid)); myNewIssuesNotification .setProject(project.getPublicKey(), project.getName(), getBranchName(), getPullRequest()) .setProjectVersion(project.getReportAttributes().getVersion()) .setAnalysisDate(new Date(analysisDate)) .setStatistics(project.getName(), assigneeStatistics) .setDebt(Duration.create(assigneeStatistics.effort().getOnLeak())); service.deliver(myNewIssuesNotification); }); }
@Test public void send_new_issues_notification_to_user() { UserDto user = db.users().insertUser(); issueCache.newAppender().append( new DefaultIssue().setType(randomRuleType).setEffort(ISSUE_DURATION).setAssigneeUuid(user.getUuid()) .setCreationDate(new Date(ANALYSE_DATE))) .close(); when(notificationService.hasProjectSubscribersForTypes(eq(PROJECT.getUuid()), any())).thenReturn(true); TestComputationStepContext context = new TestComputationStepContext(); underTest.execute(context); verify(notificationService).deliver(newIssuesNotificationMock); verify(notificationService).deliver(myNewIssuesNotificationMock); verify(myNewIssuesNotificationMock).setAssignee(any(UserDto.class)); verify(myNewIssuesNotificationMock).setProject(PROJECT.getKey(), PROJECT.getName(), null, null); verify(myNewIssuesNotificationMock).setAnalysisDate(new Date(ANALYSE_DATE)); verify(myNewIssuesNotificationMock).setStatistics(eq(PROJECT.getName()), any(NewIssuesStatistics.Stats.class)); verify(myNewIssuesNotificationMock).setDebt(ISSUE_DURATION); verifyStatistics(context, 1, 1, 0); }
public MyNewIssuesNotification setAssignee(@Nullable UserDto assignee) { if (assignee == null) { return this; } setFieldValue(FIELD_ASSIGNEE, assignee.getLogin()); return this; }
public MyNewIssuesNotification newMyNewIssuesNotification() { return new MyNewIssuesNotification(dbClient, durations); }