示例#1
0
        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>));
        }
示例#2
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
        public CreateWorkOrderCommand Map(CreateWorkOrderRequest request)
        {
            var result = new CreateWorkOrderCommand(request.BodyUserCreated, request.BodySite, request.BodyOperation, request.BodyDepartment);

            return(result);
        }
示例#8
0
        public async Task <IActionResult> Post([FromBody] CreateWorkOrderCommand command)
        {
            var result = await _mediator.Send(command);

            return(CreatedAtAction(nameof(GetByObjectNumber), new { Id = result.Data.ObjectNumber }, result));
        }