public void CanExtractCalculatedFieldFromListInstance() { var template = new ProvisioningTemplate(); var listInstance = new ListInstance(); template.SiteFields.Add(new Core.Framework.Provisioning.Model.Field() { SchemaXml = ElementSchema }); listInstance.Url = string.Format("lists/{0}", listName); listInstance.Title = listName; listInstance.TemplateType = (int)ListTemplateType.GenericList; var referencedField = new FieldRef(); referencedField.Id = fieldId; listInstance.FieldRefs.Add(referencedField); var calculatedField = new Core.Framework.Provisioning.Model.Field(); calculatedField.SchemaXml = TokenizedCalculatedFieldElementSchema; listInstance.Fields.Add(calculatedField); template.Lists.Add(listInstance); using (var ctx = TestCommon.CreateClientContext()) { var parser = new TokenParser(ctx.Web, template); new ObjectField().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation()); new ObjectListInstance().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation()); var list = ctx.Web.GetListByUrl(listInstance.Url); Assert.IsNotNull(list); var rf = list.GetFieldById <FieldText>(fieldId); var f = list.GetFieldById <FieldCalculated>(calculatedFieldId); Assert.IsNotNull(rf, "Referenced field not added"); Assert.IsNotNull(f); Assert.IsInstanceOfType(f, typeof(FieldCalculated)); Assert.IsFalse(f.Formula.Contains('#') || f.Formula.Contains('?'), "Calculated field was not provisioned properly"); var extractedTemplate = new ProvisioningTemplate(); var provisioningTemplateCreationInformation = new ProvisioningTemplateCreationInformation(ctx.Web); new ObjectListInstance().ExtractObjects(ctx.Web, extractedTemplate, provisioningTemplateCreationInformation); XElement fieldElement = XElement.Parse(extractedTemplate.Lists.First(l => l.Title == listName).Fields.First(cf => Guid.Parse(XElement.Parse(cf.SchemaXml).Attribute("ID").Value).Equals(calculatedFieldId)).SchemaXml); var formula = fieldElement.Descendants("Formula").FirstOrDefault(); Assert.AreEqual(@"=[{fieldtitle:DemoField}]&""DemoField""", formula.Value, true, "Calculated field formula is not extracted properly"); } }
public void CanUpdateCalculatedFieldInListInstance() { var template = new ProvisioningTemplate(); var listInstance = new ListInstance(); template.SiteFields.Add(new Core.Framework.Provisioning.Model.Field() { SchemaXml = ElementSchema }); listInstance.Url = string.Format("lists/{0}", listName); listInstance.Title = listName; listInstance.TemplateType = (int)ListTemplateType.GenericList; var referencedField = new FieldRef(); referencedField.Id = fieldId; listInstance.FieldRefs.Add(referencedField); var calculatedField = new Core.Framework.Provisioning.Model.Field(); calculatedField.SchemaXml = TokenizedCalculatedFieldElementSchema; listInstance.Fields.Add(calculatedField); template.Lists.Add(listInstance); using (var ctx = TestCommon.CreateClientContext()) { var parser = new TokenParser(ctx.Web, template); new ObjectField().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation()); new ObjectListInstance().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation()); var list = ctx.Web.GetListByUrl(listInstance.Url); Assert.IsNotNull(list); var rf = list.GetFieldById <FieldText>(fieldId); var f1 = list.GetFieldById <FieldCalculated>(calculatedFieldId); Assert.IsNotNull(rf, "Referenced field not added"); Assert.IsNotNull(f1); Assert.IsInstanceOfType(f1, typeof(FieldCalculated)); Assert.IsFalse(f1.Formula.Contains('#') || f1.Formula.Contains('?'), "Calculated field was not provisioned properly the first time"); new ObjectListInstance().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation()); var f2 = list.GetFieldById <FieldCalculated>(calculatedFieldId); Assert.IsNotNull(f2); Assert.IsInstanceOfType(f2, typeof(FieldCalculated)); Assert.IsFalse(f2.Formula.Contains('#') || f2.Formula.Contains('?'), "Calculated field was not provisioned properly the second time"); } }
public void CanExtractCalculatedFieldFromListInstance() { var template = new ProvisioningTemplate(); var listInstance = new ListInstance(); template.SiteFields.Add(new Core.Framework.Provisioning.Model.Field() { SchemaXml = ElementSchema }); listInstance.Url = string.Format("lists/{0}", listName); listInstance.Title = listName; listInstance.TemplateType = (int)ListTemplateType.GenericList; var referencedField = new FieldRef(); referencedField.Id = fieldId; listInstance.FieldRefs.Add(referencedField); var calculatedField = new Core.Framework.Provisioning.Model.Field(); calculatedField.SchemaXml = TokenizedCalculatedFieldElementSchema; listInstance.Fields.Add(calculatedField); template.Lists.Add(listInstance); using (var ctx = TestCommon.CreateClientContext()) { var parser = new TokenParser(ctx.Web, template); new ObjectField().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation()); new ObjectListInstance().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation()); var list = ctx.Web.GetListByUrl(listInstance.Url); Assert.IsNotNull(list); var rf = list.GetFieldById<FieldText>(fieldId); var f = list.GetFieldById<FieldCalculated>(calculatedFieldId); Assert.IsNotNull(rf, "Referenced field not added"); Assert.IsNotNull(f); Assert.IsInstanceOfType(f, typeof(FieldCalculated)); Assert.IsFalse(f.Formula.Contains('#') || f.Formula.Contains('?'), "Calculated field was not provisioned properly"); var extractedTemplate = new ProvisioningTemplate(); var provisioningTemplateCreationInformation = new ProvisioningTemplateCreationInformation(ctx.Web); new ObjectListInstance().ExtractObjects(ctx.Web, extractedTemplate, provisioningTemplateCreationInformation); XElement fieldElement = XElement.Parse(extractedTemplate.Lists.First(l => l.Title == listName).Fields.First(cf => Guid.Parse(XElement.Parse(cf.SchemaXml).Attribute("ID").Value).Equals(calculatedFieldId)).SchemaXml); var formula = fieldElement.Descendants("Formula").FirstOrDefault(); Assert.AreEqual(@"=[{fieldtitle:DemoField}]&""DemoField""", formula.Value, true, "Calculated field formula is not extracted properly"); } }
public void CanProvisionCalculatedFieldLocallyInListInstance() { //This test will fail as tokens does not support this scenario. //The test serves as a reminder that this is not supported and needs to be fixed in a future release. var template = new ProvisioningTemplate(); var listInstance = new ListInstance(); listInstance.Url = string.Format("lists/{0}", listName); listInstance.Title = listName; listInstance.TemplateType = (int)ListTemplateType.GenericList; var referencedField = new Core.Framework.Provisioning.Model.Field(); referencedField.SchemaXml = ElementSchema; listInstance.Fields.Add(referencedField); var calculatedField = new Core.Framework.Provisioning.Model.Field(); calculatedField.SchemaXml = TokenizedCalculatedFieldElementSchema; listInstance.Fields.Add(calculatedField); template.Lists.Add(listInstance); using (var ctx = TestCommon.CreateClientContext()) { var parser = new TokenParser(ctx.Web, template); new ObjectListInstance().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation()); var list = ctx.Web.GetListByUrl(listInstance.Url); Assert.IsNotNull(list); var rf = list.GetFieldById <FieldText>(fieldId); var f = list.GetFieldById <FieldCalculated>(calculatedFieldId); Assert.IsNotNull(rf, "Referenced field not added"); Assert.IsNotNull(f); Assert.IsInstanceOfType(f, typeof(FieldCalculated)); Assert.IsFalse(f.Formula.Contains('#') || f.Formula.Contains('?'), "Calculated field was not provisioned properly"); } }
public void CanProvisionCalculatedFieldInListInstance() { var template = new ProvisioningTemplate(); var listInstance = new ListInstance(); template.SiteFields.Add(new Core.Framework.Provisioning.Model.Field() { SchemaXml = ElementSchema }); listInstance.Url = string.Format("lists/{0}", listName); listInstance.Title = listName; listInstance.TemplateType = (int)ListTemplateType.GenericList; var referencedField = new FieldRef(); referencedField.Id = fieldId; listInstance.FieldRefs.Add(referencedField); var calculatedField = new Core.Framework.Provisioning.Model.Field(); calculatedField.SchemaXml = TokenizedCalculatedFieldElementSchema; listInstance.Fields.Add(calculatedField); template.Lists.Add(listInstance); using (var ctx = TestCommon.CreateClientContext()) { var parser = new TokenParser(ctx.Web, template); new ObjectField().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation()); new ObjectListInstance().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation()); var list = ctx.Web.GetListByUrl(listInstance.Url); Assert.IsNotNull(list); var rf = list.GetFieldById<FieldText>(fieldId); var f = list.GetFieldById<FieldCalculated>(calculatedFieldId); Assert.IsNotNull(rf, "Referenced field not added"); Assert.IsNotNull(f); Assert.IsInstanceOfType(f, typeof(FieldCalculated)); Assert.IsFalse(f.Formula.Contains('#') || f.Formula.Contains('?'), "Calculated field was not provisioned properly"); } }
public void CanProvisionCalculatedFieldLocallyInListInstance() { //This test will fail as tokens does not support this scenario. //The test serves as a reminder that this is not supported and needs to be fixed in a future release. var template = new ProvisioningTemplate(); var listInstance = new ListInstance(); listInstance.Url = string.Format("lists/{0}", listName); listInstance.Title = listName; listInstance.TemplateType = (int)ListTemplateType.GenericList; var referencedField = new Core.Framework.Provisioning.Model.Field(); referencedField.SchemaXml = ElementSchema; listInstance.Fields.Add(referencedField); var calculatedField = new Core.Framework.Provisioning.Model.Field(); calculatedField.SchemaXml = TokenizedCalculatedFieldElementSchema; listInstance.Fields.Add(calculatedField); template.Lists.Add(listInstance); using (var ctx = TestCommon.CreateClientContext()) { var parser = new TokenParser(ctx.Web, template); new ObjectListInstance().ProvisionObjects(ctx.Web, template, parser, new ProvisioningTemplateApplyingInformation()); var list = ctx.Web.GetListByUrl(listInstance.Url); Assert.IsNotNull(list); var rf = list.GetFieldById<FieldText>(fieldId); var f = list.GetFieldById<FieldCalculated>(calculatedFieldId); Assert.IsNotNull(rf, "Referenced field not added"); Assert.IsNotNull(f); Assert.IsInstanceOfType(f, typeof(FieldCalculated)); Assert.IsFalse(f.Formula.Contains('#') || f.Formula.Contains('?'), "Calculated field was not provisioned properly"); } }