Fixing tests, don't expose UmbracoContext on UmbracoHelper, fixing all of the editor constructors

This commit is contained in:
Shannon
2019-02-01 15:24:07 +11:00
parent 493ee63cb9
commit c2ff32aaab
22 changed files with 245 additions and 73 deletions

View File

@@ -30,6 +30,11 @@ using System;
using Umbraco.Web.WebApi;
using Umbraco.Web.Trees;
using System.Globalization;
using Umbraco.Core;
using Umbraco.Core.Cache;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence;
using Umbraco.Web.Actions;
namespace Umbraco.Tests.Web.Controllers
@@ -206,17 +211,28 @@ namespace Umbraco.Tests.Web.Controllers
[Test]
public async Task PostSave_Validate_Existing_Content()
{
ApiController Factory(HttpRequestMessage message, UmbracoHelper helper)
ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper)
{
var contentServiceMock = Mock.Get(Current.Services.ContentService);
contentServiceMock.Setup(x => x.GetById(123)).Returns(() => null); //do not find it
var propertyEditorCollection = new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty<DataEditor>()));
var usersController = new ContentController(propertyEditorCollection);
return usersController;
var controller = new ContentController(
propertyEditorCollection,
Factory.GetInstance<IGlobalSettings>(),
umbracoContext,
Factory.GetInstance<ISqlContext>(),
Factory.GetInstance<ServiceContext>(),
Factory.GetInstance<AppCaches>(),
Factory.GetInstance<IProfilingLogger>(),
Factory.GetInstance<IRuntimeState>(),
helper);
return controller;
}
var runner = new TestRunner(Factory);
var runner = new TestRunner(CtrlFactory);
var response = await runner.Execute("Content", "PostSave", HttpMethod.Post,
content: GetMultiPartRequestContent(PublishJsonInvariant),
mediaTypeHeader: new MediaTypeWithQualityHeaderValue("multipart/form-data"),
@@ -232,21 +248,31 @@ namespace Umbraco.Tests.Web.Controllers
[Test]
public async Task PostSave_Validate_At_Least_One_Variant_Flagged_For_Saving()
{
ApiController Factory(HttpRequestMessage message, UmbracoHelper helper)
ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper)
{
var contentServiceMock = Mock.Get(Current.Services.ContentService);
contentServiceMock.Setup(x => x.GetById(123)).Returns(() => GetMockedContent());
var propertyEditorCollection = new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty<DataEditor>()));
var usersController = new ContentController(propertyEditorCollection);
return usersController;
var controller = new ContentController(
propertyEditorCollection,
Factory.GetInstance<IGlobalSettings>(),
umbracoContext,
Factory.GetInstance<ISqlContext>(),
Factory.GetInstance<ServiceContext>(),
Factory.GetInstance<AppCaches>(),
Factory.GetInstance<IProfilingLogger>(),
Factory.GetInstance<IRuntimeState>(),
helper);
return controller;
}
var json = JsonConvert.DeserializeObject<JObject>(PublishJsonInvariant);
//remove all save flaggs
((JArray)json["variants"])[0]["save"] = false;
var runner = new TestRunner(Factory);
var runner = new TestRunner(CtrlFactory);
var response = await runner.Execute("Content", "PostSave", HttpMethod.Post,
content: GetMultiPartRequestContent(JsonConvert.SerializeObject(json)),
mediaTypeHeader: new MediaTypeWithQualityHeaderValue("multipart/form-data"),
@@ -263,14 +289,24 @@ namespace Umbraco.Tests.Web.Controllers
[Test]
public async Task PostSave_Validate_Properties_Exist()
{
ApiController Factory(HttpRequestMessage message, UmbracoHelper helper)
ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper)
{
var contentServiceMock = Mock.Get(Current.Services.ContentService);
contentServiceMock.Setup(x => x.GetById(123)).Returns(() => GetMockedContent());
var propertyEditorCollection = new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty<DataEditor>()));
var usersController = new ContentController(propertyEditorCollection);
return usersController;
var controller = new ContentController(
propertyEditorCollection,
Factory.GetInstance<IGlobalSettings>(),
umbracoContext,
Factory.GetInstance<ISqlContext>(),
Factory.GetInstance<ServiceContext>(),
Factory.GetInstance<AppCaches>(),
Factory.GetInstance<IProfilingLogger>(),
Factory.GetInstance<IRuntimeState>(),
helper);
return controller;
}
var json = JsonConvert.DeserializeObject<JObject>(PublishJsonInvariant);
@@ -283,7 +319,7 @@ namespace Umbraco.Tests.Web.Controllers
value = "hello"
}));
var runner = new TestRunner(Factory);
var runner = new TestRunner(CtrlFactory);
var response = await runner.Execute("Content", "PostSave", HttpMethod.Post,
content: GetMultiPartRequestContent(JsonConvert.SerializeObject(json)),
mediaTypeHeader: new MediaTypeWithQualityHeaderValue("multipart/form-data"),
@@ -297,7 +333,7 @@ namespace Umbraco.Tests.Web.Controllers
{
var content = GetMockedContent();
ApiController Factory(HttpRequestMessage message, UmbracoHelper helper)
ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper)
{
var contentServiceMock = Mock.Get(Current.Services.ContentService);
@@ -306,11 +342,21 @@ namespace Umbraco.Tests.Web.Controllers
.Returns(new OperationResult(OperationResultType.Success, new Core.Events.EventMessages())); //success
var propertyEditorCollection = new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty<DataEditor>()));
var usersController = new ContentController(propertyEditorCollection);
return usersController;
var controller = new ContentController(
propertyEditorCollection,
Factory.GetInstance<IGlobalSettings>(),
umbracoContext,
Factory.GetInstance<ISqlContext>(),
Factory.GetInstance<ServiceContext>(),
Factory.GetInstance<AppCaches>(),
Factory.GetInstance<IProfilingLogger>(),
Factory.GetInstance<IRuntimeState>(),
helper);
return controller;
}
var runner = new TestRunner(Factory);
var runner = new TestRunner(CtrlFactory);
var response = await runner.Execute("Content", "PostSave", HttpMethod.Post,
content: GetMultiPartRequestContent(PublishJsonInvariant),
mediaTypeHeader: new MediaTypeWithQualityHeaderValue("multipart/form-data"),
@@ -328,7 +374,7 @@ namespace Umbraco.Tests.Web.Controllers
{
var content = GetMockedContent();
ApiController Factory(HttpRequestMessage message, UmbracoHelper helper)
ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper)
{
var contentServiceMock = Mock.Get(Current.Services.ContentService);
@@ -337,15 +383,25 @@ namespace Umbraco.Tests.Web.Controllers
.Returns(new OperationResult(OperationResultType.Success, new Core.Events.EventMessages())); //success
var propertyEditorCollection = new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty<DataEditor>()));
var usersController = new ContentController(propertyEditorCollection);
return usersController;
var controller = new ContentController(
propertyEditorCollection,
Factory.GetInstance<IGlobalSettings>(),
umbracoContext,
Factory.GetInstance<ISqlContext>(),
Factory.GetInstance<ServiceContext>(),
Factory.GetInstance<AppCaches>(),
Factory.GetInstance<IProfilingLogger>(),
Factory.GetInstance<IRuntimeState>(),
helper);
return controller;
}
//clear out the name
var json = JsonConvert.DeserializeObject<JObject>(PublishJsonInvariant);
json["variants"].ElementAt(0)["name"] = null;
var runner = new TestRunner(Factory);
var runner = new TestRunner(CtrlFactory);
var response = await runner.Execute("Content", "PostSave", HttpMethod.Post,
content: GetMultiPartRequestContent(JsonConvert.SerializeObject(json)),
mediaTypeHeader: new MediaTypeWithQualityHeaderValue("multipart/form-data"),
@@ -363,7 +419,7 @@ namespace Umbraco.Tests.Web.Controllers
{
var content = GetMockedContent();
ApiController Factory(HttpRequestMessage message, UmbracoHelper helper)
ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper)
{
var contentServiceMock = Mock.Get(Current.Services.ContentService);
@@ -372,15 +428,25 @@ namespace Umbraco.Tests.Web.Controllers
.Returns(new OperationResult(OperationResultType.Success, new Core.Events.EventMessages())); //success
var propertyEditorCollection = new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty<DataEditor>()));
var usersController = new ContentController(propertyEditorCollection);
return usersController;
var controller = new ContentController(
propertyEditorCollection,
Factory.GetInstance<IGlobalSettings>(),
umbracoContext,
Factory.GetInstance<ISqlContext>(),
Factory.GetInstance<ServiceContext>(),
Factory.GetInstance<AppCaches>(),
Factory.GetInstance<IProfilingLogger>(),
Factory.GetInstance<IRuntimeState>(),
helper);
return controller;
}
//clear out one of the names
var json = JsonConvert.DeserializeObject<JObject>(PublishJsonVariant);
json["variants"].ElementAt(0)["name"] = null;
var runner = new TestRunner(Factory);
var runner = new TestRunner(CtrlFactory);
var response = await runner.Execute("Content", "PostSave", HttpMethod.Post,
content: GetMultiPartRequestContent(JsonConvert.SerializeObject(json)),
mediaTypeHeader: new MediaTypeWithQualityHeaderValue("multipart/form-data"),

View File

@@ -7,9 +7,13 @@ using Moq;
using Newtonsoft.Json;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Cache;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
using Umbraco.Core.Persistence.Mappers;
using Umbraco.Core.Persistence.Querying;
@@ -49,7 +53,7 @@ namespace Umbraco.Tests.Web.Controllers
[Test]
public async System.Threading.Tasks.Task Save_User()
{
ApiController Factory(HttpRequestMessage message, UmbracoHelper helper)
ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper)
{
//setup some mocks
Umbraco.Core.Configuration.GlobalSettings.HasSmtpServer = true;
@@ -68,7 +72,15 @@ namespace Umbraco.Tests.Web.Controllers
userServiceMock.Setup(service => service.GetUserById(It.IsAny<int>()))
.Returns((int id) => id == 1234 ? new User(1234, "Test", "test@test.com", "test@test.com", "", new List<IReadOnlyUserGroup>(), new int[0], new int[0]) : null);
var usersController = new UsersController();
var usersController = new UsersController(
Factory.GetInstance<IGlobalSettings>(),
umbracoContext,
Factory.GetInstance<ISqlContext>(),
Factory.GetInstance<ServiceContext>(),
Factory.GetInstance<AppCaches>(),
Factory.GetInstance<IProfilingLogger>(),
Factory.GetInstance<IRuntimeState>(),
helper);
return usersController;
}
@@ -82,7 +94,7 @@ namespace Umbraco.Tests.Web.Controllers
UserGroups = new[] { "writers" }
};
var runner = new TestRunner(Factory);
var runner = new TestRunner(CtrlFactory);
var response = await runner.Execute("Users", "PostSaveUser", HttpMethod.Post,
new ObjectContent<UserSave>(userSave, new JsonMediaTypeFormatter()));
var obj = JsonConvert.DeserializeObject<UserDisplay>(response.Item2);
@@ -122,15 +134,23 @@ namespace Umbraco.Tests.Web.Controllers
[Test]
public async System.Threading.Tasks.Task GetPagedUsers_Empty()
{
ApiController Factory(HttpRequestMessage message, UmbracoHelper helper)
ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper)
{
var usersController = new UsersController();
var usersController = new UsersController(
Factory.GetInstance<IGlobalSettings>(),
umbracoContext,
Factory.GetInstance<ISqlContext>(),
Factory.GetInstance<ServiceContext>(),
Factory.GetInstance<AppCaches>(),
Factory.GetInstance<IProfilingLogger>(),
Factory.GetInstance<IRuntimeState>(),
helper);
return usersController;
}
MockForGetPagedUsers();
var runner = new TestRunner(Factory);
var runner = new TestRunner(CtrlFactory);
var response = await runner.Execute("Users", "GetPagedUsers", HttpMethod.Get);
var obj = JsonConvert.DeserializeObject<PagedResult<UserDisplay>>(response.Item2);
@@ -140,7 +160,7 @@ namespace Umbraco.Tests.Web.Controllers
[Test]
public async System.Threading.Tasks.Task GetPagedUsers_10()
{
ApiController Factory(HttpRequestMessage message, UmbracoHelper helper)
ApiController CtrlFactory(HttpRequestMessage message, UmbracoContext umbracoContext, UmbracoHelper helper)
{
//setup some mocks
var userServiceMock = Mock.Get(Current.Services.UserService);
@@ -151,13 +171,21 @@ namespace Umbraco.Tests.Web.Controllers
It.IsAny<UserState[]>(), It.IsAny<string[]>(), It.IsAny<string[]>(), It.IsAny<IQuery<IUser>>()))
.Returns(() => users);
var usersController = new UsersController();
var usersController = new UsersController(
Factory.GetInstance<IGlobalSettings>(),
umbracoContext,
Factory.GetInstance<ISqlContext>(),
Factory.GetInstance<ServiceContext>(),
Factory.GetInstance<AppCaches>(),
Factory.GetInstance<IProfilingLogger>(),
Factory.GetInstance<IRuntimeState>(),
helper);
return usersController;
}
MockForGetPagedUsers();
var runner = new TestRunner(Factory);
var runner = new TestRunner(CtrlFactory);
var response = await runner.Execute("Users", "GetPagedUsers", HttpMethod.Get);
var obj = JsonConvert.DeserializeObject<PagedResult<UserDisplay>>(response.Item2);