diff --git a/src/Umbraco.Tests/LegacyApi/MediaTypeTests.cs b/src/Umbraco.Tests/LegacyApi/MediaTypeTests.cs index 6f55b1630f..2d187b35f6 100644 --- a/src/Umbraco.Tests/LegacyApi/MediaTypeTests.cs +++ b/src/Umbraco.Tests/LegacyApi/MediaTypeTests.cs @@ -3,6 +3,8 @@ using System.Linq; using NUnit.Framework; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; +using umbraco.BusinessLogic; +using umbraco.cms.businesslogic.datatype; using umbraco.cms.businesslogic.media; namespace Umbraco.Tests.LegacyApi @@ -37,6 +39,49 @@ namespace Umbraco.Tests.LegacyApi Assert.That(updated.AllowedChildContentTypeIDs.Any(x => x == 1045), Is.True); } + [Test] + public void Can_Set_Tab_On_PropertyType() + { + var UPLOAD_DATATYPE_ID = -90; + var CROP_DATATYPE_ID = 1043; + var LABEL_DATATYPE_ID = -92; + var mediaTypeName = "ImageWide"; + + MediaType mediaType = MediaType.MakeNew(new User(0), mediaTypeName); + + int imageTab = mediaType.AddVirtualTab("Image"); + int cropTab = mediaType.AddVirtualTab("Crop"); + + mediaType.AddPropertyType(new DataTypeDefinition(UPLOAD_DATATYPE_ID), "umbracoFile", "Upload image"); + mediaType.AddPropertyType(new DataTypeDefinition(LABEL_DATATYPE_ID), "umbracoWidth", "Width"); + mediaType.AddPropertyType(new DataTypeDefinition(LABEL_DATATYPE_ID), "umbracoHeight", "Height"); + mediaType.AddPropertyType(new DataTypeDefinition(LABEL_DATATYPE_ID), "umbracoBytes", "Size"); + mediaType.AddPropertyType(new DataTypeDefinition(LABEL_DATATYPE_ID), "umbracoExtension", "Type"); + mediaType.AddPropertyType(new DataTypeDefinition(CROP_DATATYPE_ID), "wideImage", "Wide image"); + + mediaType.SetTabOnPropertyType(mediaType.getPropertyType("umbracoFile"), imageTab); + mediaType.SetTabOnPropertyType(mediaType.getPropertyType("umbracoWidth"), imageTab); + mediaType.SetTabOnPropertyType(mediaType.getPropertyType("umbracoHeight"), imageTab); + mediaType.SetTabOnPropertyType(mediaType.getPropertyType("umbracoBytes"), imageTab); + mediaType.SetTabOnPropertyType(mediaType.getPropertyType("umbracoExtension"), imageTab); + mediaType.SetTabOnPropertyType(mediaType.getPropertyType("wideImage"), cropTab); + + mediaType.Text = mediaTypeName; + mediaType.IconUrl = "mediaPhoto.gif"; + mediaType.Save(); + + Assert.That(mediaType.getVirtualTabs.Count(), Is.EqualTo(2)); + Assert.That(mediaType.getVirtualTabs.Any(x => x.Caption.Equals("Image")), Is.True); + Assert.That(mediaType.getVirtualTabs.Any(x => x.Caption.Equals("Crop")), Is.True); + + var updated = new MediaType(mediaType.Id); + Assert.That(updated.getVirtualTabs.Count(), Is.EqualTo(2)); + Assert.That(updated.getVirtualTabs.Any(x => x.Caption.Equals("Image")), Is.True); + Assert.That(updated.getVirtualTabs.Any(x => x.Caption.Equals("Crop")), Is.True); + Assert.That(updated.ContentTypeItem.PropertyGroups.Count(), Is.EqualTo(2)); + Assert.That(updated.ContentTypeItem.PropertyTypes.Count(), Is.EqualTo(6)); + } + public void CreateTestData() { //Create and Save ContentType "video" -> 1045 diff --git a/src/umbraco.cms/businesslogic/media/MediaType.cs b/src/umbraco.cms/businesslogic/media/MediaType.cs index 5225972e79..2adc4f1ee4 100644 --- a/src/umbraco.cms/businesslogic/media/MediaType.cs +++ b/src/umbraco.cms/businesslogic/media/MediaType.cs @@ -118,6 +118,7 @@ namespace umbraco.cms.businesslogic.media //Ensure that MediaTypes are reloaded from db by clearing cache InMemoryCacheProvider.Current.Clear(); + RuntimeCacheProvider.Current.Clear(); base.Save();