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:
sitereactor
2012-11-06 12:42:59 -01:00
parent ec9880968f
commit 4234bb1cd9
4 changed files with 115 additions and 45 deletions

View 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));
}
}
}

View File

@@ -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.

View File

@@ -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);

View File

@@ -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" />