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()); }
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)); }
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(); }
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); }
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"); }
public DeleteWorkOrderCommand Map(DeleteWorkOrderRequest request) { var id = new Guid(request.RouteId); var version = ToVersion(request.HeaderIfMatch); var result = new DeleteWorkOrderCommand(id, version); return(result); }
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(); }
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(); }
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(); }