Beispiel #1
0
        public async Task <TemplateVersionListResponse> FindTemplateVersions(
            string templateId,
            List <TemplateStatus> statuses,
            int page,
            int itemsPerPage)
        {
            Guard.ArgumentNotNull(templateId, nameof(templateId));

            TemplateVersionListResponse response = new TemplateVersionListResponse();

            var templateTask = _templateRepository.GetTemplate(templateId);
            var versionsTask = _templateVersionRepository.GetSummaryVersionsByTemplate(templateId, statuses);
            await Task.WhenAll(templateTask, versionsTask);

            Template template = await templateTask;
            IEnumerable <TemplateVersion>         versions = await versionsTask;
            IEnumerable <TemplateSummaryResponse> results  = versions
                                                             .Select(v => MapSummaryResponse(v, template))
                                                             .OrderByDescending(x => x.LastModificationDate)
                                                             .ToList();

            if (page < 1 || itemsPerPage < 1)
            {
                response.PageResults = results;
            }
            else
            {
                response.PageResults = results
                                       .Skip((page - 1) * itemsPerPage)
                                       .Take(itemsPerPage);
                response.TotalCount = results.Count();
            }

            return(response);
        }
        public async Task <IActionResult> GetTemplateVersions([FromRoute] string templateId, [FromQuery] string statuses, [FromQuery] int page, [FromQuery] int itemsPerPage)
        {
            List <TemplateStatus> templateStatuses = !string.IsNullOrWhiteSpace(statuses) ? statuses.Split(',')
                                                     .Select(s => (TemplateStatus)Enum.Parse(typeof(TemplateStatus), s))
                                                     .ToList() : new List <TemplateStatus>();

            TemplateVersionListResponse templateVersionResponses =
                await _templateBuilderService.FindTemplateVersions(templateId, templateStatuses, page, itemsPerPage);

            return(Ok(templateVersionResponses));
        }
        public async Task GetTemplateVersions_ReturnsCorrectResult_AllStatuses()
        {
            ITemplateBuilderApiClient apiClient = Substitute.For <ITemplateBuilderApiClient>();
            string templateId = Guid.NewGuid().ToString();
            List <TemplateStatus>          statuses        = new List <TemplateStatus>();
            List <TemplateSummaryResource> returnedContent = new List <TemplateSummaryResource>
            {
                new TemplateSummaryResource
                {
                    TemplateId           = "123",
                    FundingPeriodId      = "ABC",
                    FundingStreamId      = "XYZ",
                    Description          = "Test",
                    LastModificationDate = DateTime.Now,
                    SchemaVersion        = "1.1",
                    AuthorId             = "author",
                    AuthorName           = "name",
                    Comments             = "A comment",
                    Status       = TemplateStatus.Published,
                    Version      = 1,
                    MinorVersion = 1,
                    MajorVersion = 0
                }
            };

            apiClient
            .GetTemplateVersions(templateId, statuses, Arg.Any <int>(), Arg.Any <int>())
            .Returns(new ApiResponse <TemplateVersionListResponse>(HttpStatusCode.OK, new TemplateVersionListResponse {
                PageResults = returnedContent
            }));

            var authHelper = Substitute.For <IAuthorizationHelper>();
            TemplateBuildController controller = new TemplateBuildController(apiClient, authHelper, Substitute.For <ILogger>());

            IActionResult result = await controller.GetTemplateVersions(templateId, statuses, 1, 20);

            result
            .Should()
            .BeAssignableTo <OkObjectResult>();

            TemplateVersionListResponse results = (result as OkObjectResult).Value as TemplateVersionListResponse;

            results.PageResults
            .Should()
            .Equal(returnedContent);
        }