예제 #1
0
        public async Task ReturnsMappedData()
        {
            var uniqueData = UNIQUE_PREFIX + nameof(ReturnsMappedData);

            using var app = _appFactory.Create();
            var directoryId = await app.TestData.PageDirectories().AddAsync(uniqueData);

            var page1Id = await app.TestData.Pages().AddAsync(uniqueData + "1", directoryId);

            var page2Id = await app.TestData.Pages().AddAsync(uniqueData + "2", directoryId);

            var contentRepository = app.Services.GetContentRepositoryWithElevatedPermissions();
            var query             = new GetPageEntityMicroSummariesByIdRangeQuery(new int[] { page1Id, page2Id });
            var pageLookup        = await contentRepository.ExecuteQueryAsync(query);

            using (new AssertionScope())
            {
                pageLookup.Should().NotBeNull();
                pageLookup.Count.Should().Be(2);

                var page1 = pageLookup.GetOrDefault(page1Id);
                page1.Should().NotBeNull();
                page1.EntityDefinitionCode.Should().Be(PageEntityDefinition.DefinitionCode);
                page1.EntityDefinitionName.Should().Be(new PageEntityDefinition().Name);
                page1.IsPreviousVersion.Should().BeFalse();
                page1.RootEntityId.Should().Be(page1Id);
                page1.RootEntityTitle.Should().Be(uniqueData + "1");

                var page2 = pageLookup.GetOrDefault(page2Id);
                page2.Should().NotBeNull();
            }
        }
        private IQueryable <RootEntityMicroSummary> Query(GetPageEntityMicroSummariesByIdRangeQuery query, IExecutionContext executionContext)
        {
            var definition = _entityDefinitionRepository.GetByCode(PageEntityDefinition.DefinitionCode);

            var dbQuery = _dbContext
                          .PagePublishStatusQueries
                          .AsNoTracking()
                          .FilterActive()
                          .FilterByStatus(PublishStatusQuery.Latest, executionContext.ExecutionDate)
                          .Where(q => query.PageIds.Contains(q.PageId))
                          .Select(q => q.PageVersion)
                          .Select(v => new RootEntityMicroSummary()
            {
                RootEntityId         = v.PageId,
                RootEntityTitle      = v.Title,
                EntityDefinitionName = definition.Name,
                EntityDefinitionCode = definition.EntityDefinitionCode
            });

            return(dbQuery);
        }
        public async Task <IDictionary <int, RootEntityMicroSummary> > ExecuteAsync(GetPageEntityMicroSummariesByIdRangeQuery query, IExecutionContext executionContext)
        {
            var definition = _entityDefinitionRepository.GetRequiredByCode(PageEntityDefinition.DefinitionCode);

            var results = await _dbContext
                          .PagePublishStatusQueries
                          .AsNoTracking()
                          .FilterActive()
                          .FilterByStatus(PublishStatusQuery.Latest, executionContext.ExecutionDate)
                          .Where(q => query.PageIds.Contains(q.PageId))
                          .Select(q => q.PageVersion)
                          .Select(v => new RootEntityMicroSummary()
            {
                RootEntityId         = v.PageId,
                RootEntityTitle      = v.Title,
                EntityDefinitionName = definition.Name,
                EntityDefinitionCode = definition.EntityDefinitionCode
            })
                          .ToDictionaryAsync(e => e.RootEntityId);

            return(results);
        }
 public IEnumerable <IPermissionApplication> GetPermissions(GetPageEntityMicroSummariesByIdRangeQuery query)
 {
     yield return(new PageReadPermission());
 }
        public async Task <IDictionary <int, RootEntityMicroSummary> > ExecuteAsync(GetPageEntityMicroSummariesByIdRangeQuery query, IExecutionContext executionContext)
        {
            var results = await Query(query, executionContext).ToDictionaryAsync(e => e.RootEntityId);

            return(results);
        }