public void Execute_EnforeTemplateAndBaseDoesNotInheritTemplate_AbortsPipeline() { //Arrange var task = new EnforcedTemplateCheck(); var database = Sitecore.Configuration.Factory.GetDatabase("master"); var path = "/sitecore/content/Tests/Pipelines/ObjectConstruction/EnforcedTemplateCheck/Target"; var item = database.GetItem(path); var config = new SitecoreTypeConfiguration(); config.EnforceTemplate = SitecoreEnforceTemplate.TemplateAndBase; config.TemplateId = new ID(Guid.NewGuid()); var typeContext = new SitecoreTypeCreationContext(); typeContext.Item = item; var args = new ObjectConstructionArgs(null, typeContext, config, null); //Act using (new SecurityDisabler()) { task.Execute(args); } //Assert Assert.IsNull(args.Result); Assert.IsTrue(args.IsAborted); }
public void Execute_CreatesInferredType() { //Arrange using (Db database = new Db { new DbTemplate(new ID(StubInferred.TemplateId)), new Sitecore.FakeDb.DbItem("Target", ID.NewID, new ID(StubInferred.TemplateId)) }) { var context = Context.Create(FakeDb.Utilities.CreateStandardResolver()); var path = "/sitecore/content/Target"; context.Load(new AttributeTypeLoader(typeof(StubInferred))); var typeContext = new SitecoreTypeCreationContext(); var args = new ConfigurationResolverArgs(context, typeContext, null, null); var task = new TemplateInferredTypeTask(); typeContext.InferType = true; typeContext.Item = database.GetItem(path); typeContext.RequestedType = typeof(IBase); args.RequestedType = typeof(IBase); //Act task.Execute(args); //Assert Assert.IsNotNull(args.Result); Assert.AreEqual(typeof(StubInferred), args.Result.Type); } }
public void Execute_EnforeTemplateOnlyDoesNotInheritTemplate_AbortsPipeline() { //Arrange var task = new EnforcedTemplateCheck(); var database = Sitecore.Configuration.Factory.GetDatabase("master"); var path = "/sitecore/content/Tests/Pipelines/ObjectConstruction/EnforcedTemplateCheck/Target"; var item = database.GetItem(path); var config = new SitecoreTypeConfiguration(); config.EnforceTemplate = SitecoreEnforceTemplate.Template; config.TemplateId = new ID(Guid.NewGuid()); var typeContext = new SitecoreTypeCreationContext(); typeContext.Item = item; var args = new ObjectConstructionArgs(null, typeContext, config, null); //Act task.Execute(args); //Assert Assert.IsNull(args.Result); Assert.IsTrue(args.IsAborted); }
public void Execute_EnforeTemplateOnlyInheritsTemplate_PipelineContinues() { //Arrange var task = new EnforcedTemplateCheck(); var database = Sitecore.Configuration.Factory.GetDatabase("master"); var path = "/sitecore/content/Tests/Pipelines/ObjectConstruction/EnforcedTemplateCheck/Target"; var item = database.GetItem(path); var config = new SitecoreTypeConfiguration(); config.EnforceTemplate = SitecoreEnforceTemplate.Template; config.TemplateId = item.TemplateID; var typeContext = new SitecoreTypeCreationContext(); typeContext.Item = item; var args = new ObjectConstructionArgs(null, typeContext, config, null); //Act task.Execute(args); //Assert Assert.IsNull(args.Result); Assert.IsFalse(args.IsAborted); }
public void Execute_EnforeTemplateOnlyDoesNotInheritTemplate_NextCalledResultNull() { //Arrange var task = new EnforcedTemplateCheck(); bool nextCalled = false; task.SetNext(x => nextCalled = true); using (Db database = new Db { new DbTemplate(new ID(TemplateInferredTypeTaskFixture.StubInferred.TemplateId)), new Sitecore.FakeDb.DbItem("Target", ID.NewID, new ID(TemplateInferredTypeTaskFixture.StubInferred.TemplateId)) }) { var path = "/sitecore/content/Target"; var item = database.GetItem(path); var config = new SitecoreTypeConfiguration(); config.EnforceTemplate = SitecoreEnforceTemplate.Template; config.TemplateId = new ID(Guid.NewGuid()); var typeContext = new SitecoreTypeCreationContext(); typeContext.Item = item; var args = new ObjectConstructionArgs(null, typeContext, config, null); //Act task.Execute(args); //Assert Assert.IsNull(args.Result); Assert.IsTrue(nextCalled); } }
public void Execute_CreatesInferredType() { //Arrange var db = Sitecore.Configuration.Factory.GetDatabase("master"); var context = Context.Create(Utilities.CreateStandardResolver()); var path = "/sitecore/content/Tests/Pipelines/ConfigurationResolver/TemplateInferredTypeTask/Target"; context.Load(new AttributeTypeLoader(typeof(StubInferred))); var typeContext = new SitecoreTypeCreationContext(); var args = new ConfigurationResolverArgs(context, typeContext, null, null); var task = new TemplateInferredTypeTask(); typeContext.InferType = true; typeContext.Item = db.GetItem(path); typeContext.RequestedType = typeof (IBase); args.RequestedType = typeof (IBase); //Act task.Execute(args); //Assert Assert.IsNotNull(args.Result); Assert.AreEqual(typeof(StubInferred), args.Result.Type); }
public void Execute_SecondRequestFromCacheInferredType() { //Arrange var db = Sitecore.Configuration.Factory.GetDatabase("master"); var context = Context.Create(Utilities.CreateStandardResolver()); var path = "/sitecore/content/Tests/Pipelines/ConfigurationResolver/TemplateInferredTypeTask/Target"; context.Load(new AttributeTypeLoader(typeof(StubInferred))); var typeContext = new SitecoreTypeCreationContext(); var args1 = new ConfigurationResolverArgs(context, typeContext, null, null); var args2 = new ConfigurationResolverArgs(context, typeContext, null, null); var task = new TemplateInferredTypeTask(); typeContext.InferType = true; typeContext.Item = db.GetItem(path); typeContext.RequestedType = typeof(IBase); args1.RequestedType = typeof(IBase); args2.RequestedType = typeof(IBase); //Act task.Execute(args1); task.Execute(args2); //Assert Assert.IsNotNull(args1.Result); Assert.AreEqual(typeof(StubInferred), args1.Result.Type); //Assert Assert.IsNotNull(args2.Result); Assert.AreEqual(typeof(StubInferred), args2.Result.Type); }
public object CreateElementInstance(Type baseType, IDictionary <string, object> fieldValues, IEnumerable <IExecutionContext> executionContexts) { var typeConfig = Context.Default.GetTypeConfiguration <SitecoreTypeConfiguration>(baseType); if (typeConfig == null || typeConfig.TemplateId == (ID)null) { return(_defaultDocumentMapper.CreateElementInstance(baseType, fieldValues, executionContexts)); } var sitecoreService = new SitecoreContext(); var typeCreationContext = new SitecoreTypeCreationContext { SitecoreService = sitecoreService, RequestedType = baseType, InferType = true, IsLazy = true, TemplateId = ID.Parse(fieldValues[BuiltinFields.Template]), }; using (new SearchSwitcher()) { var proxy = sitecoreService.InstantiateObject(typeCreationContext); SetupProxy(ID.Parse(fieldValues[BuiltinFields.Group]), fieldValues, proxy as IProxyTargetAccessor); return(proxy); } }
public void Execute_EnforeTemplateOnlyDoesNotInheritTemplate_AbortsPipeline() { //Arrange var task = new EnforcedTemplateCheck(); using (Db database = new Db { new DbTemplate(new ID(TemplateInferredTypeTaskFixture.StubInferred.TemplateId)), new Sitecore.FakeDb.DbItem("Target", ID.NewID, new ID(TemplateInferredTypeTaskFixture.StubInferred.TemplateId)) }) { var path = "/sitecore/content/Target"; var item = database.GetItem(path); var config = new SitecoreTypeConfiguration(); config.EnforceTemplate = SitecoreEnforceTemplate.Template; config.TemplateId = new ID(Guid.NewGuid()); var typeContext = new SitecoreTypeCreationContext(); typeContext.Item = item; var args = new ObjectConstructionArgs(null, typeContext, config, null, new ModelCounter()); //Act task.Execute(args); //Assert Assert.IsNull(args.Result); } }
public void Execute_EnforeTemplateAndBaseInheritsTemplateFromDeepBase_PipelineContinues() { //Arrange var task = new EnforcedTemplateCheck(); bool nextCalled = false; task.SetNext(x => nextCalled = true); ID baseTemplateId1 = ID.NewID; ID baseTemplateId2 = ID.NewID; using (Db database = new Db { new DbTemplate(new ID(TemplateInferredTypeTaskFixture.StubInferred.TemplateId)) { new DbField("__Base template") { Value = baseTemplateId1.ToString() } }, new Sitecore.FakeDb.DbTemplate("base1", baseTemplateId1) { new DbField("__Base template") { Value = baseTemplateId2.ToString() } }, new Sitecore.FakeDb.DbTemplate("base2", baseTemplateId2), new Sitecore.FakeDb.DbItem("Target", ID.NewID, new ID(TemplateInferredTypeTaskFixture.StubInferred.TemplateId)) }) { var path = "/sitecore/content/Target"; var item = database.GetItem(path); var config = new SitecoreTypeConfiguration(); config.EnforceTemplate = SitecoreEnforceTemplate.TemplateAndBase; using (new SecurityDisabler()) { config.TemplateId = item.Template.BaseTemplates.First().BaseTemplates.First().ID; var typeContext = new SitecoreTypeCreationContext(); typeContext.Item = item; var args = new ObjectConstructionArgs(null, typeContext, config, null); //Act task.Execute(args); //Assert Assert.IsNull(args.Result); Assert.IsTrue(nextCalled); } } }
public void Excute_TemplateWithEnAndDeStandardValues_ItemOnlyInEn_DoesntReturnDe() { //Arrange using (Db database = new Db { new DbTemplate(new ID(TemplateInferredTypeTaskFixture.StubInferred.TemplateId)) { new Sitecore.FakeDb.DbField("Title") { { "en", "Hello!" }, { "de-de", "Hej!" } } }, new Sitecore.FakeDb.DbItem("Target", ID.NewID, new ID(TemplateInferredTypeTaskFixture.StubInferred.TemplateId)) }) { var path = "/sitecore/content/Target"; var itemEn = database.GetItem(path, "en"); var itemDe = database.GetItem(path, "de-de"); // itemEn.Template.CreateStandardValues(); var nextTaskEn = new NextTask(); var taskEn = new ItemVersionCountByRevisionTask(); taskEn.SetNext(x => nextTaskEn.Execute(x)); var contextEn = new SitecoreTypeCreationContext(); contextEn.Item = itemEn; var optionsEn = new GetItemByItemOptions(itemEn); contextEn.Options = optionsEn; var argsEn = new ObjectConstructionArgs(null, contextEn, null, null); //Act EN taskEn.Execute(argsEn); //Assert EN Assert.IsTrue(nextTaskEn.WasCalled); var nextTaskDe = new NextTask(); var taskDe = new ItemVersionCountByRevisionTask(); taskDe.SetNext(x => nextTaskDe.Execute(x)); var contextDe = new SitecoreTypeCreationContext(); var optionsDe = new GetItemByItemOptions(itemDe); contextDe.Item = itemDe; contextDe.Options = optionsDe; var argsDe = new ObjectConstructionArgs(null, contextDe, null, null); //Act De taskDe.Execute(argsDe); //Assert De Assert.IsFalse(nextTaskDe.WasCalled); } }
/// <summary> /// Executes the specified args. /// </summary> /// <param name="args">The args.</param> public void Execute(ObjectConstructionArgs args) { if (args.Result == null && args.Configuration != null && args.Configuration.Type.IsAssignableFrom(_dynamicType)) { SitecoreTypeCreationContext typeContext = args.AbstractTypeCreationContext as SitecoreTypeCreationContext; args.Result = new DynamicItem(typeContext.Item); } }
public void Execute(ObjectConstructionArgs args) { if (args.Result == null) { if (args.Configuration.Type.IsAssignableFrom(typeof(IDynamicMetaObjectProvider))) { SitecoreTypeCreationContext typeContext = args.AbstractTypeCreationContext as SitecoreTypeCreationContext; args.Result = new DynamicItem(typeContext.Item); } } }
protected virtual T CreateInstance <T>(string templateId) { var typeCreationContext = new SitecoreTypeCreationContext { SitecoreService = _sitecoreContext, RequestedType = typeof(T), InferType = true, IsLazy = true, TemplateId = new ID(templateId) }; using (new SearchSwitcher()) return((T)_sitecoreContext.InstantiateObject(typeCreationContext)); }
public void Execute_ResultNotSitecoreItemConfig_NoValueSet() { //Arrange var task = new SitecoreItemTask(); var context = new SitecoreTypeCreationContext(); var args = new ObjectConstructionArgs(null, context, new SitecoreTypeConfiguration(), null, new ModelCounter()); //Act task.Execute(args); //Assert Assert.IsNull(args.Result); }
public void Execute_ResultNotSitecoreItemConfig_NoValueSet() { //Arrange var task = new SitecoreItemTask(); var context = new SitecoreTypeCreationContext(); var args = new ObjectConstructionArgs(null, context, new SitecoreTypeConfiguration(), null); //Act task.Execute(args); //Assert Assert.IsNull(args.Result); }
public void Execute_ItemConfig_ItemSet() { //Arrange var task = new SitecoreItemTask(); var context = new SitecoreTypeCreationContext(); context.Item = Mapper.Sc.Utilities.CreateFakeItem(new Dictionary<Guid, string>(), "test"); var args = new ObjectConstructionArgs(null, context, SitecoreItemResolverTask.Config, null); //Act task.Execute(args); //Assert Assert.AreEqual(context.Item, args.Result); }
public void Execute_ItemConfig_ItemSet() { //Arrange var task = new SitecoreItemTask(); var context = new SitecoreTypeCreationContext(); context.Item = Mapper.Sc.Utilities.CreateFakeItem(new Dictionary <Guid, string>(), "test"); var args = new ObjectConstructionArgs(null, context, SitecoreItemResolverTask.Config, null, new ModelCounter()); //Act task.Execute(args); //Assert Assert.AreEqual(context.Item, args.Result); }
public void Execute_ResultNotNull_NoChangeToResult() { //Arrange var task = new SitecoreItemTask(); var context = new SitecoreTypeCreationContext(); var args = new ObjectConstructionArgs(null, context, new SitecoreTypeConfiguration(), null); var expected = "some value"; args.Result = expected; //Act task.Execute(args); //Assert Assert.AreEqual(expected, args.Result); }
public void Intercept(IInvocation invocation) { if (IndexFields.Any(x => x == invocation.Method.Name)) { invocation.Proceed(); } if (!invocation.Method.IsSpecialName || !invocation.Method.Name.StartsWith("get_") && !invocation.Method.Name.StartsWith("set_")) { return; } string str = invocation.Method.Name.Substring(0, 4); string name = invocation.Method.Name.Substring(4); if (!_isLoaded) { SitecoreTypeCreationContext typeCreationContext = _args.AbstractTypeCreationContext as SitecoreTypeCreationContext; typeCreationContext.Item = typeCreationContext.SitecoreService.Database.GetItem(Id); SitecoreTypeConfiguration typeConfiguration = TypeConfiguration; AbstractDataMappingContext dataMappingContext = _args.Service.CreateDataMappingContext(_args.AbstractTypeCreationContext, null); //todo filter fieldnames from FieldConfigs! foreach (AbstractPropertyConfiguration propertyConfiguration in typeConfiguration.Properties.Where(x => IndexFields.All(y => y != x.PropertyInfo.Name))) { object obj = propertyConfiguration.Mapper.MapToProperty(dataMappingContext); _values[propertyConfiguration.PropertyInfo.Name] = obj; } _isLoaded = true; } if (str == "get_") { if (_values.ContainsKey(name)) { object obj = _values[name]; invocation.ReturnValue = obj; } } else if (str == "set_") { _values[name] = invocation.Arguments[0]; } else { throw new MapperException(Glass.Mapper.ExtensionMethods.Formatted("Method with name {0}{1} on type {2} not supported.", (object)str, (object)name, (object)this._args.Configuration.Type.FullName)); } }
public void Execute_ResultNotNull_NoChangeToResult() { //Arrange var task = new SitecoreItemTask(); var context = new SitecoreTypeCreationContext(); var args = new ObjectConstructionArgs(null, context, new SitecoreTypeConfiguration(), null, new ModelCounter()); var expected = "some value"; args.Result = expected; //Act task.Execute(args); //Assert Assert.AreEqual(expected, args.Result); }
public void Execute_RequestedTypeItem_ConfigForItem() { //Arrange SitecoreTypeConfiguration expected = SitecoreItemResolverTask.Config; var task = new SitecoreItemResolverTask(); var context = new SitecoreTypeCreationContext(); context.Options = new GetItemOptions() { Type = typeof(Item) }; var args = new ConfigurationResolverArgs(null, context, null); //Act task.Execute(args); //Arrange Assert.AreEqual(expected, args.Result); }
public void Execute_EnforeTemplateAndBaseInheritsTemplateFromDeepBase_PipelineContinues() { //Arrange var task = new EnforcedTemplateCheck(); var database = Sitecore.Configuration.Factory.GetDatabase("master"); var path = "/sitecore/content/Tests/Pipelines/ObjectConstruction/EnforcedTemplateCheck/Target"; var item = database.GetItem(path); var config = new SitecoreTypeConfiguration(); config.EnforceTemplate = SitecoreEnforceTemplate.TemplateAndBase; using (new SecurityDisabler()) { config.TemplateId = item.Template.BaseTemplates.First().BaseTemplates.Skip(1).First().ID; var typeContext = new SitecoreTypeCreationContext(); typeContext.Item = item; var args = new ObjectConstructionArgs(null, typeContext, config, null); //Act task.Execute(args); //Assert Assert.IsNull(args.Result); Assert.IsFalse(args.IsAborted); } }
public void Execute_EnforeTemplateAndBaseInheritsTemplateFromDeepBase_PipelineContinues() { //Arrange var task = new EnforcedTemplateCheck(); ID baseTemplateId1 = ID.NewID; ID baseTemplateId2 = ID.NewID; using (Db database = new Db { new DbTemplate(new ID(TemplateInferredTypeTaskFixture.StubInferred.TemplateId)) { new DbField("__Base template") { Value = baseTemplateId1.ToString() } }, new Sitecore.FakeDb.DbTemplate("base1", baseTemplateId1) { new DbField("__Base template") { Value = baseTemplateId2.ToString() } }, new Sitecore.FakeDb.DbTemplate("base2", baseTemplateId2), new Sitecore.FakeDb.DbItem("Target", ID.NewID, new ID(TemplateInferredTypeTaskFixture.StubInferred.TemplateId)) }) { var path = "/sitecore/content/Target"; var item = database.GetItem(path); var config = new SitecoreTypeConfiguration(); config.EnforceTemplate = SitecoreEnforceTemplate.TemplateAndBase; using (new SecurityDisabler()) { config.TemplateId = item.Template.BaseTemplates.First().BaseTemplates.First().ID; var typeContext = new SitecoreTypeCreationContext(); typeContext.Item = item; var args = new ObjectConstructionArgs(null, typeContext, config, null, new ModelCounter()); //Act task.Execute(args); //Assert Assert.IsNull(args.Result); } } }