diff --git a/src/Umbraco.Tests.Integration/TestServerTest/Controllers/TemplateQueryControllerTests.cs b/src/Umbraco.Tests.Integration/TestServerTest/Controllers/TemplateQueryControllerTests.cs new file mode 100644 index 0000000000..f2e4935a96 --- /dev/null +++ b/src/Umbraco.Tests.Integration/TestServerTest/Controllers/TemplateQueryControllerTests.cs @@ -0,0 +1,54 @@ +using System; +using System.Linq; +using System.Net; +using System.Threading.Tasks; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using NUnit.Framework; +using Umbraco.Core; +using Umbraco.Tests.Common.Builders.Extensions; +using Umbraco.Tests.Testing; +using Umbraco.Web.BackOffice.Controllers; +using Umbraco.Web.Common.Formatters; +using Umbraco.Web.Models.TemplateQuery; + +namespace Umbraco.Tests.Integration.TestServerTest.Controllers +{ + [Explicit("We need to fix the tests on buildserver and when running multiple tests in one run")] + [TestFixture] + [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)] + public class TemplateQueryControllerTests : UmbracoTestServerTestBase + { + [Test] + public async Task GetContentTypes__Ensure_camel_case() + { + var url = PrepareUrl(x => x.GetContentTypes()); + + // Act + var response = await Client.GetAsync(url); + + var body = await response.Content.ReadAsStringAsync(); + + body = body.TrimStart(AngularJsonMediaTypeFormatter.XsrfPrefix); + + // Assert + Assert.Multiple(() => + { + Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + + Assert.DoesNotThrow(() => JsonConvert.DeserializeObject(body)); + + var jtokens = JsonConvert.DeserializeObject(body); + foreach (var jToken in jtokens) + { + var alias = nameof(ContentTypeModel.Alias); + var camelCaseAlias = alias.ToCamelCase(); + Assert.IsNotNull(jToken.Value(camelCaseAlias), $"'{jToken}' do not contain the key '{camelCaseAlias}'"); + Assert.IsNull(jToken.Value(alias), $"'{jToken}' do contain the key '{alias}', which was not expect in that casing"); + } + }); + + + } + } +}