Updated UserRepository to not contain the general query methods, we do those in the service.

This commit is contained in:
Shannon
2013-07-03 19:26:28 +10:00
parent d3b69e04e1
commit da545b890b
6 changed files with 74 additions and 111 deletions

View File

@@ -5,9 +5,9 @@ namespace Umbraco.Core.Persistence.Repositories
{
internal interface IUserRepository : IRepositoryQueryable<int, IUser>
{
IProfile GetProfileById(int id);
IProfile GetProfileByUserName(string username);
IUser GetUserByUserName(string username);
//IProfile GetProfileById(int id);
//IProfile GetProfileByUserName(string username);
//IUser GetUserByUserName(string username);
/// <summary>
/// This is useful when an entire section is removed from config

View File

@@ -196,39 +196,7 @@ namespace Umbraco.Core.Persistence.Repositories
#endregion
#region Implementation of IUserRepository
public IProfile GetProfileById(int id)
{
var sql = GetBaseQuery(false);
sql.Where(GetBaseWhereClause(), new { Id = id });
var dto = Database.FirstOrDefault<UserDto>(sql);
if (dto == null)
return null;
return new Profile(dto.Id, dto.UserName);
}
public IProfile GetProfileByUserName(string username)
{
var sql = GetBaseQuery(false);
sql.Where("umbracoUser.userLogin = @Username", new { Username = username });
var dto = Database.FirstOrDefault<UserDto>(sql);
if (dto == null)
return null;
return new Profile(dto.Id, dto.UserName);
}
public IUser GetUserByUserName(string username)
{
var query = Query<IUser>.Builder.Where(x => x.Username == username);
return GetByQuery(query).FirstOrDefault();
}
public IEnumerable<IUser> GetUsersAssignedToSection(string sectionAlias)
{
//Here we're building up a query that looks like this, a sub query is required because the resulting structure

View File

@@ -32,7 +32,7 @@ namespace Umbraco.Core.Persistence.Repositories
var sql = GetBaseQuery(false);
sql.Where(GetBaseWhereClause(), new { Id = id });
var dto = Database.Query<UserTypeDto>(sql).FirstOrDefault();
var dto = Database.FirstOrDefault<UserTypeDto>(sql);
if (dto == null)
return null;

View File

@@ -42,25 +42,22 @@ namespace Umbraco.Core.Services
/// <returns><see cref="IProfile"/></returns>
public IProfile GetProfileById(int id)
{
using (var repository = _repositoryFactory.CreateUserRepository(_uowProvider.GetUnitOfWork()))
{
return repository.GetProfileById(id);
}
var user = GetUserById(id);
return new Profile(user.Id, user.Username);
}
public IProfile GetProfileByUserName(string username)
{
using (var repository = _repositoryFactory.CreateUserRepository(_uowProvider.GetUnitOfWork()))
{
return repository.GetProfileByUserName(username);
}
var user = GetUserByUserName(username);
return new Profile(user.Id, user.Username);
}
public IUser GetUserByUserName(string username)
{
using (var repository = _repositoryFactory.CreateUserRepository(_uowProvider.GetUnitOfWork()))
{
return repository.GetUserByUserName(username);
var query = Query<IUser>.Builder.Where(x => x.Username == username);
return repository.GetByQuery(query).FirstOrDefault();
}
}

View File

@@ -373,71 +373,7 @@ namespace Umbraco.Tests.Persistence.Repositories
Assert.IsTrue(result.AllowedSections.Contains("settings"));
Assert.IsTrue(result.AllowedSections.Contains("media"));
}
[Test]
public void Get_By_Profile_Id()
{
// Arrange
var provider = new PetaPocoUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = RepositoryResolver.Current.ResolveByType<IUserRepository>(unitOfWork);
var user = MockedUser.CreateUser(CreateAndCommitUserType());
repository.AddOrUpdate(user);
unitOfWork.Commit();
// Act
var profile = repository.GetProfileById((int)user.Id);
unitOfWork.Commit();
// Assert
Assert.IsNotNull(profile);
Assert.AreEqual(user.Username, profile.Name);
Assert.AreEqual(user.Id, profile.Id);
}
[Test]
public void Get_By_Profile_Username()
{
// Arrange
var provider = new PetaPocoUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = RepositoryResolver.Current.ResolveByType<IUserRepository>(unitOfWork);
var user = MockedUser.CreateUser(CreateAndCommitUserType());
repository.AddOrUpdate(user);
unitOfWork.Commit();
// Act
var profile = repository.GetProfileByUserName(user.Username);
unitOfWork.Commit();
// Assert
Assert.IsNotNull(profile);
Assert.AreEqual(user.Username, profile.Name);
Assert.AreEqual(user.Id, profile.Id);
}
[Test]
public void Get_User_By_Username()
{
// Arrange
var provider = new PetaPocoUnitOfWorkProvider();
var unitOfWork = provider.GetUnitOfWork();
var repository = RepositoryResolver.Current.ResolveByType<IUserRepository>(unitOfWork);
var user = MockedUser.CreateUser(CreateAndCommitUserType());
repository.AddOrUpdate(user);
unitOfWork.Commit();
// Act
var userByUsername = repository.GetUserByUserName(user.Username);
unitOfWork.Commit();
// Assert
Assert.IsNotNull(userByUsername);
AssertPropertyValues(userByUsername, user);
}
[Test]
public void Get_Users_Assigned_To_Section()

View File

@@ -90,5 +90,67 @@ namespace Umbraco.Tests.Services
Assert.IsFalse(result2.AllowedSections.Contains("test"));
}
[Test]
public void Get_By_Profile_Username()
{
// Arrange
var userType = ServiceContext.UserService.GetUserTypeByAlias("admin");
var user = (IUser)ServiceContext.UserService.CreateMembershipUser("test1", "test1", "test1", userType, "test1@test.com");
// Act
var profile = ServiceContext.UserService.GetProfileByUserName(user.Username);
// Assert
Assert.IsNotNull(profile);
Assert.AreEqual(user.Username, profile.Name);
Assert.AreEqual(user.Id, profile.Id);
}
[Test]
public void Get_By_Profile_Id()
{
// Arrange
var userType = ServiceContext.UserService.GetUserTypeByAlias("admin");
var user = (IUser)ServiceContext.UserService.CreateMembershipUser("test1", "test1", "test1", userType, "test1@test.com");
// Act
var profile = ServiceContext.UserService.GetProfileById((int)user.Id);
// Assert
Assert.IsNotNull(profile);
Assert.AreEqual(user.Username, profile.Name);
Assert.AreEqual(user.Id, profile.Id);
}
[Test]
public void Get_User_By_Username()
{
// Arrange
var userType = ServiceContext.UserService.GetUserTypeByAlias("admin");
var originalUser = (IUser)ServiceContext.UserService.CreateMembershipUser("test1", "test1", "test1", userType, "test1@test.com");
// Act
var updatedItem = ServiceContext.UserService.GetUserByUserName(originalUser.Username);
// Assert
Assert.IsNotNull(updatedItem);
Assert.That(updatedItem.Id, Is.EqualTo(originalUser.Id));
Assert.That(updatedItem.Name, Is.EqualTo(originalUser.Name));
Assert.That(updatedItem.Permissions, Is.EqualTo(originalUser.Permissions));
Assert.That(updatedItem.Language, Is.EqualTo(originalUser.Language));
Assert.That(updatedItem.IsApproved, Is.EqualTo(originalUser.IsApproved));
Assert.That(updatedItem.Password, Is.EqualTo(originalUser.Password));
Assert.That(updatedItem.NoConsole, Is.EqualTo(originalUser.NoConsole));
Assert.That(updatedItem.StartContentId, Is.EqualTo(originalUser.StartContentId));
Assert.That(updatedItem.StartMediaId, Is.EqualTo(originalUser.StartMediaId));
Assert.That(updatedItem.DefaultToLiveEditing, Is.EqualTo(originalUser.DefaultToLiveEditing));
Assert.That(updatedItem.Email, Is.EqualTo(originalUser.Email));
Assert.That(updatedItem.Username, Is.EqualTo(originalUser.Username));
Assert.That(updatedItem.AllowedSections.Count(), Is.EqualTo(0));
}
}
}