public async Task ShouldCreateTraceAsync() { var createTraceDto = new CreateTraceDto { Description = TestActiveTraceDescription.Some(), Title = TestActiveTraceTitle, DueDate = _testActiveTraceDueDate, PropertyId = TestActivePropertyId }; _traceRepositoryMock.Setup(x => x.Insert( It.Is <Trace>(t => t.Description == TestActiveTraceDescription && t.Title == TestActiveTraceTitle && t.State == TraceState.Active && t.DueDate == _testActiveTraceDueDate && t.PropertyId == TestActivePropertyId))); _traceRepositoryMock.Setup(x => x.SaveAsync()) .Returns(Task.CompletedTask); var result = await _traceService.CreateTraceAsync(createTraceDto); result.Id.Should().Be(0); result.Title.Should().Be(TestActiveTraceTitle); result.Description.ValueOrFailure().Should().Be(TestActiveTraceDescription); result.DueDate.Should().Be(_testActiveTraceDueDate); result.PropertyId.Should().Be(TestActivePropertyId); result.ReservationId.HasValue.Should().BeFalse(); }
public async Task <TraceDto> CreateTraceAsync(CreateTraceDto createTraceDto) { Check.NotNull(createTraceDto, nameof(createTraceDto)); if (string.IsNullOrWhiteSpace(createTraceDto.Title) || createTraceDto.DueDate < LocalDate.FromDateTime(DateTime.Today)) { throw new BusinessValidationException(TextConstants.CreateTraceWithoutTitleOrFutureDateErrorMessage); } var trace = new Trace { Description = createTraceDto.Description.ValueOrDefault(), State = TraceState.Active, Title = createTraceDto.Title, DueDate = createTraceDto.DueDate, PropertyId = createTraceDto.PropertyId, ReservationId = createTraceDto.ReservationId.ValueOrDefault(), AssignedRole = createTraceDto.AssignedRole.ValueOrDefault() }; _traceRepository.Insert(trace); await _traceRepository.SaveAsync(); return(TraceToDto(trace)); }
public async Task <ResultModel <TraceItemModel> > CreateTraceWithReservationIdAsync(CreateTraceItemModel createTraceItemModel) { try { var createTraceDto = new CreateTraceDto { Title = createTraceItemModel.Title, Description = createTraceItemModel.Description.SomeNotNull(), DueDate = createTraceItemModel.DueDate.ToLocalDateTime().Date, ReservationId = createTraceItemModel.ReservationId.SomeNotNull(), AssignedRole = createTraceItemModel.AssignedRole.SomeNotNull() }; var traceDto = await _traceService.CreateTraceFromReservationAsync(createTraceDto); var traceItemModel = traceDto.ConvertToTraceItemModel(); return(new ResultModel <TraceItemModel> { Result = traceItemModel.Some(), Success = true }); } catch (BusinessValidationException ex) { _logger.LogWarning(ex, $"{nameof(TraceModifierService)}.{nameof(CreateTraceWithReservationIdAsync)} - Exception while trying to create reservation for reservation with Id {createTraceItemModel.ReservationId}"); return(new ResultModel <TraceItemModel> { Success = false, ErrorMessage = ex.Message.Some() }); } }
/// <summary> /// This function exists to request the propertyId for this specific trace based on the reservationId /// </summary> /// <param name="createTraceDto">The dto with the information to create the trace</param> /// <returns>Id of the new trace</returns> public async Task <TraceDto> CreateTraceFromReservationAsync(CreateTraceDto createTraceDto) { var reservationId = createTraceDto.ReservationId.ValueOrException( new BusinessValidationException(TextConstants.NoReservationIdProvidedErrorMessage)); var propertyId = await GetPropertyIdFromReservationIdAsync(reservationId); createTraceDto.PropertyId = propertyId; return(await CreateTraceAsync(createTraceDto)); }
public async Task ShouldFailToCreateTraceWhenTitleIsEmptyAsync() { var createTraceDto = new CreateTraceDto { Description = TestActiveTraceDescription.Some(), DueDate = _testActiveTraceDueDate }; var result = await Assert.ThrowsAsync <BusinessValidationException>(() => _traceService.CreateTraceAsync(createTraceDto)); result.Message.Should().Be("The trace must have a title and a due date in the future to be created."); }
public async Task ShouldFailToCreateTraceWhenDueDateIsInThePastAsync() { var createTraceDto = new CreateTraceDto { Title = TestActiveTraceTitle, Description = TestActiveTraceDescription.Some(), DueDate = LocalDate.FromDateTime(DateTime.Today.AddDays(-1)) }; var result = await Assert.ThrowsAsync <BusinessValidationException>(() => _traceService.CreateTraceAsync(createTraceDto)); result.Message.Should().Be("The trace must have a title and a due date in the future to be created."); }