public async Task SyncRecipientsOrchestratorGetAllUsersTest() { // Arrange NotificationDataEntity notificationDataEntity = new NotificationDataEntity() { Id = "notificationId", AllUsers = true, }; var recipientsInfo = new RecipientsInfo(notificationDataEntity.Id) { HasRecipientsPendingInstallation = true, }; recipientsInfo.BatchKeys.Add("batchKey"); this.mockContext .Setup(x => x.GetInput <NotificationDataEntity>()) .Returns(notificationDataEntity); this.mockContext .Setup(x => x.CallActivityWithRetryAsync(It.IsAny <string>(), It.IsAny <RetryOptions>(), It.IsAny <object>())) .Returns(Task.CompletedTask); this.mockContext .Setup(x => x.CallActivityWithRetryAsync <RecipientsInfo>(It.IsAny <string>(), It.IsAny <RetryOptions>(), It.IsAny <NotificationDataEntity>())) .ReturnsAsync(recipientsInfo); // Act Func <Task> task = async() => await SyncRecipientsOrchestrator.RunOrchestrator(this.mockContext.Object, this.mockLogger.Object); // Assert await task.Should().NotThrowAsync <ArgumentException>(); this.mockContext.Verify(x => x.CallActivityWithRetryAsync <RecipientsInfo>(It.Is <string>(x => x.Equals(FunctionNames.SyncAllUsersActivity)), It.IsAny <RetryOptions>(), It.Is <NotificationDataEntity>(x => x.AllUsers)), Times.Once); // All Users flag is true this.mockContext.Verify(x => x.CallActivityWithRetryAsync(It.Is <string>(x => x.Equals(FunctionNames.UpdateNotificationStatusActivity)), It.IsAny <RetryOptions>(), It.IsAny <object>()), Times.Once); }
public async Task SyncRecipientsOrchestratorGetMembersOfGeneralChannelTest() { // Arrange NotificationDataEntity notificationDataEntity = new NotificationDataEntity() { Id = "notificationId", AllUsers = false, Rosters = new List <string>(), Groups = new List <string>(), Teams = new List <string>() { "TestTeamChannel" }, }; this.mockContext .Setup(x => x.GetInput <NotificationDataEntity>()) .Returns(notificationDataEntity); this.mockContext .Setup(x => x.CallActivityWithRetryAsync(It.IsAny <string>(), It.IsAny <RetryOptions>(), It.IsAny <object>())) .Returns(Task.CompletedTask); // Act Func <Task> task = async() => await SyncRecipientsOrchestrator.RunOrchestrator(this.mockContext.Object, this.mockLogger.Object); // Assert await task.Should().NotThrowAsync <ArgumentException>(); this.mockContext .Verify(x => x.CallActivityWithRetryAsync <RecipientsInfo>(It.Is <string>(x => x.Equals(FunctionNames.SyncTeamsActivity)), It.IsAny <RetryOptions>(), It.IsAny <object>()), Times.Exactly(1)); this.mockContext.Verify(x => x.CallActivityWithRetryAsync(It.Is <string>(x => x.Equals(FunctionNames.UpdateNotificationStatusActivity)), It.IsAny <RetryOptions>(), It.IsAny <object>()), Times.Once); }
public async Task SyncRecipientsOrchestratorGetAllUsersTest() { // Arrange NotificationDataEntity notificationDataEntity = new NotificationDataEntity() { Id = "notificationId", AllUsers = true }; mockContext .Setup(x => x.GetInput <NotificationDataEntity>()) .Returns(notificationDataEntity); mockContext .Setup(x => x.CallActivityWithRetryAsync(It.IsAny <string>(), It.IsAny <RetryOptions>(), It.IsAny <object>())) .Returns(Task.CompletedTask); mockContext .Setup(x => x.CallActivityWithRetryAsync(It.IsAny <string>(), It.IsAny <RetryOptions>(), It.IsAny <NotificationDataEntity>())) .Returns(Task.CompletedTask); // Act Func <Task> task = async() => await SyncRecipientsOrchestrator.RunOrchestrator(mockContext.Object, mockLogger.Object); // Assert await task.Should().NotThrowAsync <ArgumentException>(); mockContext.Verify(x => x.CallActivityWithRetryAsync(It.Is <string>(x => x.Equals(FunctionNames.SyncAllUsersActivity)), It.IsAny <RetryOptions>(), It.Is <NotificationDataEntity>(x => x.AllUsers))); // Allusers flag is true mockContext.Verify(x => x.CallActivityWithRetryAsync(It.Is <string>(x => x.Equals(FunctionNames.UpdateNotificationStatusActivity)), It.IsAny <RetryOptions>(), It.IsAny <object>())); }
public async Task SyncRecipientsOrchestratorGetMembersOfSpecifictTeamTest() { // Arrange NotificationDataEntity notificationDataEntity = new NotificationDataEntity() { Id = "notificationId", AllUsers = false, Rosters = new List <string>() { "roaster", "roaster1" } }; mockContext .Setup(x => x.GetInput <NotificationDataEntity>()) .Returns(notificationDataEntity); mockContext .Setup(x => x.CallActivityWithRetryAsync(It.IsAny <string>(), It.IsAny <RetryOptions>(), It.IsAny <object>())) .Returns(Task.CompletedTask); // Act Func <Task> task = async() => await SyncRecipientsOrchestrator.RunOrchestrator(mockContext.Object, mockLogger.Object); // Assert await task.Should().NotThrowAsync <ArgumentException>(); mockContext.Verify(x => x.CallActivityWithRetryAsync(It.Is <string>(x => x.Equals(FunctionNames.SyncTeamMembersActivity)), It.IsAny <RetryOptions>() , It.IsAny <object>()), Times.Exactly(notificationDataEntity.Rosters.Count())); }
public async Task SyncRecipientsOrchestratorForInvalidAudienceSelectionTest() { // Arrange NotificationDataEntity notificationDataEntity = new NotificationDataEntity() { Id = "notificationId", AllUsers = false, Rosters = new List <string>(), Groups = new List <string>(), Teams = new List <string>(), CsvUsers = string.Empty, }; this.mockContext.Setup(x => x.GetInput <NotificationDataEntity>()).Returns(notificationDataEntity); this.mockContext.Setup(x => x.CallActivityWithRetryAsync(It.IsAny <string>(), It.IsAny <RetryOptions>(), It.IsAny <object>())) .Returns(Task.CompletedTask); // Act Func <Task> task = async() => await SyncRecipientsOrchestrator.RunOrchestrator(this.mockContext.Object, this.mockLogger.Object); // Assert await task.Should().ThrowAsync <ArgumentException>($"Invalid audience select for notification id: {notificationDataEntity.Id}"); this.mockContext.Verify(x => x.CallActivityWithRetryAsync(It.Is <string>(x => x.Equals(FunctionNames.UpdateNotificationStatusActivity)), It.IsAny <RetryOptions>(), It.IsAny <object>()), Times.Once); }