public async Task HandleShouldReturnOk() { // Arrange var id = Guid.NewGuid(); var version = 1; var userCreated = "anyUserCreated"; var operation = "TestOperation"; var operationalDepartment = "any"; var site = "any"; 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.CreateAsync(It.IsAny <WorkOrder>())).Returns(Task.CompletedTask); var workOrderRepository = workOrderRepositoryMock.Object; var identifierProviderMock = new Mock <IIdentifierProvider>(); identifierProviderMock.Setup(x => x.Generate()).Returns(id); var identifierProvider = identifierProviderMock.Object; var versionProviderMock = new Mock <IVersionProvider>(); versionProviderMock.Setup(x => x.Generate()).Returns(version); var versionProvider = versionProviderMock.Object; var dateTimeProviderMock = new Mock <IDateTimeProvider>(); dateTimeProviderMock.Setup(x => x.Parse(It.IsAny <string>())).Returns(DateTime.UtcNow); var dateTimeProvider = dateTimeProviderMock.Object; var command = new CreateWorkOrderCommand(userCreated, site, operation, operationalDepartment); var handler = new CreateWorkOrderCommandHandler(logAs, workOrderRepository, identifierProvider, versionProvider, dateTimeProvider); // Act var result = await handler.Handle(command, CancellationToken.None); // Assert result.IsFailure.Should().BeFalse(); result.Should().BeOfType(typeof(Result <Guid>)); }
public async Task HandleShouldReturnFailWhenDatabaseSpecificErrorOccurs() { // Arrange var id = Guid.NewGuid(); var version = 1; var userCreated = "anyUserCreated"; var operation = "TestOperation"; var operationalDepartment = "any"; var site = "any"; 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.CreateAsync(It.IsAny <WorkOrder>())).Throws <SomeDatabaseSpecificException>(); var workOrderRepository = workOrderRepositoryMock.Object; var identifierProviderMock = new Mock <IIdentifierProvider>(); identifierProviderMock.Setup(x => x.Generate()).Returns(id); var identifierProvider = identifierProviderMock.Object; var versionProviderMock = new Mock <IVersionProvider>(); versionProviderMock.Setup(x => x.Generate()).Returns(version); var versionProvider = versionProviderMock.Object; var dateTimeProviderMock = new Mock <IDateTimeProvider>(); dateTimeProviderMock.Setup(x => x.Parse(It.IsAny <string>())).Returns(DateTime.UtcNow); var dateTimeProvider = dateTimeProviderMock.Object; var command = new CreateWorkOrderCommand(userCreated, site, operation, operationalDepartment); var handler = new CreateWorkOrderCommandHandler(logAs, workOrderRepository, identifierProvider, versionProvider, dateTimeProvider); // Act var result = await handler.Handle(command, CancellationToken.None); // Assert result.IsFailure.Should().BeTrue(); result.Failures.Should().OnlyContain(x => x.Message == CustomFailures.CreateWorkOrderFailure); }
public void ShouldContainNoErrors() { // Arrange var userCreated = "anyUserCreated"; var operation = "AnyOperation"; var operationalDepartment = "any"; var site = "any"; var command = new CreateWorkOrderCommand(userCreated, site, operation, operationalDepartment); // Act var validationResult = _validator.Validate(command); var exists = validationResult.Errors.Count > 0; // Assert exists.Should().BeFalse(); }
public void ShouldHaveUserMandatoryWhenUserCreatedIsNull() { string userCreated = null; var operation = "AnyOperation"; var operationalDepartment = "any"; var site = "any"; var command = new CreateWorkOrderCommand(userCreated, site, operation, operationalDepartment); // Act var validationResult = _validator.Validate(command); var exists = validationResult.Errors.Any( a => a.PropertyName.Equals("UserCreated") && a.ErrorMessage.Contains(ValidationFailures.UserCreatedMandatory)); // Assert exists.Should().BeTrue(); }
public async Task ShouldUpdateWorkOrderTest() { // Arrange var createWorkOrderCommand = new CreateWorkOrderCommand { Address = "Address 123", Description = "Description 123", ObjectNumber = $"B{NextObjectNumber()}", StartDate = DateTimeOffset.Now.AddDays(1), EndDate = DateTimeOffset.Now.AddDays(5), Status = WorkOrderStatus.NotStarted, }; var createWorkOrderCommandResult = await SendRequestAsync(createWorkOrderCommand); // Act var updateWorkOrderCommand = new UpdateWorkOrderCommand( createWorkOrderCommandResult.Data.ObjectNumber, "Address 123 UPDATED", "Description 123 UPDATED", DateTimeOffset.Now.AddDays(1), DateTimeOffset.Now.AddDays(5), WorkOrderStatus.Started); var result = await SendRequestAsync(updateWorkOrderCommand); var workOrder = await FindAsync <WorkOrder>(result.Data.ObjectNumber); // Assert result.Success.ShouldBeTrue(); result.Message.ShouldBeEmpty(); workOrder.ObjectNumber.ShouldBe(updateWorkOrderCommand.ObjectNumber); workOrder.Address.ShouldBe(updateWorkOrderCommand.Address); workOrder.Description.ShouldBe(updateWorkOrderCommand.Description); workOrder.StartDate.ShouldBe(updateWorkOrderCommand.StartDate); workOrder.EndDate.ShouldBe(updateWorkOrderCommand.EndDate); workOrder.Status.ShouldBe(updateWorkOrderCommand.Status); }
public async Task ShouldCreateWorkOrder() { // Arrange var command = new CreateWorkOrderCommand( $"B{NextObjectNumber()}", "Address 123", "Description 123", DateTimeOffset.Now, DateTimeOffset.Now.AddDays(5), WorkOrderStatus.NotStarted); // Act var commandResult = await SendRequestAsync(command); var workOrder = await FindAsync <WorkOrder>(commandResult.Data.ObjectNumber); // Assert workOrder.ShouldNotBeNull(); workOrder.ObjectNumber.ShouldBe(command.ObjectNumber); workOrder.Address.ShouldBe(command.Address); workOrder.Description.ShouldBe(command.Description); }
public CreateWorkOrderCommand Map(CreateWorkOrderRequest request) { var result = new CreateWorkOrderCommand(request.BodyUserCreated, request.BodySite, request.BodyOperation, request.BodyDepartment); return(result); }
public async Task <IActionResult> Post([FromBody] CreateWorkOrderCommand command) { var result = await _mediator.Send(command); return(CreatedAtAction(nameof(GetByObjectNumber), new { Id = result.Data.ObjectNumber }, result)); }