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() }); } }
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); }
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); }
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); }
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; }