From 7196c855b283659253bde6b347873b63cd3740b0 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 2 Oct 2018 15:19:01 +0200 Subject: [PATCH] Fixes tests --- .../Repositories/Implement/UserRepository.cs | 14 +++++++--- .../Repositories/AuditRepositoryTest.cs | 27 ++++++++++--------- .../Repositories/UserRepositoryTest.cs | 8 +++--- src/Umbraco.Tests/Testing/UmbracoTestBase.cs | 5 ++++ .../Testing/UmbracoTestOptions.cs | 4 ++- 5 files changed, 37 insertions(+), 21 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/UserRepository.cs index e15560264a..853b716242 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/UserRepository.cs @@ -748,7 +748,7 @@ ORDER BY colName"; if (excludeUserGroups != null && excludeUserGroups.Length > 0) { - var subQuery = @"AND (umbracoUser.id NOT IN (SELECT DISTINCT umbracoUser.id + const string subQuery = @"AND (umbracoUser.id NOT IN (SELECT DISTINCT umbracoUser.id FROM umbracoUser INNER JOIN umbracoUser2UserGroup ON umbracoUser2UserGroup.userId = umbracoUser.id INNER JOIN umbracoUserGroup ON umbracoUserGroup.id = umbracoUser2UserGroup.userGroupId @@ -809,7 +809,7 @@ ORDER BY colName"; sql = new SqlTranslator(sql, query).Translate(); // get sorted and filtered sql - var sqlNodeIdsWithSort = ApplySort(ApplyFilter(sql, filterSql), orderDirection, orderBy); + var sqlNodeIdsWithSort = ApplySort(ApplyFilter(sql, filterSql, query != null), orderDirection, orderBy); // get a page of results and total count var pagedResult = Database.Page(pageIndex + 1, pageSize, sqlNodeIdsWithSort); @@ -820,11 +820,17 @@ ORDER BY colName"; return pagedResult.Items.Select(UserFactory.BuildEntity); } - private Sql ApplyFilter(Sql sql, Sql filterSql) + private Sql ApplyFilter(Sql sql, Sql filterSql, bool hasWhereClause) { if (filterSql == null) return sql; - sql.Append(SqlContext.Sql(" WHERE " + filterSql.SQL.TrimStart("AND "), filterSql.Arguments)); + //ensure we don't append a WHERE if there is already one + var args = filterSql.Arguments; + var sqlFilter = hasWhereClause + ? filterSql.SQL + : " WHERE " + filterSql.SQL.TrimStart("AND "); + + sql.Append(SqlContext.Sql(sqlFilter, args)); return sql; } diff --git a/src/Umbraco.Tests/Persistence/Repositories/AuditRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/AuditRepositoryTest.cs index f7945af7cb..6953634a31 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/AuditRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/AuditRepositoryTest.cs @@ -1,5 +1,6 @@ using System.Linq; using NUnit.Framework; +using Umbraco.Core.Composing; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.DatabaseModelDefinitions; @@ -8,15 +9,17 @@ using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.Repositories.Implement; using Umbraco.Core.Scoping; +using Umbraco.Core.Logging; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.Testing; namespace Umbraco.Tests.Persistence.Repositories { [TestFixture] - [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)] + [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest, Logger = UmbracoTestOptions.Logger.Console)] public class AuditRepositoryTest : TestWithDatabaseBase { + [Test] public void Can_Add_Audit_Entry() { @@ -24,7 +27,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var scope = sp.CreateScope()) { var repo = new AuditRepository((IScopeAccessor) sp, CacheHelper, Logger); - repo.Save(new AuditItem(-1, "This is a System audit trail", AuditType.System, 0)); + repo.Save(new AuditItem(-1, "This is a System audit trail", AuditType.System, -1)); var dtos = scope.Database.Fetch("WHERE id > -1"); @@ -43,8 +46,8 @@ namespace Umbraco.Tests.Persistence.Repositories for (var i = 0; i < 100; i++) { - repo.Save(new AuditItem(i, $"Content {i} created", AuditType.New, 0)); - repo.Save(new AuditItem(i, $"Content {i} published", AuditType.Publish, 0)); + repo.Save(new AuditItem(i, $"Content {i} created", AuditType.New, -1)); + repo.Save(new AuditItem(i, $"Content {i} published", AuditType.Publish, -1)); } scope.Complete(); @@ -71,8 +74,8 @@ namespace Umbraco.Tests.Persistence.Repositories for (var i = 0; i < 100; i++) { - repo.Save(new AuditItem(i, $"Content {i} created", AuditType.New, 0)); - repo.Save(new AuditItem(i, $"Content {i} published", AuditType.Publish, 0)); + repo.Save(new AuditItem(i, $"Content {i} created", AuditType.New, -1)); + repo.Save(new AuditItem(i, $"Content {i} published", AuditType.Publish, -1)); } scope.Complete(); @@ -82,7 +85,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var repo = new AuditRepository((IScopeAccessor)sp, CacheHelper, Logger); - var query = sp.SqlContext.Query().Where(x => x.UserId == 0); + var query = sp.SqlContext.Query().Where(x => x.UserId == -1); try { @@ -91,7 +94,7 @@ namespace Umbraco.Tests.Persistence.Repositories var page = repo.GetPagedResultsByQuery(query, 0, 10, out var total, Direction.Descending, new[] { AuditType.Publish }, - sp.SqlContext.Query().Where(x => x.UserId > -1)); + sp.SqlContext.Query().Where(x => x.UserId > -2)); Assert.AreEqual(10, page.Count()); Assert.AreEqual(100, total); @@ -114,8 +117,8 @@ namespace Umbraco.Tests.Persistence.Repositories for (var i = 0; i < 100; i++) { - repo.Save(new AuditItem(i, $"Content {i} created", AuditType.New, 0)); - repo.Save(new AuditItem(i, $"Content {i} published", AuditType.Publish, 0)); + repo.Save(new AuditItem(i, $"Content {i} created", AuditType.New, -1)); + repo.Save(new AuditItem(i, $"Content {i} published", AuditType.Publish, -1)); } scope.Complete(); @@ -145,8 +148,8 @@ namespace Umbraco.Tests.Persistence.Repositories for (var i = 0; i < 100; i++) { - repo.Save(new AuditItem(i, "Content created", AuditType.New, 0)); - repo.Save(new AuditItem(i, "Content published", AuditType.Publish, 0)); + repo.Save(new AuditItem(i, "Content created", AuditType.New, -1)); + repo.Save(new AuditItem(i, "Content published", AuditType.Publish, -1)); } scope.Complete(); diff --git a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs index b545e66ad8..e778f987eb 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs @@ -20,7 +20,7 @@ using Umbraco.Core.Persistence; namespace Umbraco.Tests.Persistence.Repositories { [TestFixture] - [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest, WithApplication = true)] + [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest, WithApplication = true, Logger = UmbracoTestOptions.Logger.Console)] public class UserRepositoryTest : TestWithDatabaseBase { private MediaRepository CreateMediaRepository(IScopeProvider provider, out IMediaTypeRepository mediaTypeRepository) @@ -52,14 +52,14 @@ namespace Umbraco.Tests.Persistence.Repositories private UserRepository CreateRepository(IScopeProvider provider) { var accessor = (IScopeAccessor) provider; - var repository = new UserRepository(accessor, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), Mock.Of(), TestObjects.GetGlobalSettings()); + var repository = new UserRepository(accessor, CacheHelper.CreateDisabledCacheHelper(), Logger, Mappers, TestObjects.GetGlobalSettings()); return repository; } private UserGroupRepository CreateUserGroupRepository(IScopeProvider provider) { var accessor = (IScopeAccessor) provider; - return new UserGroupRepository(accessor, CacheHelper.CreateDisabledCacheHelper(), Mock.Of()); + return new UserGroupRepository(accessor, CacheHelper.CreateDisabledCacheHelper(), Logger); } [Test] @@ -396,7 +396,7 @@ namespace Umbraco.Tests.Persistence.Repositories var result = repository.GetPagedResultsByQuery(null, 0, 10, out var totalRecs, user => user.Id, Direction.Ascending, includeUserGroups: new[] { Constants.Security.AdminGroupAlias, Constants.Security.SensitiveDataGroupAlias }, excludeUserGroups: new[] { Constants.Security.TranslatorGroupAlias }, - filter: provider.SqlContext.Query().Where(x => x.Id == 0)); + filter: provider.SqlContext.Query().Where(x => x.Id == -1)); // Assert Assert.AreEqual(1, totalRecs); diff --git a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs index c9bb14c527..7f68f22a27 100644 --- a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs +++ b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs @@ -172,6 +172,11 @@ namespace Umbraco.Tests.Testing Container.RegisterSingleton(f => new SerilogLogger(new FileInfo(TestHelper.MapPathForTest("~/unit-test.config")))); Container.RegisterSingleton(f => new LogProfiler(f.GetInstance())); } + else if (option == UmbracoTestOptions.Logger.Console) + { + Container.RegisterSingleton(f => new ConsoleLogger()); + Container.RegisterSingleton(f => new LogProfiler(f.GetInstance())); + } Container.RegisterSingleton(f => new ProfilingLogger(f.GetInstance(), f.GetInstance())); } diff --git a/src/Umbraco.Tests/Testing/UmbracoTestOptions.cs b/src/Umbraco.Tests/Testing/UmbracoTestOptions.cs index deefd33946..5248026788 100644 --- a/src/Umbraco.Tests/Testing/UmbracoTestOptions.cs +++ b/src/Umbraco.Tests/Testing/UmbracoTestOptions.cs @@ -7,7 +7,9 @@ // pure mocks Mock, // Serilog for tests - Serilog + Serilog, + // console logger + Console } public enum Database