Beispiel #1
0
        public async Task <IActionResult> Update([FromRoute] string id)
        {
            var command = new DeleteWorkOrderCommand(id);
            var result  = await _mediator.Send(command);

            return(result.Success ? (IActionResult)Ok(result) : NotFound());
        }
Beispiel #2
0
        public async Task HandleShouldReturnOk()
        {
            // Arrange
            var id      = Guid.NewGuid();
            var version = 1;

            var logAsMock = new Mock <ILogAs>();

            logAsMock.Setup(x => x.Error(It.IsAny <string>(), It.IsAny <Exception>()));
            var logAs = logAsMock.Object;

            var workOrderRepositoryMock = new Mock <IWorkOrderWriteRepository>();

            workOrderRepositoryMock.Setup(x => x.DeleteAsync(id, version)).Returns(Task.CompletedTask);
            var workOrderRepository = workOrderRepositoryMock.Object;

            var command = new DeleteWorkOrderCommand(id, version);

            var handler = new DeleteWorkOrderCommandHandler(logAs, workOrderRepository);

            // Act
            var result = await handler.Handle(command, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeFalse();
            result.Should().BeOfType(typeof(Result));
        }
Beispiel #3
0
        public async Task HandleShouldReturnFailWhenNotFound()
        {
            // Arrange
            var id      = Guid.NewGuid();
            var version = 1;

            var logAsMock = new Mock <ILogAs>();

            logAsMock.Setup(x => x.Error(It.IsAny <string>(), It.IsAny <Exception>()));
            var logAs = logAsMock.Object;

            var workOrderRepositoryMock = new Mock <IWorkOrderWriteRepository>();

            workOrderRepositoryMock.Setup(x => x.DeleteAsync(id, version)).Throws <EntityNotFoundDbException>();
            var workOrderRepository = workOrderRepositoryMock.Object;

            var command = new DeleteWorkOrderCommand(id, version);

            var handler = new DeleteWorkOrderCommandHandler(logAs, workOrderRepository);

            // Act
            var result = await handler.Handle(command, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeTrue();
        }
Beispiel #4
0
        public async Task HandleShouldReturnFailWhenDatabaseSpecificErrorOccurs()
        {
            var id      = Guid.NewGuid();
            var version = 1;

            var logAsMock = new Mock <ILogAs>();

            logAsMock.Setup(x => x.Error(It.IsAny <string>(), It.IsAny <Exception>()));
            var logAs = logAsMock.Object;

            var workOrderRepositoryMock = new Mock <IWorkOrderWriteRepository>();

            workOrderRepositoryMock.Setup(x => x.DeleteAsync(id, version)).Throws <SomeDatabaseSpecificException>();
            var workOrderRepository = workOrderRepositoryMock.Object;

            var command = new DeleteWorkOrderCommand(id, version);

            var handler = new DeleteWorkOrderCommandHandler(logAs, workOrderRepository);

            // Act
            var result = await handler.Handle(command, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeTrue();
            result.Failures.Should().OnlyContain(x => x.Message == CustomFailures.DeleteWorkOrderFailure);
        }
Beispiel #5
0
        public async Task HandleShouldReturnFailWhenOutdatedVersion()
        {
            // Arrange
            var id      = Guid.NewGuid();
            var version = 1;

            var logAsMock = new Mock <ILogAs>();

            logAsMock.Setup(x => x.Error(It.IsAny <string>(), It.IsAny <Exception>()));
            var logAs = logAsMock.Object;

            var workOrderRepositoryMock = new Mock <IWorkOrderWriteRepository>();

            workOrderRepositoryMock.Setup(x => x.DeleteAsync(id, version)).Throws <EntityVersionDbException>();
            var workOrderRepository = workOrderRepositoryMock.Object;

            var command = new DeleteWorkOrderCommand(id, version);

            var handler = new DeleteWorkOrderCommandHandler(logAs, workOrderRepository);

            // Act
            var result = await handler.Handle(command, CancellationToken.None);

            // Assert
            result.IsFailure.Should().BeTrue();
            result.Failures.Should().OnlyContain(x => x.Code == HandlerFaultCode.NotMet.Name &&
                                                 x.Message == HandlerFailures.NotMet &&
                                                 x.Target == "version");
        }
Beispiel #6
0
        public DeleteWorkOrderCommand Map(DeleteWorkOrderRequest request)
        {
            var id = new Guid(request.RouteId);

            var version = ToVersion(request.HeaderIfMatch);

            var result = new DeleteWorkOrderCommand(id, version);

            return(result);
        }
Beispiel #7
0
        public void ShouldContainNoErrors()
        {
            // Arrange
            var command = new DeleteWorkOrderCommand(id: Guid.NewGuid(), version: 0);

            // Act
            var validationResult = _validator.Validate(command);
            var exists           = validationResult.Errors.Count > 0;

            // Assert
            exists.Should().BeFalse();
        }
Beispiel #8
0
        public void ShouldHaveUserNotFoundCustomFailureWhenIdIsGuidEmpty()
        {
            // Arrange
            var command = new DeleteWorkOrderCommand(id: Guid.Empty, version: 0);

            // Act
            var validationResult = _validator.Validate(command);
            var exists           =
                validationResult.Errors.Any(
                    a => a.PropertyName.Equals("Id") && a.ErrorMessage.Contains(CustomFailures.WorkOrderNotFound));

            // Assert
            exists.Should().BeTrue();
        }
Beispiel #9
0
        public async Task ShouldDeleteWorkOrder()
        {
            // Arrange
            var workOrder = new WorkOrder
            {
                Address      = "Address 123",
                Description  = "Description 123",
                ObjectNumber = $"B{NextObjectNumber()}",
                StartDate    = DateTimeOffset.Now,
                EndDate      = DateTimeOffset.Now.AddDays(5),
                Status       = WorkOrderStatus.NotStarted,
            };

            await InsertAsync(workOrder);

            var deleteWorkOrderCommand = new DeleteWorkOrderCommand(workOrder.ObjectNumber);
            var query = new GetWorkOrderByIdQuery(workOrder.ObjectNumber);

            // Act
            var getBeforeDeletion = await SendRequestAsync(query);

            var deleteCommandResult = await SendRequestAsync(deleteWorkOrderCommand);

            var getQueryResult = await SendRequestAsync(query);

            // Assert
            // Asserting before delete command
            getBeforeDeletion.Success.ShouldBeTrue();
            deleteCommandResult.Data.ShouldNotBeNull();
            deleteCommandResult.Message.ShouldBeNullOrEmpty();

            // Asserting delete command
            deleteCommandResult.Success.ShouldBeTrue();
            deleteCommandResult.Data.ShouldNotBeNull();
            deleteCommandResult.Message.ShouldBeNullOrEmpty();

            // Asserting query command
            getQueryResult.Data.ShouldBeNull();
            getQueryResult.Message.ShouldNotBeNullOrEmpty();
            getQueryResult.Success.ShouldBeFalse();
        }