public async Task <ActionResult <DataBlockViewModel> > CreateDataBlock(
     Guid releaseId,
     DataBlockCreateViewModel dataBlock)
 {
     return(await _dataBlockService
            .Create(releaseId, dataBlock)
            .HandleFailuresOrOk());
 }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
            }));
        }
Exemplo n.º 5
0
        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);
            }
        }