protected override Task <IEnumerable <IEntityValue> > CreateValuesAsync(IQueryExecutionContext queryExecutionContext, IEntityValue parent, ContextAndRuleProviderState providerState) { (string versionKey, long versionNumber) = providerState.ProjectState.GetUnconfiguredProjectVersion(); queryExecutionContext.ReportInputDataVersion(versionKey, versionNumber); return(Task.FromResult(CategoryDataProducer.CreateCategoryValues(queryExecutionContext, parent, providerState.Rule, _properties))); }
public void WhenCreatingCategoriesFromARule_OneEntityIsCreatedPerCategory() { var properties = PropertiesAvailableStatusFactory.CreateCategoryPropertiesAvailableStatus(includeAllProperties: true); var context = IQueryExecutionContextFactory.Create(); var parentEntity = IEntityWithIdFactory.Create(key: "A", value: "B"); var rule = new Rule { Categories = { new() { Name = "Alpha", DisplayName = "First category" }, new() { Name = "Beta", DisplayName = "Second category" } } }; var result = CategoryDataProducer.CreateCategoryValues(context, parentEntity, rule, properties); Assert.Collection(result, new Action <IEntityValue>[] { entity => { assertEqual(entity, expectedName: "Alpha", expectedDisplayName: "First category"); }, entity => { assertEqual(entity, expectedName: "Beta", expectedDisplayName: "Second category"); } });
protected override async Task <IEnumerable <IEntityValue> > CreateValuesAsync(IQueryExecutionContext queryExecutionContext, IEntityValue parent, ContextAndRuleProviderState providerState) { if (await providerState.ProjectState.GetMetadataVersionAsync() is (string versionKey, long versionNumber)) { queryExecutionContext.ReportInputDataVersion(versionKey, versionNumber); } return(CategoryDataProducer.CreateCategoryValues(queryExecutionContext, parent, providerState.Rule, _properties)); }
public void WhenCreatingACategory_TheIdIsTheCategoryName() { var properties = PropertiesAvailableStatusFactory.CreateCategoryPropertiesAvailableStatus(includeAllProperties: true); var parentEntity = IEntityWithIdFactory.Create(key: "A", value: "B"); var category = new Category { DisplayName = "CategoryDisplayName", Name = "MyCategoryName" }; var order = 42; var result = (CategoryValue)CategoryDataProducer.CreateCategoryValue(parentEntity, category, order, properties); Assert.True(result.Id.TryGetValue(ProjectModelIdentityKeys.CategoryName, out string name)); Assert.Equal(expected: "MyCategoryName", actual: name); }
public void WhenCategoryValueCreated_TheCategoryIsTheProviderState() { var properties = PropertiesAvailableStatusFactory.CreateCategoryPropertiesAvailableStatus(includeAllProperties: true); var entityRuntime = IEntityRuntimeModelFactory.Create(); var id = new EntityIdentity(key: "A", value: "B"); var category = new Category { DisplayName = "CategoryDisplayName", Name = "CategoryName" }; var order = 42; var result = (CategoryValue)CategoryDataProducer.CreateCategoryValue(entityRuntime, id, category, order, properties); Assert.Equal(expected: category, actual: ((IEntityValueFromProvider)result).ProviderState); }
public void WhenCategoryValueCreated_TheCategoryIsTheProviderState() { var properties = PropertiesAvailableStatusFactory.CreateCategoryPropertiesAvailableStatus(includeAllProperties: true); var parentEntity = IEntityWithIdFactory.Create(key: "Parent", value: "KeyValue"); var rule = new Rule(); var category = new Category { DisplayName = "CategoryDisplayName", Name = "CategoryName" }; var order = 42; var result = (CategoryValue)CategoryDataProducer.CreateCategoryValue(parentEntity, rule, category, order, properties); Assert.Equal(expected: category, actual: ((IEntityValueFromProvider)result).ProviderState); }
public void WhenPropertiesAreRequested_PropertyValuesAreReturned() { var properties = PropertiesAvailableStatusFactory.CreateCategoryPropertiesAvailableStatus(includeAllProperties: true); var entityRuntime = IEntityRuntimeModelFactory.Create(); var id = new EntityIdentity(key: "A", value: "B"); var category = new Category { DisplayName = "CategoryDisplayName", Name = "CategoryName" }; var order = 42; var result = (CategoryValue)CategoryDataProducer.CreateCategoryValue(entityRuntime, id, category, order, properties); Assert.Equal(expected: "CategoryDisplayName", actual: result.DisplayName); Assert.Equal(expected: "CategoryName", actual: result.Name); Assert.Equal(expected: 42, actual: result.Order); }
public void WhenPropertiesAreRequested_PropertyValuesAreReturned() { var properties = PropertiesAvailableStatusFactory.CreateCategoryPropertiesAvailableStatus(includeAllProperties: true); var parentEntity = IEntityWithIdFactory.Create(key: "Parent", value: "KeyValue"); var rule = new Rule(); var category = new Category { DisplayName = "CategoryDisplayName", Name = "CategoryName" }; var order = 42; var result = (CategoryValue)CategoryDataProducer.CreateCategoryValue(parentEntity, rule, category, order, properties); Assert.Equal(expected: "CategoryDisplayName", actual: result.DisplayName); Assert.Equal(expected: "CategoryName", actual: result.Name); Assert.Equal(expected: 42, actual: result.Order); }
protected override Task <IEntityValue?> TryCreateEntityOrNullAsync(IQueryExecutionContext queryExecutionContext, EntityIdentity id) { if (id.KeysCount == 3 && id.TryGetValue(ProjectModelIdentityKeys.ProjectPath, out string?projectPath) && id.TryGetValue(ProjectModelIdentityKeys.PropertyPageName, out string?propertyPageName) && id.TryGetValue(ProjectModelIdentityKeys.CategoryName, out string?categoryName)) { return(CategoryDataProducer.CreateCategoryValueAsync( queryExecutionContext, id, _projectService, projectPath, propertyPageName, categoryName, _properties)); } return(NullEntityValue); }
public async Task SendRequestAsync(QueryProcessRequest <IEntityValue> request) { if ((request.RequestData as IEntityValueFromProvider)?.ProviderState is (IPropertyPageQueryCache _, Rule rule)) { try { foreach (IEntityValue categoryValue in CategoryDataProducer.CreateCategoryValues(request.RequestData, rule, _properties)) { await ResultReceiver.ReceiveResultAsync(new QueryProcessResult <IEntityValue>(categoryValue, request, ProjectModelZones.Cps)); } } catch (Exception ex) { request.QueryExecutionContext.ReportError(ex); } } await ResultReceiver.OnRequestProcessFinishedAsync(request); }
public async Task SendRequestAsync(QueryProcessRequest <IReadOnlyCollection <EntityIdentity> > request) { Requires.NotNull(request, nameof(request)); foreach (EntityIdentity requestId in request.RequestData) { if (requestId.KeysCount == 3 && requestId.TryGetValue(ProjectModelIdentityKeys.ProjectPath, out string projectPath) && requestId.TryGetValue(ProjectModelIdentityKeys.PropertyPageName, out string propertyPageName) && requestId.TryGetValue(ProjectModelIdentityKeys.CategoryName, out string categoryName)) { try { IEntityValue?categoryValue = await CategoryDataProducer.CreateCategoryValueAsync( request.QueryExecutionContext.EntityRuntime, requestId, _projectService, projectPath, propertyPageName, categoryName, _properties); if (categoryValue != null) { await ResultReceiver.ReceiveResultAsync(new QueryProcessResult <IEntityValue>(categoryValue, request, ProjectModelZones.Cps)); } } catch (Exception ex) { request.QueryExecutionContext.ReportError(ex); } } } await ResultReceiver.OnRequestProcessFinishedAsync(request); }
protected override Task <IEnumerable <IEntityValue> > CreateValuesAsync(IEntityValue parent, PropertyPageProviderState providerState) { return(Task.FromResult(CategoryDataProducer.CreateCategoryValues(parent, providerState.Rule, providerState.DebugChildRules, _properties))); }