public void AssignTicketCommand_WithoutAnyInput_ShouldThrowValidationException()
        {
            var command = new AssignTicketCommand();

            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <ValidationException>();
        }
        public async Task AssignTicketCommand_WithShouldRemovePreviousUsersFlagSetToFalse_ShouldAddNewUserToConversationUsersAndNotDisableAnyPreviousUser()
        {
            var createdTicketId = await SeedSampleTicket(false);

            var operator2UserId = await RunAsOperator2UserAsync();

            var command = new AssignTicketCommand
            {
                ConversationId            = createdTicketId,
                UserId                    = operator2UserId,
                ShouldRemovePreviousUsers = false
            };

            await SendAsync(command);

            var context = GetContext();

            var conversationUsers = await context.ConversationUsers.Where(x => x.ConversationId == createdTicketId).ToListAsync();

            conversationUsers.Count.Should().Be(3);

            conversationUsers.Count(x => x.IsDisabled).Should().Be(0);

            conversationUsers.Any(x => x.UserId == operator2UserId).Should().BeTrue();
        }
        public async Task AssignTicketCommand_WithShouldRemovePreviousUsersFlag_ShouldAddNewUserToConversationUsersAndSetIsDisabledForPreviousUsers()
        {
            var createdTicketId = await SeedSampleTicket(false);

            var operator2UserId = await RunAsOperator2UserAsync();

            var command = new AssignTicketCommand
            {
                ConversationId            = createdTicketId,
                UserId                    = operator2UserId,
                ShouldRemovePreviousUsers = true
            };

            await SendAsync(command);

            var context = GetContext();

            var conversationUsers = await context.ConversationUsers.Where(x => x.ConversationId == createdTicketId).ToListAsync();

            conversationUsers.Count.Should().Be(3);

            conversationUsers.Count(x => x.IsDisabled).Should().Be(2);

            conversationUsers.SingleOrDefault(x => x.IsDisabled == false).UserId.Should().Be(operator2UserId);
        }
Пример #4
0
        public async Task <ActionResult> Assign(Guid id, AssignTicketCommand command)
        {
            if (id != command.ConversationId)
            {
                return(BadRequest());
            }

            await Mediator.Send(command);

            return(NoContent());
        }
        public async Task AssignTicketCommand_WithoutUserId_ShouldThrowValidationException()
        {
            var createdTicketId = await SeedSampleTicket();

            var command = new AssignTicketCommand
            {
                ShouldRemovePreviousUsers = false,
                ConversationId            = createdTicketId
            };

            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <ValidationException>();
        }
        public async Task AssignTicketCommand_WithInvalidConversationId_ShouldThrowNotFoundException()
        {
            var defaultUserId = await RunAsDefaultUserAsync();

            var invalidConversationId = new Guid("ef1dc766-98f5-424f-ad4c-0fb42a690140");

            var command = new AssignTicketCommand
            {
                ConversationId            = invalidConversationId,
                UserId                    = defaultUserId,
                ShouldRemovePreviousUsers = false
            };

            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <NotFoundException>();
        }
        public async Task AssignTicketCommand_ForClosedTicket_ShouldThrowException()
        {
            var defaultUserId = await RunAsDefaultUserAsync();

            var createdTicketId = await SeedSampleTicket(true);

            var command = new AssignTicketCommand
            {
                ConversationId            = createdTicketId,
                UserId                    = defaultUserId,
                ShouldRemovePreviousUsers = false
            };

            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <Exception>().Which.Message.Should().Be("You can't assign new user to closed ticket");
        }
        public async Task AssignTicketCommand_WithDifferentUserThanAdmin_ShouldThrowForbiddenAccessException()
        {
            var defaultUserId = await RunAsDefaultUserAsync();

            var createdTicketId = await SeedSampleTicket();

            await RunAsAdministratorAsync();

            var command = new AssignTicketCommand
            {
                ConversationId            = createdTicketId,
                UserId                    = defaultUserId,
                ShouldRemovePreviousUsers = false
            };

            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <ForbiddenAccessException>();
        }