public async Task <ActionResult <DataBlockViewModel> > CreateDataBlock( Guid releaseId, DataBlockCreateViewModel dataBlock) { return(await _dataBlockService .Create(releaseId, dataBlock) .HandleFailuresOrOk()); }
public async Task Create_BlankChartTitleUsesHeading() { var release = new Release(); var contextId = Guid.NewGuid().ToString(); await using (var context = InMemoryContentDbContext(contextId)) { await context.AddAsync(release); await context.SaveChangesAsync(); } var createRequest = new DataBlockCreateViewModel { Heading = "Test heading", Charts = new List <IChart> { new LineChart { // No title Height = 600, Width = 700, } }, }; await using (var context = InMemoryContentDbContext(contextId)) { var service = BuildDataBlockService(context); var result = await service.Create(release.Id, createRequest); var viewModel = result.AssertRight(); Assert.Equal(createRequest.Heading, viewModel.Heading); Assert.Equal(createRequest.Charts, viewModel.Charts); Assert.Single(viewModel.Charts); Assert.Equal(createRequest.Heading, viewModel.Charts[0].Title); } await using (var context = InMemoryContentDbContext(contextId)) { var dataBlocks = context.DataBlocks.ToList(); Assert.Single(dataBlocks); var dataBlock = dataBlocks[0]; Assert.Equal(createRequest.Heading, dataBlock.Heading); createRequest.Charts.AssertDeepEqualTo(dataBlock.Charts); Assert.Single(dataBlock.Charts); Assert.Equal(createRequest.Heading, dataBlock.Charts[0].Title); } }
public async Task Create_ReleaseNotFound() { var contextId = Guid.NewGuid().ToString(); var createRequest = new DataBlockCreateViewModel(); await using (var context = InMemoryContentDbContext(contextId)) { var service = BuildDataBlockService(context); var result = await service.Create(Guid.NewGuid(), createRequest); result.AssertNotFound(); } await using (var context = InMemoryContentDbContext(contextId)) { var dataBlocks = context.DataBlocks.ToList(); Assert.Empty(dataBlocks); } }
public async Task <Either <ActionResult, DataBlockViewModel> > Create(Guid releaseId, DataBlockCreateViewModel dataBlockCreate) { return(await _persistenceHelper .CheckEntityExists <Release>(releaseId) .OnSuccess(_userService.CheckCanUpdateRelease) .OnSuccess(async release => { var dataBlock = _mapper.Map <DataBlock>(dataBlockCreate); dataBlock.Created = DateTime.UtcNow; var added = (await _context.DataBlocks.AddAsync(dataBlock)).Entity; release.AddContentBlock(added); _context.Releases.Update(release); await _context.SaveChangesAsync(); return await Get(added.Id); })); }
public async Task Create() { var release = new Release(); var contextId = Guid.NewGuid().ToString(); await using (var context = InMemoryContentDbContext(contextId)) { await context.AddAsync(release); await context.SaveChangesAsync(); } var createRequest = new DataBlockCreateViewModel { Heading = "Test heading", Name = "Test name", HighlightName = "Test highlight name", HighlightDescription = "Test highlight description", Source = "Test source", Query = new ObservationQueryContext { Filters = new List <Guid> { Guid.NewGuid(), }, Indicators = new List <Guid> { Guid.NewGuid(), }, }, Table = new TableBuilderConfiguration { TableHeaders = new TableHeaders { Rows = new List <TableHeader> { new TableHeader(Guid.NewGuid().ToString(), TableHeaderType.Indicator) }, Columns = new List <TableHeader> { new TableHeader(Guid.NewGuid().ToString(), TableHeaderType.Filter) } } }, Charts = new List <IChart> { new LineChart { Title = "Test chart", Height = 600, Width = 700, } }, }; await using (var context = InMemoryContentDbContext(contextId)) { var service = BuildDataBlockService(context); var result = await service.Create(release.Id, createRequest); var viewModel = result.AssertRight(); Assert.Equal(createRequest.Heading, viewModel.Heading); Assert.Equal(createRequest.Name, viewModel.Name); Assert.Equal(createRequest.HighlightName, viewModel.HighlightName); Assert.Equal(createRequest.HighlightDescription, viewModel.HighlightDescription); Assert.Equal(createRequest.Source, viewModel.Source); createRequest.Query.AssertDeepEqualTo(viewModel.Query); Assert.Equal(createRequest.Table, viewModel.Table); Assert.Equal(createRequest.Charts, viewModel.Charts); Assert.Single(viewModel.Charts); Assert.NotEqual(createRequest.Heading, viewModel.Charts[0].Title); } await using (var context = InMemoryContentDbContext(contextId)) { var dataBlocks = context.DataBlocks.ToList(); var dataBlock = Assert.Single(dataBlocks); // Validate Created date is in the DB, even if not returned in result Assert.True(dataBlock.Created.HasValue); Assert.InRange(DateTime.UtcNow.Subtract(dataBlock.Created !.Value).Milliseconds, 0, 1500); Assert.Equal(createRequest.Heading, dataBlock.Heading); Assert.Equal(createRequest.Name, dataBlock.Name); Assert.Equal(createRequest.HighlightName, dataBlock.HighlightName); Assert.Equal(createRequest.HighlightDescription, dataBlock.HighlightDescription); Assert.Equal(createRequest.Source, dataBlock.Source); createRequest.Query.AssertDeepEqualTo(dataBlock.Query); createRequest.Table.AssertDeepEqualTo(dataBlock.Table); createRequest.Charts.AssertDeepEqualTo(dataBlock.Charts); var savedRelease = await context.Releases .Include(r => r.ContentBlocks) .FirstOrDefaultAsync(r => r.Id == release.Id); Assert.NotNull(savedRelease); Assert.Single(savedRelease !.ContentBlocks); Assert.Equal(dataBlock, savedRelease.ContentBlocks[0].ContentBlock); } }