public void ChangeTypeTo <T>() where T : PropertyData { if (pageDefinition.IsNull()) { return; } PageDefinitionType newType = GetPageDefinitionType <T>(); if (newType.IsNull()) { log.WarnFormat( "Tried to change type of page definition named {0} associated with page type with id " + "{1} but was unable to find a page definition type for the new type ({2}).", pageDefinition.Name, pageDefinition.PageTypeID, typeof(T).Name); return; } log.DebugFormat( "Changing type of page definition named {0} associated with page type with id {1}" + " from type {2} to type {3}.", pageDefinition.Name, pageDefinition.PageTypeID, pageDefinition.Type.Name, newType.Name); pageDefinition.Type = newType; context.PageDefinitionRepository.Save(pageDefinition); }
public virtual PropertyDefinitionType MapType(PageDefinitionType pageDefinitionType) { // Replace types that has a Default Backing Types mapping with mapped type PropertyDefinitionType mapped; if (!string.IsNullOrEmpty(pageDefinitionType.TypeName) && DefaultTypeMapping.TryGetValue(pageDefinitionType.TypeName, out mapped)) { mapped = mapped.Copy(); } else { // All DataTypes have a mapping mapped = DefaultTypeMapping[pageDefinitionType.DataType].Copy(); if (!string.IsNullOrEmpty(pageDefinitionType.TypeName)) { mapped.BackingTypeName = pageDefinitionType.TypeName; // Any previously set UIHint will applies to the base type, we want to ensure that we are using legacy mode here! mapped.UIHint = _options.ForceLegacyPropertyWrapper ? LegacyWrapperUIHint : null; } } Type nullable; if (_options.UseNullableValueTypes && mapped.Type != null && NullableMapping.TryGetValue(mapped.Type, out nullable)) { mapped.Type = nullable; } return(mapped); }
public static void AddExtensionPageProperty(PageType pageType) { if (pageType.Definitions.Find(def => def.Name == "ExtensionPageProperty") == null) { if (pageType.Definitions.Find(def => def.Name == "ExtensionPageProperty") == null) { var item = new PageDefinition(); item.PageTypeID = pageType.ID; item.Name = "ExtensionPageProperty"; item.EditCaption = "ExtensionPageProperty"; item.HelpText = "Specialized For Extension Added By Extension (Do not remove)"; item.DefaultValueType = DefaultValueType.None; item.DefaultValue = ""; item.Type = PageTypeManager.ExtensionPageDefinitionType; item.ID = 0; item.Searchable = true; item.Tab = PageTypeManager.LoadExtensionTab(); item.DisplayEditUI = true; item.LanguageSpecific = true; item.LongStringSettings = 0; item.Save(); item.ClearCache(); pageType.Definitions.Add(item); } } PageDefinitionType.ClearCache(); }
public static void AddContentAreaProperty(PageType pageType, string name, string description) { Predicate <PageDefinition> match = null; if (pageType.Definitions.Find(def => def.Name == name) == null) { match = delegate(PageDefinition def) { return(def.Name == name); }; if (pageType.Definitions.Find(match) == null) { var item = new PageDefinition(); item.PageTypeID = pageType.ID; item.Name = name; item.EditCaption = name; item.HelpText = description; item.DefaultValueType = DefaultValueType.None; item.DefaultValue = ""; item.Type = PageTypeManager.ContentAreaPropertyType; item.ID = 0; item.Searchable = true; item.Tab = PageTypeManager.LoadExtensionTab(); item.DisplayEditUI = false; item.LanguageSpecific = false; item.LongStringSettings = 0; item.Save(); item.ClearCache(); pageType.Definitions.Add(item); PageDefinitionType.ClearCache(); } } }
public void MapType_WhenTypeNameIsEmpty_ShouldReturnMappedDataType() { var subject = CreateSubject(); var definitionType = new PageDefinitionType { DataType = "String" }; var propertyType = subject.MapType(definitionType); Assert.AreEqual(typeof(string), propertyType.Type); }
public void MapType_WhenTypeNameHasMapping_ShouldReturnMappedTypeName() { var subject = CreateSubject(); var definitionType = new PageDefinitionType { DataType = "String", TypeName = "EPiServer.SpecializedProperties.PropertyImageUrl" }; var propertyType = subject.MapType(definitionType); Assert.AreEqual("EPiServer.Url", propertyType.TypeName); }
public void MapType_WhenTypeNameHasNoMapping_ShouldReturnTypeAsBackingType() { var subject = CreateSubject(); var definitionType = new PageDefinitionType { DataType = "String", TypeName = "MyCustom.PropertyImageUrl" }; var propertyType = subject.MapType(definitionType); Assert.AreEqual(definitionType.TypeName, propertyType.BackingTypeName); }
public void MapType_WhenDataTypeIsTimeSpanAndUseNullableValueTypesIsSet_ShouldReturnNullableTimeSpan() { var subject = CreateSubject(new OptionsFake { UseNullableValueTypes = true }); var definitionType = new PageDefinitionType { TypeName = "EPiServer.SpecializedProperties.PropertyTimeSpan" }; var propertyType = subject.MapType(definitionType); Assert.AreEqual(typeof(TimeSpan?), propertyType.Type); }
public void MapType_WhenTypeNameHasNoMappingAnOptionIsNotSet_ShouldSetUIHintToNull() { var subject = CreateSubject(new OptionsFake { ForceLegacyPropertyWrapper = false }); var definitionType = new PageDefinitionType { DataType = "String", TypeName = "MyCustom.PropertyImageUrl" }; var propertyType = subject.MapType(definitionType); Assert.IsNull(propertyType.UIHint); }
public void MapType_WhenDataTypeIsBooleanAndUseNullableValueTypesIsSet_ShouldReturnBoolean() { var subject = CreateSubject(new OptionsFake { UseNullableValueTypes = true }); var definitionType = new PageDefinitionType { DataType = "Boolean" }; var propertyType = subject.MapType(definitionType); Assert.AreEqual(typeof(bool), propertyType.Type); }
public void MapType_WhenDataTypeIsFloatAndUseNullableValueTypesIsSet_ShouldReturnNullableDouble() { var subject = CreateSubject(new OptionsFake { UseNullableValueTypes = true }); var definitionType = new PageDefinitionType { DataType = "FloatNumber" }; var propertyType = subject.MapType(definitionType); Assert.AreEqual(typeof(double?), propertyType.Type); }
public void GivenPageTypePropertyDefinitionWithNativeType_GetPageDefinitionType_ReturnsCorrectPageDefinitionType() { PageTypePropertyDefinition definition = PageTypePropertyUpdaterTestsUtility.CreatePageTypePropertyDefinition(); definition.PageTypePropertyAttribute.Type = typeof(PropertyString); MockRepository fakes = new MockRepository(); PageDefinitionTypeFactory fakeFactory = fakes.Stub <PageDefinitionTypeFactory>(); PageDefinitionTypeMapper mapper = new PageDefinitionTypeMapper(fakeFactory); int nativeTypeID = mapper.GetNativeTypeID(definition.PageTypePropertyAttribute.Type); PageDefinitionType pageDefinitionTypeFromFactory = new PageDefinitionType(1, PropertyDataType.String, TestValueUtility.CreateRandomString()); fakeFactory.Stub(factory => factory.GetPageDefinitionType(nativeTypeID)).Return(pageDefinitionTypeFromFactory); fakeFactory.Replay(); PageDefinitionType returnedPageDefinitionType = mapper.GetPageDefinitionType(definition); Assert.Equal <PageDefinitionType>(pageDefinitionTypeFromFactory, returnedPageDefinitionType); }
public void GivenPageTypePropertyDefinitionWithNonNativeType_GetPageDefinitionType_ReturnsCorrectPageDefinitionType() { PageTypePropertyDefinition definition = PageDefinitionSynchronizationEngineTestsUtility.CreatePageTypePropertyDefinition(); definition.PageTypePropertyAttribute.Type = typeof(PropertyXhtmlString); MockRepository fakes = new MockRepository(); PageDefinitionTypeRepository fakeRepository = fakes.Stub <PageDefinitionTypeRepository>(); PageDefinitionTypeMapper mapper = new PageDefinitionTypeMapper(fakeRepository, new NativePageDefinitionsMap()); PageDefinitionType pageDefinitionTypeFromFactory = new PageDefinitionType(1, PropertyDataType.String, TestValueUtility.CreateRandomString()); string typeName = definition.PageTypePropertyAttribute.Type.FullName; string assemblyName = definition.PageTypePropertyAttribute.Type.Assembly.GetName().Name; fakeRepository.Stub(factory => factory.GetPageDefinitionType(typeName, assemblyName)).Return(pageDefinitionTypeFromFactory); fakeRepository.Replay(); PageDefinitionType returnedPageDefinitionType = mapper.GetPageDefinitionType(definition); Assert.Equal <PageDefinitionType>(pageDefinitionTypeFromFactory, returnedPageDefinitionType); }
public void GivenPageTypePropertyDefinition_CreateNewPageDefinition_ReturnsPageDefinitionWithCorrectType2() { PageDefinitionType expectedPageDefintionType = new PageDefinitionType( 1, PropertyDataType.String, TestValueUtility.CreateRandomString()); PageTypePropertyDefinition pageTypePropertyDefinition = PageTypePropertyUpdaterTestsUtility.CreatePageTypePropertyDefinition(); PageDefinition pageDefinition = new PageDefinition(); MockRepository fakes = new MockRepository(); PageTypePropertyUpdater pageTypePropertyUpdater = PageTypePropertyUpdaterFactory.PartialMock(fakes); pageTypePropertyUpdater.Stub( utility => utility.GetPageDefinitionType(pageTypePropertyDefinition) ).Return(expectedPageDefintionType); pageTypePropertyUpdater.Replay(); pageTypePropertyUpdater.SetPageDefinitionType(pageDefinition, pageTypePropertyDefinition); Assert.Equal <PageDefinitionType>(expectedPageDefintionType, pageDefinition.Type); }
public void Map_ShouldFilterOutComposerSystemProperties() { var validProperty = "MainBody"; var definitionType = new PageDefinitionType { DataType = "String" }; var source = new PageType { Name = "SomePage", GUID = Guid.NewGuid(), Definitions = { new PageDefinition { Name = validProperty, Type = definitionType }, new PageDefinition { Name = ComposerProperties.Page, Type = definitionType }, new PageDefinition { Name = ComposerProperties.ContainerPage, Type = definitionType }, new PageDefinition { Name = ComposerProperties.ContentFunction, Type = definitionType }, new PageDefinition { Name = ComposerProperties.NeverUsed, Type = definitionType }, new PageDefinition { Name = ComposerProperties.PersonalizationData, Type = definitionType } } }; var subject = CreateSubject(); var result = subject.Map(source); Assert.AreEqual(validProperty, result.PropertyDefinitions.Single().Name); }
public static void AddContentAreaProperty(PageType pageType, string name, string description) { Predicate <PageDefinition> match = null; if (pageType.Definitions.Find(def => def.Name == name) == null) { match = delegate(PageDefinition def) { return(def.Name == name); }; if (pageType.Definitions.Find(match) == null) { var item = new PageDefinition { PageTypeID = pageType.ID, Name = name, EditCaption = name, HelpText = string.IsNullOrEmpty(description) ? string.Empty : description, DefaultValueType = DefaultValueType.None, DefaultValue = "", Type = PageTypeManager.ContentAreaPropertyType, ID = 0, Searchable = true, Tab = PageTypeManager.LoadExtensionTab(), DisplayEditUI = false, LanguageSpecific = false, LongStringSettings = 0 }; item.Save(); item.ClearCache(); pageType.Definitions.Add(item); PageDefinitionType.ClearCache(); } } }
public void GivenPageTypePropertyDefinitionWithNonNativeType_GetPageDefinitionType_ReturnsCorrectPageDefinitionType() { PageTypePropertyDefinition definition = PageTypePropertyUpdaterTestsUtility.CreatePageTypePropertyDefinition(); definition.PageTypePropertyAttribute.Type = typeof(PropertyXhtmlString); MockRepository fakes = new MockRepository(); PageDefinitionTypeFactory fakeFactory = fakes.Stub<PageDefinitionTypeFactory>(); PageDefinitionTypeMapper mapper = new PageDefinitionTypeMapper(fakeFactory); PageDefinitionType pageDefinitionTypeFromFactory = new PageDefinitionType(1, PropertyDataType.String, TestValueUtility.CreateRandomString()); string typeName = definition.PageTypePropertyAttribute.Type.FullName; string assemblyName = definition.PageTypePropertyAttribute.Type.Assembly.GetName().Name; fakeFactory.Stub(factory => factory.GetPageDefinitionType(typeName, assemblyName)).Return(pageDefinitionTypeFromFactory); fakeFactory.Replay(); PageDefinitionType returnedPageDefinitionType = mapper.GetPageDefinitionType(definition); Assert.Equal<PageDefinitionType>(pageDefinitionTypeFromFactory, returnedPageDefinitionType); }
public void GivenPageTypePropertyDefinitionWithNativeType_GetPageDefinitionType_ReturnsCorrectPageDefinitionType() { PageTypePropertyDefinition definition = PageDefinitionSynchronizationEngineTestsUtility.CreatePageTypePropertyDefinition(); definition.PageTypePropertyAttribute.Type = typeof(PropertyString); MockRepository fakes = new MockRepository(); PageDefinitionTypeRepository fakeRepository = fakes.Stub<PageDefinitionTypeRepository>(); PageDefinitionTypeMapper mapper = new PageDefinitionTypeMapper(fakeRepository, new NativePageDefinitionsMap()); int nativeTypeID = new NativePageDefinitionsMap().GetNativeTypeID(definition.PageTypePropertyAttribute.Type); PageDefinitionType pageDefinitionTypeFromFactory = new PageDefinitionType(1, PropertyDataType.String, TestValueUtility.CreateRandomString()); fakeRepository.Stub(factory => factory.GetPageDefinitionType(nativeTypeID)).Return(pageDefinitionTypeFromFactory); fakeRepository.Replay(); PageDefinitionType returnedPageDefinitionType = mapper.GetPageDefinitionType(definition); Assert.Equal<PageDefinitionType>(pageDefinitionTypeFromFactory, returnedPageDefinitionType); }
public void GivenPageTypePropertyDefinition_CreateNewPageDefinition_ReturnsPageDefinitionWithCorrectType2() { PageDefinitionType expectedPageDefintionType = new PageDefinitionType( 1, PropertyDataType.String, TestValueUtility.CreateRandomString()); PageTypePropertyDefinition pageTypePropertyDefinition = PageTypePropertyUpdaterTestsUtility.CreatePageTypePropertyDefinition(); PageDefinition pageDefinition = new PageDefinition(); MockRepository fakes = new MockRepository(); PageTypePropertyUpdater pageTypePropertyUpdater = PageTypePropertyUpdaterFactory.PartialMock(fakes); pageTypePropertyUpdater.Stub( utility => utility.GetPageDefinitionType(pageTypePropertyDefinition) ).Return(expectedPageDefintionType); pageTypePropertyUpdater.Replay(); pageTypePropertyUpdater.SetPageDefinitionType(pageDefinition, pageTypePropertyDefinition); Assert.Equal<PageDefinitionType>(expectedPageDefintionType, pageDefinition.Type); }
public virtual PageDefinitionType GetPageDefinitionType(string typeName, string assemblyName) { return(PageDefinitionType.Load(typeName, assemblyName)); }
public virtual PageDefinitionType GetPageDefinitionType(int id) { return(PageDefinitionType.Load(id)); }