diff --git a/src/Umbraco.Core/Services/EntityXmlSerializer.cs b/src/Umbraco.Core/Services/EntityXmlSerializer.cs index fa299ed54d..f39c06524d 100644 --- a/src/Umbraco.Core/Services/EntityXmlSerializer.cs +++ b/src/Umbraco.Core/Services/EntityXmlSerializer.cs @@ -94,7 +94,7 @@ namespace Umbraco.Core.Services //xml.Add(new XAttribute("creatorName", media.GetCreatorProfile(userService).Name)); //xml.Add(new XAttribute("creatorID", media.CreatorId)); - xml.Add(new XAttribute("writerName", media.GetWriterProfile(userService).Name)); + xml.Add(new XAttribute("writerName", media.GetWriterProfile(userService)?.Name ?? string.Empty)); xml.Add(new XAttribute("writerID", media.WriterId)); //xml.Add(new XAttribute("template", 0)); // no template for media diff --git a/src/Umbraco.Tests/Models/ContentXmlTest.cs b/src/Umbraco.Tests/Models/ContentXmlTest.cs index aa870675ea..b049e87327 100644 --- a/src/Umbraco.Tests/Models/ContentXmlTest.cs +++ b/src/Umbraco.Tests/Models/ContentXmlTest.cs @@ -23,7 +23,7 @@ namespace Umbraco.Tests.Models ServiceContext.ContentTypeService.Save(contentType); var content = MockedContent.CreateTextpageContent(contentType, "Root Home", -1); - ServiceContext.ContentService.Save(content, 0); + ServiceContext.ContentService.Save(content, Constants.Security.SuperId); var nodeName = content.ContentType.Alias.ToSafeAliasWithForcingCheck(); var urlName = content.GetUrlSegment(new[]{new DefaultUrlSegmentProvider() }); diff --git a/src/Umbraco.Tests/Models/Mapping/ContentWebModelMappingTests.cs b/src/Umbraco.Tests/Models/Mapping/ContentWebModelMappingTests.cs index 5df5e5b87e..69b45f8fbb 100644 --- a/src/Umbraco.Tests/Models/Mapping/ContentWebModelMappingTests.cs +++ b/src/Umbraco.Tests/Models/Mapping/ContentWebModelMappingTests.cs @@ -39,11 +39,22 @@ namespace Umbraco.Tests.Models.Mapping { } } + private void FixUsers(IContentBase content) + { + // CreateSimpleContentType leaves CreatorId == 0 + // which used to be both the "super" user and the "default" user + // v8 is changing this, so the test would report a creator + // temp. fixing by assigning super here + // + content.CreatorId = Constants.Security.SuperId; + } + [Test] public void To_Media_Item_Simple() { var contentType = MockedContentTypes.CreateImageMediaType(); var content = MockedMedia.CreateMediaImage(contentType, -1); + FixUsers(content); var result = Mapper.Map>(content); @@ -60,6 +71,7 @@ namespace Umbraco.Tests.Models.Mapping { var contentType = MockedContentTypes.CreateSimpleContentType(); var content = MockedContent.CreateSimpleContent(contentType); + FixUsers(content); var result = Mapper.Map>(content); @@ -76,6 +88,7 @@ namespace Umbraco.Tests.Models.Mapping { var contentType = MockedContentTypes.CreateSimpleContentType(); var content = MockedContent.CreateSimpleContent(contentType); + FixUsers(content); var result = Mapper.Map>(content); @@ -87,6 +100,7 @@ namespace Umbraco.Tests.Models.Mapping { var contentType = MockedContentTypes.CreateImageMediaType(); var content = MockedMedia.CreateMediaImage(contentType, -1); + FixUsers(content); var result = Mapper.Map>(content); @@ -98,6 +112,8 @@ namespace Umbraco.Tests.Models.Mapping { var contentType = MockedContentTypes.CreateSimpleContentType(); var content = MockedContent.CreateSimpleContent(contentType); + FixUsers(content); + //need ids for tabs var id = 1; foreach (var g in content.PropertyGroups) @@ -135,6 +151,8 @@ namespace Umbraco.Tests.Models.Mapping idSeed++; } var content = MockedContent.CreateSimpleContent(contentType); + FixUsers(content); + foreach (var p in content.Properties) { p.Id = idSeed; @@ -187,7 +205,8 @@ namespace Umbraco.Tests.Models.Mapping where TPersisted : IContentBase { Assert.AreEqual(content.Id, result.Id); - Assert.AreEqual(0, result.Owner.UserId); + Assert.IsNotNull(result.Owner); + Assert.AreEqual(Constants.Security.SuperId, result.Owner.UserId); Assert.AreEqual("Administrator", result.Owner.Name); Assert.AreEqual(content.ParentId, result.ParentId); Assert.AreEqual(content.UpdateDate, result.UpdateDate); diff --git a/src/Umbraco.Tests/Models/MediaXmlTest.cs b/src/Umbraco.Tests/Models/MediaXmlTest.cs index 2f8154ef29..11e4b3806b 100644 --- a/src/Umbraco.Tests/Models/MediaXmlTest.cs +++ b/src/Umbraco.Tests/Models/MediaXmlTest.cs @@ -32,7 +32,8 @@ namespace Umbraco.Tests.Models var ignored = new FileUploadPropertyEditor(Mock.Of(), new MediaFileSystem(Mock.Of())); var media = MockedMedia.CreateMediaImage(mediaType, -1); - ServiceContext.MediaService.Save(media, 0); + media.WriterId = -1; // else it's zero and that's not a user and it breaks the tests + ServiceContext.MediaService.Save(media, Constants.Security.SuperId); // so we have to force-reset these values because the property editor has cleared them media.SetValue(Constants.Conventions.Media.Width, "200"); diff --git a/src/Umbraco.Tests/Persistence/Repositories/NotificationsRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/NotificationsRepositoryTest.cs index ef7f34f62a..2b8dde7ad3 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/NotificationsRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/NotificationsRepositoryTest.cs @@ -27,7 +27,19 @@ namespace Umbraco.Tests.Persistence.Repositories { var repo = new NotificationsRepository((IScopeAccessor) provider); - var node = new NodeDto { CreateDate = DateTime.Now, Level = 1, NodeObjectType = Constants.ObjectTypes.ContentItem, ParentId = -1, Path = "-1,123", SortOrder = 1, Text = "hello", Trashed = false, UniqueId = Guid.NewGuid(), UserId = 0 }; + var node = new NodeDto // create bogus item so we can add a notification + { + CreateDate = DateTime.Now, + Level = 1, + NodeObjectType = Constants.ObjectTypes.ContentItem, + ParentId = -1, + Path = "-1,123", + SortOrder = 1, + Text = "hello", + Trashed = false, + UniqueId = Guid.NewGuid(), + UserId = Constants.Security.SuperId + }; var result = scope.Database.Insert(node); var entity = Mock.Of(e => e.Id == node.NodeId); var user = Mock.Of(e => e.Id == node.UserId); @@ -54,7 +66,7 @@ namespace Umbraco.Tests.Persistence.Repositories scope.Database.Insert(userDto); var userNew = Mock.Of(e => e.Id == userDto.Id); - var userAdmin = Mock.Of(e => e.Id == 0); + var userAdmin = Mock.Of(e => e.Id == Constants.Security.SuperId); for (var i = 0; i < 10; i++) { @@ -143,7 +155,7 @@ namespace Umbraco.Tests.Persistence.Repositories scope.Database.Insert(userDto); var userNew = Mock.Of(e => e.Id == userDto.Id); - var userAdmin = Mock.Of(e => e.Id == 0); + var userAdmin = Mock.Of(e => e.Id == Constants.Security.SuperId); for (var i = 0; i < 10; i++) { diff --git a/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs index 26201e7ee9..e4a40a040f 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs @@ -26,11 +26,11 @@ namespace Umbraco.Tests.Persistence.Repositories var created = DateTime.Now; var task = new Task(new TaskType("asdfasdf")) { - AssigneeUserId = 0, + AssigneeUserId = Constants.Security.SuperId, Closed = false, Comment = "hello world", EntityId = -1, - OwnerUserId = 0 + OwnerUserId = Constants.Security.SuperId }; repo.Save(task); @@ -54,23 +54,23 @@ namespace Umbraco.Tests.Persistence.Repositories var created = DateTime.Now; repo.Save(new Task(new TaskType("asdfasdf")) { - AssigneeUserId = 0, + AssigneeUserId = Constants.Security.SuperId, Closed = false, Comment = "hello world", EntityId = -1, - OwnerUserId = 0 + OwnerUserId = Constants.Security.SuperId }); var found = repo.GetMany().ToArray(); Assert.AreEqual(1, found.Length); - Assert.AreEqual(0, found.First().AssigneeUserId); + Assert.AreEqual(Constants.Security.SuperId, found.First().AssigneeUserId); Assert.AreEqual(false, found.First().Closed); Assert.AreEqual("hello world", found.First().Comment); Assert.GreaterOrEqual(found.First().CreateDate.TruncateTo(DateTimeExtensions.DateTruncate.Second), created.TruncateTo(DateTimeExtensions.DateTruncate.Second)); Assert.AreEqual(-1, found.First().EntityId); - Assert.AreEqual(0, found.First().OwnerUserId); + Assert.AreEqual(Constants.Security.SuperId, found.First().OwnerUserId); Assert.AreEqual(true, found.First().HasIdentity); Assert.AreEqual(true, found.First().TaskType.HasIdentity); } @@ -86,11 +86,11 @@ namespace Umbraco.Tests.Persistence.Repositories var task = new Task(new TaskType("asdfasdf")) { - AssigneeUserId = 0, + AssigneeUserId = Constants.Security.SuperId, Closed = false, Comment = "hello world", EntityId = -1, - OwnerUserId = 0 + OwnerUserId = Constants.Security.SuperId }; repo.Save(task); @@ -123,11 +123,11 @@ namespace Umbraco.Tests.Persistence.Repositories var task = new Task(new TaskType("asdfasdf")) { - AssigneeUserId = 0, + AssigneeUserId = Constants.Security.SuperId, Closed = false, Comment = "hello world", EntityId = -1, - OwnerUserId = 0 + OwnerUserId = Constants.Security.SuperId }; repo.Save(task); @@ -214,11 +214,11 @@ namespace Umbraco.Tests.Persistence.Repositories { repo.Save(new Task(new TaskType("asdfasdf")) { - AssigneeUserId = 0, + AssigneeUserId = Constants.Security.SuperId, Closed = closed, Comment = "hello world " + i, EntityId = entityId, - OwnerUserId = 0 + OwnerUserId = Constants.Security.SuperId }); } diff --git a/src/Umbraco.Tests/Persistence/Repositories/TaskTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TaskTypeRepositoryTest.cs index 8ecc0537a9..ec3cf19625 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/TaskTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/TaskTypeRepositoryTest.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using NUnit.Framework; +using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.Repositories.Implement; @@ -27,11 +28,11 @@ namespace Umbraco.Tests.Persistence.Repositories var created = DateTime.Now; var task = new Task(taskType) { - AssigneeUserId = 0, + AssigneeUserId = Constants.Security.SuperId, Closed = false, Comment = "hello world", EntityId = -1, - OwnerUserId = 0 + OwnerUserId = Constants.Security.SuperId }; repo.Save(task); diff --git a/src/Umbraco.Tests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests/TestHelpers/TestHelper.cs index 75a5a3544c..47a847ad43 100644 --- a/src/Umbraco.Tests/TestHelpers/TestHelper.cs +++ b/src/Umbraco.Tests/TestHelpers/TestHelper.cs @@ -12,6 +12,7 @@ using Umbraco.Core; using Umbraco.Core.IO; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; +using Umbraco.Core.PropertyEditors; using File = System.IO.File; namespace Umbraco.Tests.TestHelpers @@ -149,6 +150,13 @@ namespace Umbraco.Tests.TestHelpers Assert.AreEqual(expectedPropertyValues[i].PublishedValue, actualPropertyValues[i].PublishedValue, $"{property.DeclaringType.Name}.{property.Name}: Expected published value \"{expectedPropertyValues[i].EditedValue}\" but got \"{actualPropertyValues[i].EditedValue}\"."); } } + else if (expected is IDataEditor expectedEditor) + { + Assert.IsInstanceOf(actual); + var actualEditor = (IDataEditor) actual; + Assert.AreEqual(expectedEditor.Alias, actualEditor.Alias); + // what else shall we test? + } else { // directly compare values