Starting implementation of the UserRepository.
Fixing unit tests.
This commit is contained in:
@@ -45,7 +45,7 @@ namespace Umbraco.Core.Models
|
||||
private static readonly PropertyInfo SortOrderSelector = ExpressionHelper.GetPropertyInfo<ContentBase, int>(x => x.SortOrder);
|
||||
private static readonly PropertyInfo LevelSelector = ExpressionHelper.GetPropertyInfo<ContentBase, int>(x => x.Level);
|
||||
private static readonly PropertyInfo PathSelector = ExpressionHelper.GetPropertyInfo<ContentBase, string>(x => x.Path);
|
||||
private static readonly PropertyInfo UserSelector = ExpressionHelper.GetPropertyInfo<ContentBase, IProfile>(x => x.Creator);
|
||||
private static readonly PropertyInfo CreatorSelector = ExpressionHelper.GetPropertyInfo<ContentBase, IProfile>(x => x.Creator);
|
||||
private static readonly PropertyInfo TrashedSelector = ExpressionHelper.GetPropertyInfo<ContentBase, bool>(x => x.Trashed);
|
||||
private static readonly PropertyInfo DefaultContentTypeIdSelector = ExpressionHelper.GetPropertyInfo<ContentBase, int>(x => x.ContentTypeId);
|
||||
private readonly static PropertyInfo PropertyCollectionSelector = ExpressionHelper.GetPropertyInfo<ContentBase, PropertyCollection>(x => x.Properties);
|
||||
@@ -137,7 +137,7 @@ namespace Umbraco.Core.Models
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// IProfile of the user who created this Content
|
||||
/// Profile of the user who created this Content
|
||||
/// </summary>
|
||||
[DataMember]
|
||||
public virtual IProfile Creator
|
||||
@@ -146,7 +146,7 @@ namespace Umbraco.Core.Models
|
||||
set
|
||||
{
|
||||
_creator = value;
|
||||
OnPropertyChanged(UserSelector);
|
||||
OnPropertyChanged(CreatorSelector);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
|
||||
namespace Umbraco.Core.Models
|
||||
{
|
||||
@@ -21,7 +22,7 @@ namespace Umbraco.Core.Models
|
||||
private int _sortOrder;
|
||||
private string _icon;
|
||||
private string _thumbnail;
|
||||
private int _userId;
|
||||
private IProfile _creator;
|
||||
private bool _allowedAsRoot;
|
||||
private bool _isContainer;
|
||||
private bool _trashed;
|
||||
@@ -44,7 +45,7 @@ namespace Umbraco.Core.Models
|
||||
private static readonly PropertyInfo DescriptionSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, string>(x => x.Description);
|
||||
private static readonly PropertyInfo IconSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, string>(x => x.Icon);
|
||||
private static readonly PropertyInfo ThumbnailSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, string>(x => x.Thumbnail);
|
||||
private static readonly PropertyInfo UserIdSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, int>(x => x.UserId);
|
||||
private static readonly PropertyInfo CreatorSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, IProfile>(x => x.Creator);
|
||||
private static readonly PropertyInfo AllowedAsRootSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, bool>(x => x.AllowedAsRoot);
|
||||
private static readonly PropertyInfo IsContainerSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, bool>(x => x.IsContainer);
|
||||
private static readonly PropertyInfo TrashedSelector = ExpressionHelper.GetPropertyInfo<ContentTypeBase, bool>(x => x.Trashed);
|
||||
@@ -184,16 +185,16 @@ namespace Umbraco.Core.Models
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Id of the user who created this Content
|
||||
/// Gets or sets the Profile of the user who created this ContentType
|
||||
/// </summary>
|
||||
[DataMember]
|
||||
public virtual int UserId
|
||||
public virtual IProfile Creator
|
||||
{
|
||||
get { return _userId; }
|
||||
get { return _creator; }
|
||||
set
|
||||
{
|
||||
_userId = value;
|
||||
OnPropertyChanged(UserIdSelector);
|
||||
_creator = value;
|
||||
OnPropertyChanged(CreatorSelector);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
|
||||
namespace Umbraco.Core.Models
|
||||
{
|
||||
@@ -55,9 +56,9 @@ namespace Umbraco.Core.Models
|
||||
string Thumbnail { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or Sets the Id of the User who created the ContentType
|
||||
/// Gets or Sets the Profile of the User who created the ContentType
|
||||
/// </summary>
|
||||
int UserId { get; set; }
|
||||
IProfile Creator { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or Sets a boolean indicating whether this ContentType is allowed at the root
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
|
||||
namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
internal interface IMembershipUser : IMembershipUserId
|
||||
internal interface IMembershipUser : IMembershipUserId, IAggregateRoot
|
||||
{
|
||||
object Id { get; set; }
|
||||
new object Id { get; set; }
|
||||
string Username { get; set; }
|
||||
string Email { get; set; }
|
||||
string Password { get; set; }
|
||||
@@ -15,9 +16,11 @@ namespace Umbraco.Core.Models.Membership
|
||||
bool IsApproved { get; set; }
|
||||
bool IsOnline { get; set; }
|
||||
bool IsLockedOut { get; set; }
|
||||
DateTime CreationDate { get; set; }
|
||||
//Was CreationDate
|
||||
//DateTime CreateDate { get; set; }
|
||||
//LastActivityDate
|
||||
//DateTime UpdateDate { get; set; }
|
||||
DateTime LastLoginDate { get; set; }
|
||||
DateTime LastActivityDate { get; set; }
|
||||
DateTime LastPasswordChangeDate { get; set; }
|
||||
DateTime LastLockoutDate { get; set; }
|
||||
|
||||
|
||||
17
src/Umbraco.Core/Models/Membership/IUser.cs
Normal file
17
src/Umbraco.Core/Models/Membership/IUser.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
/// <summary>
|
||||
/// Defines the interface for a <see cref="User"/>
|
||||
/// </summary>
|
||||
/// <remarks>Will be left internal until a proper Membership implementation is part of the roadmap</remarks>
|
||||
internal interface IUser : IMembershipUser
|
||||
{
|
||||
string Name { get; set; }
|
||||
int SessionTimeout { get; set; }
|
||||
int StartContentId { get; set; }
|
||||
int StartMediaId { get; set; }
|
||||
IEnumerable<string> Applications { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,7 @@ namespace Umbraco.Core.Models.Membership
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
internal virtual object ProviderUserKey
|
||||
public virtual object ProviderUserKey
|
||||
{
|
||||
get { throw new System.NotImplementedException(); }
|
||||
set { throw new System.NotImplementedException(); }
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
|
||||
namespace Umbraco.Core.Models.Membership
|
||||
{
|
||||
@@ -10,8 +11,32 @@ namespace Umbraco.Core.Models.Membership
|
||||
/// Should be internal until a proper user/membership implementation
|
||||
/// is part of the roadmap.
|
||||
/// </remarks>
|
||||
internal class User : UserProfile, IMembershipUser
|
||||
internal class User : UserProfile, IUser
|
||||
{
|
||||
private bool _hasIdentity;
|
||||
private int _id;
|
||||
|
||||
#region Implementation of IEntity
|
||||
|
||||
public bool HasIdentity { get { return Id != null || _hasIdentity; } }
|
||||
|
||||
int IEntity.Id
|
||||
{
|
||||
get
|
||||
{
|
||||
return _id;
|
||||
}
|
||||
set
|
||||
{
|
||||
_id = value;
|
||||
_hasIdentity = true;
|
||||
}
|
||||
}
|
||||
|
||||
public Guid Key { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Implementation of IMembershipUser
|
||||
|
||||
public string Username { get; set; }
|
||||
@@ -23,9 +48,9 @@ namespace Umbraco.Core.Models.Membership
|
||||
public bool IsApproved { get; set; }
|
||||
public bool IsOnline { get; set; }
|
||||
public bool IsLockedOut { get; set; }
|
||||
public DateTime CreationDate { get; set; }
|
||||
public DateTime CreateDate { get; set; }
|
||||
public DateTime UpdateDate { get; set; }
|
||||
public DateTime LastLoginDate { get; set; }
|
||||
public DateTime LastActivityDate { get; set; }
|
||||
public DateTime LastPasswordChangeDate { get; set; }
|
||||
public DateTime LastLockoutDate { get; set; }
|
||||
|
||||
@@ -33,11 +58,5 @@ namespace Umbraco.Core.Models.Membership
|
||||
public IEnumerable<object> Groups { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Implementation of IMembershipUserId
|
||||
|
||||
public new object ProviderUserKey { get; set; }
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -17,8 +17,16 @@ namespace Umbraco.Core.Models
|
||||
|
||||
var xd = new XmlDocument();
|
||||
XmlNode xmlNode = xd.CreateNode(XmlNodeType.Element, nodeName, "");
|
||||
xmlNode.AppendChild(property.PropertyType.DataType(property.Id).Data.ToXMl(xd));
|
||||
|
||||
XmlNode child = property.PropertyType.DataTypeDatabaseType == DataTypeDatabaseType.Ntext
|
||||
? xd.CreateCDataSection(property.Value.ToString()) as XmlNode
|
||||
: xd.CreateTextNode(property.Value.ToString());
|
||||
|
||||
xmlNode.AppendChild(child);
|
||||
|
||||
//This seems to fail during testing
|
||||
//xmlNode.AppendChild(property.PropertyType.DataType(property.Id).Data.ToXMl(xd));
|
||||
|
||||
var element = xmlNode.GetXElement();
|
||||
return element;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Models.Rdbms;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Factories
|
||||
@@ -34,10 +35,7 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
CreateDate = dto.ContentTypeDto.NodeDto.CreateDate,
|
||||
Path = dto.ContentTypeDto.NodeDto.Path,
|
||||
Level = dto.ContentTypeDto.NodeDto.Level,
|
||||
UserId =
|
||||
dto.ContentTypeDto.NodeDto.UserId.HasValue
|
||||
? dto.ContentTypeDto.NodeDto.UserId.Value
|
||||
: 0,
|
||||
Creator = new Profile(dto.ContentTypeDto.NodeDto.UserId.Value, ""),
|
||||
AllowedAsRoot = dto.ContentTypeDto.AllowAtRoot,
|
||||
IsContainer = dto.ContentTypeDto.IsContainer,
|
||||
Trashed = dto.ContentTypeDto.NodeDto.Trashed
|
||||
@@ -85,7 +83,7 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
Text = entity.Name,
|
||||
Trashed = false,
|
||||
UniqueId = entity.Key,
|
||||
UserId = entity.UserId
|
||||
UserId = entity.Creator.Id.SafeCast<int>()
|
||||
};
|
||||
return nodeDto;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Models.Rdbms;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Factories
|
||||
@@ -34,10 +35,7 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
CreateDate = dto.NodeDto.CreateDate,
|
||||
Path = dto.NodeDto.Path,
|
||||
Level = dto.NodeDto.Level,
|
||||
UserId =
|
||||
dto.NodeDto.UserId.HasValue
|
||||
? dto.NodeDto.UserId.Value
|
||||
: 0,
|
||||
Creator = new Profile(dto.NodeDto.UserId.Value, ""),
|
||||
AllowedAsRoot = dto.AllowAtRoot,
|
||||
IsContainer = dto.IsContainer,
|
||||
Trashed = dto.NodeDto.Trashed
|
||||
@@ -77,7 +75,7 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
Text = entity.Name,
|
||||
Trashed = false,
|
||||
UniqueId = entity.Key,
|
||||
UserId = entity.UserId
|
||||
UserId = entity.Creator.Id.SafeCast<int>()
|
||||
};
|
||||
return nodeDto;
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace Umbraco.Core.Persistence.Mappers
|
||||
CacheMap<ContentType, NodeDto>(src => src.Name, dto => dto.Text);
|
||||
CacheMap<ContentType, NodeDto>(src => src.Trashed, dto => dto.Trashed);
|
||||
CacheMap<ContentType, NodeDto>(src => src.Key, dto => dto.UniqueId);
|
||||
CacheMap<ContentType, NodeDto>(src => src.UserId, dto => dto.UserId);
|
||||
CacheMap<ContentType, NodeDto>(src => src.Creator, dto => dto.UserId);
|
||||
CacheMap<ContentType, ContentTypeDto>(src => src.Alias, dto => dto.Alias);
|
||||
CacheMap<ContentType, ContentTypeDto>(src => src.AllowedAsRoot, dto => dto.AllowAtRoot);
|
||||
CacheMap<ContentType, ContentTypeDto>(src => src.Description, dto => dto.Description);
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
using Umbraco.Core.Models.Membership;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
internal interface IUserRepository : IRepositoryQueryable<int, IUser>
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -42,11 +42,13 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
if (FileSystem.FileExists(masterpageName))
|
||||
{
|
||||
var stream = FileSystem.OpenFile(masterpageName);
|
||||
byte[] bytes = new byte[stream.Length];
|
||||
stream.Position = 0;
|
||||
stream.Read(bytes, 0, (int)stream.Length);
|
||||
content = Encoding.UTF8.GetString(bytes);
|
||||
using (var stream = FileSystem.OpenFile(masterpageName))
|
||||
{
|
||||
byte[] bytes = new byte[stream.Length];
|
||||
stream.Position = 0;
|
||||
stream.Read(bytes, 0, (int) stream.Length);
|
||||
content = Encoding.UTF8.GetString(bytes);
|
||||
}
|
||||
|
||||
path = FileSystem.GetRelativePath(masterpageName);
|
||||
created = FileSystem.GetCreated(path).UtcDateTime;
|
||||
@@ -55,11 +57,13 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
}
|
||||
else
|
||||
{
|
||||
var stream = _viewsFileSystem.OpenFile(viewName);
|
||||
byte[] bytes = new byte[stream.Length];
|
||||
stream.Position = 0;
|
||||
stream.Read(bytes, 0, (int)stream.Length);
|
||||
content = Encoding.UTF8.GetString(bytes);
|
||||
using (var stream = _viewsFileSystem.OpenFile(viewName))
|
||||
{
|
||||
byte[] bytes = new byte[stream.Length];
|
||||
stream.Position = 0;
|
||||
stream.Read(bytes, 0, (int) stream.Length);
|
||||
content = Encoding.UTF8.GetString(bytes);
|
||||
}
|
||||
|
||||
path = _viewsFileSystem.GetRelativePath(viewName);
|
||||
created = FileSystem.GetCreated(path).UtcDateTime;
|
||||
|
||||
72
src/Umbraco.Core/Persistence/Repositories/UserRepository.cs
Normal file
72
src/Umbraco.Core/Persistence/Repositories/UserRepository.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
using Umbraco.Core.Persistence.UnitOfWork;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents the UserRepository for doing CRUD operations for users
|
||||
/// </summary>
|
||||
internal class UserRepository : PetaPocoRepositoryBase<int, IUser>, IUserRepository
|
||||
{
|
||||
public UserRepository(IUnitOfWork work)
|
||||
: base(work)
|
||||
{
|
||||
}
|
||||
|
||||
#region Overrides of RepositoryBase<int,IUser>
|
||||
|
||||
protected override IUser PerformGet(int id)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
protected override IEnumerable<IUser> PerformGetAll(params int[] ids)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
protected override IEnumerable<IUser> PerformGetByQuery(IQuery<IUser> query)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Overrides of PetaPocoRepositoryBase<int,IUser>
|
||||
|
||||
protected override Sql GetBaseQuery(bool isCount)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
protected override string GetBaseWhereClause()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
protected override IEnumerable<string> GetDeleteClauses()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
protected override Guid NodeObjectTypeId
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
protected override void PersistNewItem(IUser entity)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
protected override void PersistUpdatedItem(IUser entity)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -105,6 +105,7 @@
|
||||
<Compile Include="Models\Membership\IMembershipUser.cs" />
|
||||
<Compile Include="Models\Membership\IMembershipUserId.cs" />
|
||||
<Compile Include="Models\Membership\IProfile.cs" />
|
||||
<Compile Include="Models\Membership\IUser.cs" />
|
||||
<Compile Include="Models\Membership\Profile.cs" />
|
||||
<Compile Include="Models\Membership\User.cs" />
|
||||
<Compile Include="Models\Membership\UserProfile.cs" />
|
||||
@@ -193,6 +194,7 @@
|
||||
<Compile Include="Persistence\Repositories\Interfaces\IRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\Interfaces\IStylesheetRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\Interfaces\ITemplateRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\Interfaces\IUserRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\LanguageRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\MacroRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\MediaRepository.cs" />
|
||||
@@ -204,6 +206,7 @@
|
||||
<Compile Include="Persistence\Repositories\ScriptRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\StylesheetRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\TemplateRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\UserRepository.cs" />
|
||||
<Compile Include="Persistence\RepositoryResolver.cs" />
|
||||
<Compile Include="Persistence\SqlSyntax\DbTypes.cs" />
|
||||
<Compile Include="Persistence\SqlSyntax\ISqlSyntaxProvider.cs" />
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
</configSections>
|
||||
|
||||
<appSettings>
|
||||
<add key="umbracoDbDSN" value="datalayer=SQLCE4Umbraco.SqlCEHelper,SQLCE4Umbraco;data source=|DataDirectory|\test.sdf" />
|
||||
<add key="umbracoDbDSN" value="datalayer=SQLCE4Umbraco.SqlCEHelper,SQLCE4Umbraco;data source=|DataDirectory|\UmbracoPetaPocoTests.sdf" />
|
||||
<add key="umbracoConfigurationStatus" value="6.0.0" />
|
||||
<add key="umbracoReservedUrls" value="~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx,~/VSEnterpriseHelper.axd" />
|
||||
<add key="umbracoReservedPaths" value="~/umbraco,~/install/" />
|
||||
@@ -30,7 +30,7 @@
|
||||
</appSettings>
|
||||
|
||||
<connectionStrings>
|
||||
<add name="umbracoDbDSN" connectionString="Datasource=|DataDirectory|test.sdf" providerName="System.Data.SqlServerCe.4.0"/>
|
||||
<add name="umbracoDbDSN" connectionString="Datasource=|DataDirectory|UmbracoPetaPocoTests.sdf" providerName="System.Data.SqlServerCe.4.0"/>
|
||||
</connectionStrings>
|
||||
|
||||
<FileSystemProviders>
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Umbraco.Tests.DynamicDocument
|
||||
Path.Combine(currDir.Parent.Parent.FullName, "config", "umbracoSettings.config"),
|
||||
true);
|
||||
|
||||
UmbracoSettings.SettingsFilePath = IOHelper.MapPath(SystemDirectories.Config, false);
|
||||
UmbracoSettings.SettingsFilePath = IOHelper.MapPath(SystemDirectories.Config + Path.DirectorySeparatorChar, false);
|
||||
|
||||
//for testing, we'll specify which assemblies are scanned for the PluginTypeResolver
|
||||
PluginManager.Current.AssembliesToScan = new[]
|
||||
|
||||
@@ -41,6 +41,11 @@ namespace Umbraco.Tests.IO
|
||||
|
||||
Assert.AreEqual(1, files.Count());
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
_fileSystem.DeleteFile(file);
|
||||
}
|
||||
|
||||
_fileSystem.DeleteDirectory("test", true);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Tests.TestHelpers.Entities;
|
||||
using umbraco.editorControls.tinyMCE3;
|
||||
using umbraco.interfaces;
|
||||
using File = System.IO.File;
|
||||
|
||||
namespace Umbraco.Tests.Models
|
||||
{
|
||||
@@ -38,15 +39,10 @@ namespace Umbraco.Tests.Models
|
||||
{
|
||||
DatabaseContext.Database.Dispose();
|
||||
|
||||
TestHelper.ClearDatabase();
|
||||
|
||||
//reset the app context
|
||||
DataTypesResolver.Reset();
|
||||
ApplicationContext.Current = null;
|
||||
Resolution.IsFrozen = false;
|
||||
|
||||
string path = TestHelper.CurrentAssemblyDirectory;
|
||||
AppDomain.CurrentDomain.SetData("DataDirectory", null);
|
||||
|
||||
base.TearDown();
|
||||
}
|
||||
[Test]
|
||||
public void Can_Generate_Xml_Representation_Of_Content()
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace Umbraco.Tests.Persistence
|
||||
AppDomain.CurrentDomain.SetData("DataDirectory", path);
|
||||
|
||||
//Delete database file before continueing
|
||||
string filePath = string.Concat(path, "\\test.sdf");
|
||||
string filePath = string.Concat(path, "\\UmbracoPetaPocoTests.sdf");
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
File.Delete(filePath);
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Xml;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.ObjectResolution;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
@@ -19,6 +22,8 @@ namespace Umbraco.Tests.Publishing
|
||||
[SetUp]
|
||||
public override void Initialize()
|
||||
{
|
||||
UmbracoSettings.SettingsFilePath = IOHelper.MapPath(SystemDirectories.Config + Path.DirectorySeparatorChar, false);
|
||||
|
||||
//this ensures its reset
|
||||
PluginManager.Current = new PluginManager();
|
||||
|
||||
@@ -73,6 +78,8 @@ namespace Umbraco.Tests.Publishing
|
||||
var document = httpContext.Items["UmbracoXmlContextContent"] as XmlDocument;
|
||||
Console.Write(document.OuterXml);
|
||||
document.Save("umbraco.config");
|
||||
|
||||
updateContentCache.Unsubscribe();
|
||||
}
|
||||
|
||||
public void CreateTestData()
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace Umbraco.Tests.TestHelpers
|
||||
mvcViews.GetFiles().ForEach(x => x.Delete());
|
||||
|
||||
//Delete database file before continueing
|
||||
string filePath = string.Concat(path, "\\test.sdf");
|
||||
string filePath = string.Concat(path, "\\UmbracoPetaPocoTests.sdf");
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
File.Delete(filePath);
|
||||
@@ -50,6 +50,7 @@ namespace Umbraco.Tests.TestHelpers
|
||||
|
||||
//Get the connectionstring settings from config
|
||||
var settings = ConfigurationManager.ConnectionStrings["umbracoDbDsn"];
|
||||
ConfigurationManager.AppSettings.Set("umbracoDbDSN", @"datalayer=SQLCE4Umbraco.SqlCEHelper,SQLCE4Umbraco;data source=|DataDirectory|\UmbracoPetaPocoTests.sdf");
|
||||
|
||||
//Create the Sql CE database
|
||||
var engine = new SqlCeEngine(settings.ConnectionString);
|
||||
@@ -76,21 +77,21 @@ namespace Umbraco.Tests.TestHelpers
|
||||
string path = TestHelper.CurrentAssemblyDirectory;
|
||||
AppDomain.CurrentDomain.SetData("DataDirectory", null);
|
||||
|
||||
string filePath = string.Concat(path, "\\test.sdf");
|
||||
string filePath = string.Concat(path, "\\UmbracoPetaPocoTests.sdf");
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
File.Delete(filePath);
|
||||
//File.Delete(filePath);
|
||||
}
|
||||
}
|
||||
|
||||
protected ApplicationContext ApplicationContext { get; private set; }
|
||||
protected ApplicationContext ApplicationContext { get; set; }
|
||||
|
||||
protected ServiceContext ServiceContext
|
||||
{
|
||||
get { return ServiceContext.Current; }
|
||||
}
|
||||
|
||||
protected DatabaseContext DatabaseContext { get; private set; }
|
||||
protected DatabaseContext DatabaseContext { get; set; }
|
||||
|
||||
protected UmbracoContext GetUmbracoContext(string url, int templateId, RouteData routeData = null)
|
||||
{
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
|
||||
namespace Umbraco.Tests.TestHelpers.Entities
|
||||
{
|
||||
@@ -15,7 +16,7 @@ namespace Umbraco.Tests.TestHelpers.Entities
|
||||
Icon = ".sprTreeDoc3",
|
||||
Thumbnail = "doc.png",
|
||||
SortOrder = 1,
|
||||
UserId = 0,
|
||||
Creator = new Profile(0, "Administrator"),
|
||||
DefaultTemplate = "~/masterpages/umbTextPage.master",
|
||||
Trashed = false
|
||||
};
|
||||
@@ -44,7 +45,7 @@ namespace Umbraco.Tests.TestHelpers.Entities
|
||||
Icon = ".sprTreeDoc3",
|
||||
Thumbnail = "doc.png",
|
||||
SortOrder = 1,
|
||||
UserId = 0,
|
||||
Creator = new Profile(0, "Administrator"),
|
||||
DefaultTemplate = "",
|
||||
Trashed = false
|
||||
};
|
||||
@@ -68,7 +69,7 @@ namespace Umbraco.Tests.TestHelpers.Entities
|
||||
Icon = ".sprTreeDoc3",
|
||||
Thumbnail = "doc.png",
|
||||
SortOrder = 1,
|
||||
UserId = 0,
|
||||
Creator = new Profile(0, "Administrator"),
|
||||
DefaultTemplate = "~/masterpages/umbSimplePage.master",
|
||||
Trashed = false
|
||||
};
|
||||
@@ -93,7 +94,7 @@ namespace Umbraco.Tests.TestHelpers.Entities
|
||||
Icon = ".sprTreeDoc3",
|
||||
Thumbnail = "doc2.png",
|
||||
SortOrder = 1,
|
||||
UserId = 0,
|
||||
Creator = new Profile(0, "Administrator"),
|
||||
DefaultTemplate = "~/masterpages/umbSimplePage.master",
|
||||
Trashed = false
|
||||
};
|
||||
@@ -118,7 +119,7 @@ namespace Umbraco.Tests.TestHelpers.Entities
|
||||
Icon = ".sprTreeDoc3",
|
||||
Thumbnail = "doc2.png",
|
||||
SortOrder = 1,
|
||||
UserId = 0,
|
||||
Creator = new Profile(0, "Administrator"),
|
||||
DefaultTemplate = "~/masterpages/umbSimplePage.master",
|
||||
Trashed = false
|
||||
};
|
||||
@@ -143,7 +144,7 @@ namespace Umbraco.Tests.TestHelpers.Entities
|
||||
Icon = ".sprTreeDoc3",
|
||||
Thumbnail = "doc3.png",
|
||||
SortOrder = 1,
|
||||
UserId = 0,
|
||||
Creator = new Profile(0, "Administrator"),
|
||||
DefaultTemplate = "~/masterpages/umbSimplePage.master",
|
||||
Trashed = false
|
||||
};
|
||||
@@ -163,7 +164,7 @@ namespace Umbraco.Tests.TestHelpers.Entities
|
||||
Icon = ".sprTreeDoc3",
|
||||
Thumbnail = "doc.png",
|
||||
SortOrder = 1,
|
||||
UserId = 0,
|
||||
Creator = new Profile(0, "Administrator"),
|
||||
Trashed = false
|
||||
};
|
||||
|
||||
|
||||
@@ -52,11 +52,7 @@ namespace Umbraco.Web.Strategies
|
||||
// note that some threads could read from it while we hold the lock, though
|
||||
lock (XmlContentInternalSyncLock)
|
||||
{
|
||||
// modify a clone of the cache because even though we're into the write-lock
|
||||
// we may have threads reading at the same time. why is this an option?
|
||||
XmlDocument wip = UmbracoSettings.CloneXmlCacheOnPublish
|
||||
? CloneXmlDoc(XmlContent)
|
||||
: XmlContent;
|
||||
XmlDocument wip = XmlContent;
|
||||
|
||||
ClearContextCache();
|
||||
|
||||
@@ -178,12 +174,6 @@ namespace Umbraco.Web.Strategies
|
||||
return xmlContentCopy;
|
||||
}
|
||||
|
||||
private XmlDocument CloneXmlDoc(XmlDocument xmlDoc)
|
||||
{
|
||||
var xmlCopy = (XmlDocument)xmlDoc.CloneNode(true);
|
||||
return xmlCopy;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clear HTTPContext cache if any
|
||||
/// </summary>
|
||||
@@ -239,5 +229,10 @@ namespace Umbraco.Web.Strategies
|
||||
}
|
||||
set { _httpContext.Items[XmlContextContentItemKey] = value; }
|
||||
}
|
||||
|
||||
internal void Unsubscribe()
|
||||
{
|
||||
PublishingStrategy.Published -= PublishingStrategy_Published;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user