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()));
        }
Exemplo n.º 5
0
        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);
        }