using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Web.Models.ContentEditing; namespace Umbraco.Tests.Web.AngularIntegration { [TestFixture] public class ContentModelSerializationTests { [Test] public void Content_Display_To_Json() { //create 3 tabs with 3 properties each var tabs = new List>(); for (var tabIndex = 0; tabIndex < 3; tabIndex ++) { var props = new List(); for (var propertyIndex = 0; propertyIndex < 3; propertyIndex ++) { props.Add(new ContentPropertyDisplay { Alias = "property" + propertyIndex, Label = "Property " + propertyIndex, Id = propertyIndex, Value = "value" + propertyIndex, Config = new Dictionary {{ propertyIndex.ToInvariantString(), "value" }}, Description = "Description " + propertyIndex, View = "~/Views/View" + propertyIndex, HideLabel = false }); } tabs.Add(new Tab() { Alias = "Tab" + tabIndex, Label = "Tab" + tabIndex, Properties = props }); } var displayModel = new ContentItemDisplay { Id = 1234, Name = "Test", Tabs = tabs }; var json = JsonConvert.SerializeObject(displayModel); var jObject = JObject.Parse(json); Assert.AreEqual("1234", jObject["id"].ToString()); Assert.AreEqual("Test", jObject["name"].ToString()); Assert.AreEqual(3, jObject["tabs"].Count()); for (var tab = 0; tab < jObject["tabs"].Count(); tab++) { Assert.AreEqual("Tab" + tab, jObject["tabs"][tab]["alias"].ToString()); Assert.AreEqual("Tab" + tab, jObject["tabs"][tab]["label"].ToString()); Assert.AreEqual(3, jObject["tabs"][tab]["properties"].Count()); for (var prop = 0; prop < jObject["tabs"][tab]["properties"].Count(); prop++) { Assert.AreEqual("property" + prop, jObject["tabs"][tab]["properties"][prop]["alias"].ToString()); Assert.AreEqual("Property " + prop, jObject["tabs"][tab]["properties"][prop]["label"].ToString()); Assert.AreEqual(prop, jObject["tabs"][tab]["properties"][prop]["id"].Value()); Assert.AreEqual("value" + prop, jObject["tabs"][tab]["properties"][prop]["value"].ToString()); Assert.AreEqual("{\"" + prop + "\":\"value\"}", jObject["tabs"][tab]["properties"][prop]["config"].ToString(Formatting.None)); Assert.AreEqual("Description " + prop, jObject["tabs"][tab]["properties"][prop]["description"].ToString()); Assert.AreEqual(false, jObject["tabs"][tab]["properties"][prop]["hideLabel"].Value()); } } } } }