From d67480e98b24ded03170c7bda738928888b6479b Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 3 Jul 2013 17:09:14 +1000 Subject: [PATCH] Updated UserService, didn't need one of the methods on there, updated the unit tests to test all the other methods. --- .../Interfaces/IUserRepository.cs | 7 +- .../Repositories/UserRepository.cs | 43 +------- src/Umbraco.Core/Services/UserService.cs | 2 +- .../Repositories/UserRepositoryTest.cs | 100 +++++++++++++++--- 4 files changed, 97 insertions(+), 55 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IUserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IUserRepository.cs index 93719e29e3..33d3f6cab8 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IUserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IUserRepository.cs @@ -7,6 +7,11 @@ namespace Umbraco.Core.Persistence.Repositories IProfile GetProfileById(int id); IProfile GetProfileByUserName(string username); IUser GetUserByUserName(string username); - IUser GetUserById(int id); + + /// + /// This is useful when an entire section is removed from config + /// + /// + void DeleteSectionFromAllUsers(string sectionAlias); } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs index c9b067c388..4c4843a78e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs @@ -227,46 +227,13 @@ namespace Umbraco.Core.Persistence.Repositories public IUser GetUserByUserName(string username) { - var sql = GetBaseQuery(false); - sql.Where("umbracoUser.userLogin = @Username", new { Username = username }); - - var dto = Database.FirstOrDefault(sql); - - if (dto == null) - return null; - - return new User(_userTypeRepository.Get(dto.Type)) - { - Id = dto.Id, - Email = dto.Email, - Language = dto.UserLanguage, - Name = dto.UserName, - NoConsole = dto.NoConsole, - IsLockedOut = dto.Disabled - }; - + var query = Query.Builder.Where(x => x.Username == username); + return GetByQuery(query).FirstOrDefault(); } - - public IUser GetUserById(int id) + + public void DeleteSectionFromAllUsers(string sectionAlias) { - var sql = GetBaseQuery(false); - sql.Where(GetBaseWhereClause(), new { Id = id }); - - var dto = Database.FirstOrDefault(sql); - - if (dto == null) - return null; - - return new User(_userTypeRepository.Get(dto.Type)) - { - Id = dto.Id, - Email = dto.Email, - Language = dto.UserLanguage, - Name = dto.UserName, - NoConsole = dto.NoConsole, - IsLockedOut = dto.Disabled - }; - + throw new NotImplementedException(); } #endregion diff --git a/src/Umbraco.Core/Services/UserService.cs b/src/Umbraco.Core/Services/UserService.cs index 9f01142050..7836abbcdc 100644 --- a/src/Umbraco.Core/Services/UserService.cs +++ b/src/Umbraco.Core/Services/UserService.cs @@ -66,7 +66,7 @@ namespace Umbraco.Core.Services { using (var repository = _repositoryFactory.CreateUserRepository(_uowProvider.GetUnitOfWork())) { - return repository.GetUserById(id); + return repository.Get(id); } } diff --git a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs index 65ce5e9ec5..0e68e2fcad 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs @@ -188,21 +188,7 @@ namespace Umbraco.Tests.Persistence.Repositories var updatedItem = repository.Get((int)user.Id); // Assert - Assert.That(updatedItem.Id, Is.EqualTo(user.Id)); - Assert.That(updatedItem.Name, Is.EqualTo(user.Name)); - Assert.That(updatedItem.Permissions, Is.EqualTo(user.Permissions)); - Assert.That(updatedItem.Language, Is.EqualTo(user.Language)); - Assert.That(updatedItem.IsApproved, Is.EqualTo(user.IsApproved)); - Assert.That(updatedItem.Password, Is.EqualTo(user.Password)); - Assert.That(updatedItem.NoConsole, Is.EqualTo(user.NoConsole)); - Assert.That(updatedItem.StartContentId, Is.EqualTo(user.StartContentId)); - Assert.That(updatedItem.StartMediaId, Is.EqualTo(user.StartMediaId)); - Assert.That(updatedItem.DefaultToLiveEditing, Is.EqualTo(user.DefaultToLiveEditing)); - Assert.That(updatedItem.Email, Is.EqualTo(user.Email)); - Assert.That(updatedItem.Username, Is.EqualTo(user.Username)); - Assert.That(updatedItem.AllowedSections.Count(), Is.EqualTo(2)); - Assert.IsTrue(updatedItem.AllowedSections.Contains("media")); - Assert.IsTrue(updatedItem.AllowedSections.Contains("content")); + AssertPropertyValues(updatedItem, user); } [Test] @@ -388,6 +374,90 @@ namespace Umbraco.Tests.Persistence.Repositories 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(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(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(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); + } + + private void AssertPropertyValues(IUser updatedItem, IUser originalUser) + { + 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(2)); + Assert.IsTrue(updatedItem.AllowedSections.Contains("media")); + Assert.IsTrue(updatedItem.AllowedSections.Contains("content")); + } + private IUser[] CreateAndCommitMultipleUsers(IUserRepository repository, IUnitOfWork unitOfWork) { var user1 = MockedUser.CreateUser(CreateAndCommitUserType(), "1");