Moving content xml test to seperate test class for easier teardown of test.
Adding test to account for UserService using httpcontext for looking up current backoffice user.
This commit is contained in:
70
src/Umbraco.Tests/Models/ContentXmlTest.cs
Normal file
70
src/Umbraco.Tests/Models/ContentXmlTest.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
using System;
|
||||
using System.Xml.Linq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.ObjectResolution;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Tests.TestHelpers.Entities;
|
||||
using umbraco.editorControls.tinyMCE3;
|
||||
using umbraco.interfaces;
|
||||
|
||||
namespace Umbraco.Tests.Models
|
||||
{
|
||||
[TestFixture]
|
||||
public class ContentXmlTest : BaseDatabaseFactoryTest
|
||||
{
|
||||
[SetUp]
|
||||
public override void Initialize()
|
||||
{
|
||||
//this ensures its reset
|
||||
PluginManager.Current = new PluginManager();
|
||||
|
||||
//for testing, we'll specify which assemblies are scanned for the PluginTypeResolver
|
||||
PluginManager.Current.AssembliesToScan = new[]
|
||||
{
|
||||
typeof(IDataType).Assembly,
|
||||
typeof(tinyMCE3dataType).Assembly
|
||||
};
|
||||
|
||||
DataTypesResolver.Current = new DataTypesResolver(
|
||||
PluginManager.Current.ResolveDataTypes());
|
||||
|
||||
base.Initialize();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public override void TearDown()
|
||||
{
|
||||
DatabaseContext.Database.Dispose();
|
||||
|
||||
TestHelper.ClearDatabase();
|
||||
|
||||
//reset the app context
|
||||
ApplicationContext.Current = null;
|
||||
Resolution.IsFrozen = false;
|
||||
|
||||
string path = TestHelper.CurrentAssemblyDirectory;
|
||||
AppDomain.CurrentDomain.SetData("DataDirectory", null);
|
||||
}
|
||||
[Test]
|
||||
public void Can_Generate_Xml_Representation_Of_Content()
|
||||
{
|
||||
// Arrange
|
||||
var contentType = MockedContentTypes.CreateTextpageContentType();
|
||||
ServiceContext.ContentTypeService.Save(contentType);
|
||||
|
||||
var content = MockedContent.CreateTextpageContent(contentType, "Root Home", -1);
|
||||
ServiceContext.ContentService.Save(content, 0);
|
||||
|
||||
var nodeName = content.ContentType.Alias.ToUmbracoAlias(StringAliasCaseType.CamelCase, true);
|
||||
|
||||
// Act
|
||||
XElement element = content.ToXml();
|
||||
|
||||
// Assert
|
||||
Assert.That(element, Is.Not.Null);
|
||||
Assert.That(element.Name.LocalName, Is.EqualTo(nodeName));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Xml.Linq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Rdbms;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Tests.TestHelpers.Entities;
|
||||
using umbraco.editorControls.tinyMCE3;
|
||||
using umbraco.interfaces;
|
||||
|
||||
namespace Umbraco.Tests.Services
|
||||
{
|
||||
@@ -23,19 +20,6 @@ namespace Umbraco.Tests.Services
|
||||
[SetUp]
|
||||
public override void Initialize()
|
||||
{
|
||||
//this ensures its reset
|
||||
PluginManager.Current = new PluginManager();
|
||||
|
||||
//for testing, we'll specify which assemblies are scanned for the PluginTypeResolver
|
||||
PluginManager.Current.AssembliesToScan = new[]
|
||||
{
|
||||
typeof(IDataType).Assembly,
|
||||
typeof(tinyMCE3dataType).Assembly
|
||||
};
|
||||
|
||||
DataTypesResolver.Current = new DataTypesResolver(
|
||||
PluginManager.Current.ResolveDataTypes());
|
||||
|
||||
base.Initialize();
|
||||
|
||||
CreateTestData();
|
||||
@@ -44,15 +28,9 @@ namespace Umbraco.Tests.Services
|
||||
[TearDown]
|
||||
public override void TearDown()
|
||||
{
|
||||
TestHelper.ClearDatabase();
|
||||
|
||||
base.TearDown();
|
||||
}
|
||||
|
||||
//TODO Write a test that creates content, but uses the HttpContext to resolve the backoffice user
|
||||
//Just need to add a contextId cookie to the FakeHttpContextFactory in Umbraco.Tests.TestHelpers
|
||||
//Create/insert a new UserDto for testing.
|
||||
|
||||
[Test]
|
||||
public void Can_Create_Content()
|
||||
{
|
||||
@@ -67,6 +45,44 @@ namespace Umbraco.Tests.Services
|
||||
Assert.That(content.HasIdentity, Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Create_Content_Using_HttpContext()
|
||||
{
|
||||
// Arrange
|
||||
var userId =
|
||||
Convert.ToInt32(
|
||||
DatabaseContext.Database.Insert(new UserDto
|
||||
{
|
||||
ContentStartId = -1,
|
||||
DefaultPermissions = null,
|
||||
DefaultToLiveEditing = false,
|
||||
Disabled = false,
|
||||
Email = "my@email.com",
|
||||
Login = "editor",
|
||||
MediaStartId = -1,
|
||||
NoConsole = false,
|
||||
Password = "1234",
|
||||
Type = 3,
|
||||
UserLanguage = "en",
|
||||
UserName = "John Doe the Editor"
|
||||
}));
|
||||
DatabaseContext.Database.Insert(new UserLoginDto
|
||||
{
|
||||
UserId = userId,
|
||||
ContextId = new Guid("FBA996E7-D6BE-489B-B199-2B0F3D2DD826"),
|
||||
Timeout = 634596443995451258
|
||||
});
|
||||
var contentService = ServiceContext.ContentService;
|
||||
|
||||
// Act
|
||||
var content = contentService.CreateContent(-1, "umbTextpage");
|
||||
|
||||
// Assert
|
||||
Assert.That(content, Is.Not.Null);
|
||||
Assert.That(content.HasIdentity, Is.False);
|
||||
Assert.That(content.Creator.Id, Is.EqualTo(userId));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Cannot_Create_Content_With_Non_Existing_ContentType_Alias()
|
||||
{
|
||||
@@ -568,26 +584,6 @@ namespace Umbraco.Tests.Services
|
||||
Assert.AreEqual(subpage2.Name, rollback.Name);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Generate_Xml_Representation_Of_Content()
|
||||
{
|
||||
// Arrange
|
||||
var contentType = MockedContentTypes.CreateTextpageContentType();
|
||||
ServiceContext.ContentTypeService.Save(contentType);
|
||||
|
||||
var content = MockedContent.CreateTextpageContent(contentType, "Root Home", -1);
|
||||
ServiceContext.ContentService.Save(content, 0);
|
||||
|
||||
var nodeName = content.ContentType.Alias.ToUmbracoAlias(StringAliasCaseType.CamelCase, true);
|
||||
|
||||
// Act
|
||||
XElement element = content.ToXml();
|
||||
|
||||
// Assert
|
||||
Assert.That(element, Is.Not.Null);
|
||||
Assert.That(element.Name.LocalName, Is.EqualTo(nodeName));
|
||||
}
|
||||
|
||||
public void CreateTestData()
|
||||
{
|
||||
//NOTE Maybe not the best way to create/save test data as we are using the services, which are being tested.
|
||||
|
||||
@@ -55,8 +55,11 @@ namespace Umbraco.Tests.TestHelpers
|
||||
|
||||
RequestContext = MockRepository.GenerateMock<RequestContext>();
|
||||
|
||||
//Request
|
||||
//Cookie collection
|
||||
var cookieCollection = new HttpCookieCollection();
|
||||
cookieCollection.Add(new HttpCookie("UMB_UCONTEXT", "FBA996E7-D6BE-489B-B199-2B0F3D2DD826"));
|
||||
|
||||
//Request
|
||||
var request = MockRepository.GenerateMock<HttpRequestBase>();
|
||||
request.Stub(x => x.AppRelativeCurrentExecutionFilePath).Return("~" + fullUrl.AbsolutePath);
|
||||
request.Stub(x => x.PathInfo).Return(string.Empty);
|
||||
@@ -64,7 +67,7 @@ namespace Umbraco.Tests.TestHelpers
|
||||
request.Stub(x => x.RequestContext).Return(RequestContext);
|
||||
request.Stub(x => x.Url).Return(fullUrl);
|
||||
request.Stub(x => x.ApplicationPath).Return("/");
|
||||
request.Stub(x => x.Cookies).Return(new HttpCookieCollection());
|
||||
request.Stub(x => x.Cookies).Return(cookieCollection);
|
||||
request.Stub(x => x.ServerVariables).Return(new NameValueCollection());
|
||||
var queryStrings = HttpUtility.ParseQueryString(fullUrl.Query);
|
||||
request.Stub(x => x.QueryString).Return(queryStrings);
|
||||
|
||||
@@ -95,6 +95,7 @@
|
||||
<Compile Include="IO\IOHelperTest.cs" />
|
||||
<Compile Include="LibraryTests.cs" />
|
||||
<Compile Include="Models\ContentTests.cs" />
|
||||
<Compile Include="Models\ContentXmlTest.cs" />
|
||||
<Compile Include="Models\StylesheetTests.cs" />
|
||||
<Compile Include="Persistence\BaseTableByTableTest.cs" />
|
||||
<Compile Include="Persistence\Caching\InMemoryCacheProviderTest.cs" />
|
||||
|
||||
Reference in New Issue
Block a user