Exemplo n.º 1
0
        public async Task <ResultModel <TraceItemModel> > CreateTraceAsync(CreateTraceItemModel createTraceItemModel)
        {
            try
            {
                var createTraceDto = new CreateTraceDto
                {
                    Title         = createTraceItemModel.Title,
                    Description   = createTraceItemModel.Description.SomeNotNull(),
                    DueDate       = createTraceItemModel.DueDate.ToLocalDateTime().Date,
                    PropertyId    = createTraceItemModel.PropertyId,
                    ReservationId = createTraceItemModel.ReservationId.SomeNotNull(),
                    AssignedRole  = createTraceItemModel.AssignedRole.SomeNotNull()
                };

                var traceDto = await _traceService.CreateTraceAsync(createTraceDto);

                var traceItemModel = traceDto.ConvertToTraceItemModel();

                return(new ResultModel <TraceItemModel>
                {
                    Result = traceItemModel.Some(),
                    Success = true
                });
            }
            catch (BusinessValidationException ex)
            {
                _logger.LogWarning(ex, $"{nameof(TraceModifierService)}.{nameof(CreateTraceAsync)} - Exception while trying to create trace");

                return(new ResultModel <TraceItemModel>
                {
                    Success = false,
                    ErrorMessage = ex.Message.Some()
                });
            }
        }
Exemplo n.º 2
0
        public async Task ShouldNotBeAbleToCreateTraceWithReservationWhenValidationExceptionIsThrownAsync()
        {
            const string errorMessage = "Something went wrong";

            const string testTraceTitle       = "ReservationTrace";
            const string testTraceDescription = "ReservationTraceDescription";
            var          testTraceDueDate     = DateTime.Today.AddDays(2);
            const string testReservationId    = "REALRESERVATION_1";

            var createTraceItemModel = new CreateTraceItemModel
            {
                Title         = testTraceTitle,
                Description   = testTraceDescription,
                DueDate       = testTraceDueDate,
                ReservationId = testReservationId
            };

            _traceServiceMock.Setup(x => x.CreateTraceFromReservationAsync(It.Is <CreateTraceDto>(
                                                                               t => t.Title == testTraceTitle &&
                                                                               t.Description.ValueOrFailure() == testTraceDescription &&
                                                                               t.DueDate == testTraceDueDate.ToLocalDateTime().Date&&
                                                                               t.ReservationId.ValueOrFailure() == testReservationId &&
                                                                               string.IsNullOrWhiteSpace(t.PropertyId))))
            .ThrowsAsync(new BusinessValidationException(errorMessage));

            var result = await _traceModifierService.CreateTraceWithReservationIdAsync(createTraceItemModel);

            result.Success.Should().BeFalse();
            result.Result.HasValue.Should().BeFalse();
            result.ErrorMessage.ValueOrFailure().Should().Be(errorMessage);
        }
Exemplo n.º 3
0
        public async Task ShouldNotCreateWhenAValidationExceptionIsThrownAsync()
        {
            const string exceptionMessage     = "iBreak";
            const string testTraceTitle       = "TestTitle";
            const string testTraceDescription = "TestDescription";
            var          testTraceDueDate     = DateTime.Now.AddDays(2);

            var testCreateTrace = new CreateTraceItemModel
            {
                Title       = testTraceTitle,
                Description = testTraceDescription,
                DueDate     = testTraceDueDate
            };

            _traceServiceMock.Setup(x => x.CreateTraceAsync(
                                        It.Is <CreateTraceDto>(v =>
                                                               v.Title == testTraceTitle &&
                                                               v.Description.ValueOrFailure() == testTraceDescription &&
                                                               v.DueDate.ToDateTimeUnspecified().Date == testTraceDueDate.Date)))
            .ThrowsAsync(new BusinessValidationException(exceptionMessage));

            var notSuccessResult = await _traceModifierService.CreateTraceAsync(testCreateTrace);

            notSuccessResult.Success.Should().BeFalse();
            notSuccessResult.Result.HasValue.Should().BeFalse();
            notSuccessResult.ErrorMessage.HasValue.Should().BeTrue();

            var errorMessage = notSuccessResult.ErrorMessage.ValueOrFailure();

            errorMessage.Should().Be(exceptionMessage);
        }
