public void NoMatch_WithContext() { var data = GetFactData(); var target = CompositionQuery.Parse("identity!=item-identity&tag2==tagVal2&$name==context-name"); var context = new QueryablePropertyDictionary { new QueryableProperty("name", "context-name") }; var result = target.Match(data, context); Assert.False(result); }
public void Match_WithContext_NotEquals_Empty() { var data = GetFactData(); var target = CompositionQuery.Parse("identity==item-identity&tag2==tagVal2&$name!=context-name"); var context = new QueryablePropertyDictionary { new QueryableProperty("name", "") }; var result = target.Match(data, context); Assert.True(result); }
private static List <GenInfo> AddInCompositionTemplates(List <GenInfo> genQueue, UserSelection userSelection, bool newItemGeneration) { var compositionCatalog = GetCompositionCatalog(userSelection.Context.Platform).ToList(); var context = new QueryablePropertyDictionary { new QueryableProperty("projecttype", userSelection.Context.ProjectType), new QueryableProperty("page", string.Join("|", userSelection.Pages.Select(p => p.TemplateId))), new QueryableProperty("feature", string.Join("|", userSelection.Features.Select(p => p.TemplateId))), new QueryableProperty("service", string.Join("|", userSelection.Services.Select(p => p.TemplateId))), new QueryableProperty("testing", string.Join("|", userSelection.Testing.Select(p => p.TemplateId))), }; if (!string.IsNullOrEmpty(userSelection.Context.FrontEndFramework)) { context.Add(new QueryableProperty("frontendframework", userSelection.Context.FrontEndFramework)); } if (!string.IsNullOrEmpty(userSelection.Context.BackEndFramework)) { context.Add(new QueryableProperty("backendframework", userSelection.Context.BackEndFramework)); } foreach (var property in userSelection.Context.PropertyBag) { context.Add(new QueryableProperty(property.Key.ToLowerInvariant(), property.Value)); } var combinedQueue = new List <GenInfo>(); foreach (var genItem in genQueue) { combinedQueue.Add(genItem); var compositionQueue = new List <GenInfo>(); context.AddOrUpdate(new QueryableProperty("ishomepage", (genItem.Name == userSelection.HomeName).ToString().ToLower())); foreach (var compositionItem in compositionCatalog) { if (compositionItem.Template.GetLanguage() == userSelection.Context.Language && compositionItem.Query.Match(genItem.Template, context)) { AddTemplate(genItem, compositionQueue, compositionItem.Template, userSelection, newItemGeneration); } } combinedQueue.AddRange(compositionQueue.OrderBy(g => g.Template.GetCompositionOrder())); } return(combinedQueue); }
public static QueryablePropertyDictionary GetQueryableProperties(this ITemplateInfo ti) { var properties = new QueryablePropertyDictionary(); if (ti != null) { properties.Add(new QueryableProperty(nameof(ti.Name).ToLowerInvariant(), ti.Name)); properties.Add(new QueryableProperty(nameof(ti.Identity).ToLowerInvariant(), ti.Identity)); properties.Add(new QueryableProperty(nameof(ti.GroupIdentity).ToLowerInvariant(), ti.GroupIdentity)); foreach (var t in ti.Tags) { properties.Add(new QueryableProperty(t.Key, t.Value.DefaultValue)); } } return(properties); }