Exemplo n.º 4
0
        public async Task ShouldBeAbleToCreateTraceAsync()
        {
            const int    createdId            = 100;
            const string testTraceTitle       = "TestTitle";
            const string testTraceDescription = "TestDescription";
            const string testTracePropertyId  = "PROP";
            var          testTraceDueDate     = DateTime.Now.Add(TimeSpan.FromDays(2)).Date;

            var testCreateTrace = new CreateTraceItemModel
            {
                Title       = testTraceTitle,
                Description = testTraceDescription,
                DueDate     = testTraceDueDate,
                PropertyId  = testTracePropertyId
            };

            var resultTraceDto = new TraceDto
            {
                Id          = createdId,
                Title       = testTraceTitle,
                Description = testTraceDescription.Some(),
                DueDate     = testTraceDueDate.ToLocalDateTime().Date,
                State       = TraceState.Active,
                PropertyId  = testTracePropertyId
            };

            _traceServiceMock.Setup(x => x.CreateTraceAsync(
                                        It.Is <CreateTraceDto>(v =>
                                                               v.Title == testTraceTitle &&
                                                               v.Description.ValueOrFailure() == testTraceDescription &&
                                                               v.DueDate.ToDateTimeUnspecified().Date == testTraceDueDate)))
            .ReturnsAsync(resultTraceDto);

            var creationResult = await _traceModifierService.CreateTraceAsync(testCreateTrace);

            creationResult.Should().NotBeNull();
            creationResult.Success.Should().BeTrue();
            creationResult.ErrorMessage.HasValue.Should().BeFalse();
            creationResult.Result.HasValue.Should().BeTrue();

            var result = creationResult.Result.ValueOrFailure();

            result.Should().NotBeNull();
            result.Id.Should().Be(createdId);
            result.Title.Should().Be(testTraceTitle);
            result.Description.Should().Be(testTraceDescription);
            result.State.Should().Be(TraceState.Active);
            result.DueDate.Should().Be(testTraceDueDate);
            result.PropertyId.Should().Be(testTracePropertyId);
        }
Exemplo n.º 5
0
        public async Task ShouldBeAbleToCreateTraceWithReservationIdAsync()
        {
            const string testTraceTitle       = "ReservationTrace";
            const string testTraceDescription = "ReservationTraceDescription";
            var          testTraceDueDate     = DateTime.Today.AddDays(2);
            const string testReservationId    = "REALRESERVATION_1";
            const int    resultTraceId        = 10;
            const string resultPropertyId     = "PROP";

            var createTraceItemModel = new CreateTraceItemModel
            {
                Title         = testTraceTitle,
                Description   = testTraceDescription,
                DueDate       = testTraceDueDate,
                ReservationId = testReservationId
            };

            var resultTraceDto = new TraceDto
            {
                Id            = resultTraceId,
                Title         = testTraceTitle,
                Description   = testTraceDescription.Some(),
                State         = TraceState.Active,
                DueDate       = testTraceDueDate.ToLocalDateTime().Date,
                PropertyId    = resultPropertyId,
                ReservationId = testReservationId.Some()
            };

            _traceServiceMock.Setup(x => x.CreateTraceFromReservationAsync(It.Is <CreateTraceDto>(
                                                                               t => t.Title == testTraceTitle &&
                                                                               t.Description.ValueOrFailure() == testTraceDescription &&
                                                                               t.DueDate == testTraceDueDate.ToLocalDateTime().Date&&
                                                                               t.ReservationId.ValueOrFailure() == testReservationId &&
                                                                               string.IsNullOrWhiteSpace(t.PropertyId))))
            .ReturnsAsync(resultTraceDto);

            var result = await _traceModifierService.CreateTraceWithReservationIdAsync(createTraceItemModel);

            result.Success.Should().BeTrue();

            var resultContent = result.Result.ValueOrFailure();

            resultContent.Id.Should().Be(resultTraceId);
            resultContent.Title.Should().Be(testTraceTitle);
            resultContent.Description.Should().Be(testTraceDescription);
            resultContent.State.Should().Be(TraceState.Active);
            resultContent.DueDate.Should().Be(testTraceDueDate);
            resultContent.ReservationId = testReservationId;
        }