diff --git a/src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs b/src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs index 28a31f23d5..ffc15f0b13 100644 --- a/src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs +++ b/src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs @@ -81,7 +81,8 @@ namespace Umbraco.Core.Migrations.Install typeof (ConsentDto), typeof (AuditEntryDto), typeof (ContentVersionCultureVariationDto), - typeof (DocumentCultureVariationDto) + typeof (DocumentCultureVariationDto), + typeof (ContentScheduleDto) }; /// diff --git a/src/Umbraco.Core/Models/ContentScheduleCollection.cs b/src/Umbraco.Core/Models/ContentScheduleCollection.cs index 0198b5ab97..73607271a3 100644 --- a/src/Umbraco.Core/Models/ContentScheduleCollection.cs +++ b/src/Umbraco.Core/Models/ContentScheduleCollection.cs @@ -121,7 +121,7 @@ namespace Umbraco.Core.Models { if (_schedule.TryGetValue(culture, out var changes)) return changeType == null ? changes.Values : changes.Values.Where(x => x.Change == changeType.Value); - return null; + return Enumerable.Empty(); } /// diff --git a/src/Umbraco.Core/Persistence/Factories/ContentBaseFactory.cs b/src/Umbraco.Core/Persistence/Factories/ContentBaseFactory.cs index 65b8088176..8ad4f96396 100644 --- a/src/Umbraco.Core/Persistence/Factories/ContentBaseFactory.cs +++ b/src/Umbraco.Core/Persistence/Factories/ContentBaseFactory.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Text.RegularExpressions; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Dtos; @@ -49,7 +50,7 @@ namespace Umbraco.Core.Persistence.Factories content.Edited = dto.Edited; var schedule = new ContentScheduleCollection(); - foreach(var entry in dto.ContentSchedule) + foreach(var entry in dto.ContentSchedule ?? Enumerable.Empty()) { schedule.Add(new ContentSchedule(entry.Id, languageRepository.GetIsoCodeById(entry.LanguageId), @@ -191,7 +192,7 @@ namespace Umbraco.Core.Persistence.Factories Action = cultureSched.Change.ToString(), Date = cultureSched.Date, NodeId = entity.Id, - LanguageId = languageRepository.GetIdByIsoCode(schedByCulture.Key), + LanguageId = languageRepository.GetIdByIsoCode(schedByCulture.Key, false), Id = cultureSched.Id }); } diff --git a/src/Umbraco.Core/Persistence/Repositories/IDocumentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IDocumentRepository.cs index a3fb50149d..432590a71d 100644 --- a/src/Umbraco.Core/Persistence/Repositories/IDocumentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IDocumentRepository.cs @@ -7,6 +7,20 @@ namespace Umbraco.Core.Persistence.Repositories { public interface IDocumentRepository : IContentRepository, IReadRepository { + //fixme support variants + /// + /// Gets a collection of objects, which has an expiration date less than or equal to today. + /// + /// + IEnumerable GetContentForExpiration(); + + //fixme support variants + /// + /// Gets a collection of objects, which has a release date less than or equal to today. + /// + /// An Enumerable list of objects + IEnumerable GetContentForRelease(); + /// /// Get the count of published items /// diff --git a/src/Umbraco.Core/Persistence/Repositories/ILanguageRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ILanguageRepository.cs index b86898f97a..fbcbf13651 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ILanguageRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ILanguageRepository.cs @@ -12,7 +12,7 @@ namespace Umbraco.Core.Persistence.Repositories /// /// This can be optimized and bypass all deep cloning. /// - int? GetIdByIsoCode(string isoCode); + int? GetIdByIsoCode(string isoCode, bool throwOnNotFound = true); /// /// Gets a language ISO code from its identifier. @@ -20,7 +20,7 @@ namespace Umbraco.Core.Persistence.Repositories /// /// This can be optimized and bypass all deep cloning. /// - string GetIsoCodeById(int? id); + string GetIsoCodeById(int? id, bool throwOnNotFound = true); /// /// Gets the default language ISO code. diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/ContentRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/ContentRepositoryBase.cs index 36b7ab07f1..58f58c3d84 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/ContentRepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/ContentRepositoryBase.cs @@ -265,7 +265,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement // create prepared sql // ensure it's single-line as NPoco PagingHelper has issues with multi-lines psql = Sql(psql.SQL.ToSingleLine(), psql.Arguments); - + // replace the magic culture parameter (see DocumentRepository.GetBaseQuery()) if (!ordering.Culture.IsNullOrWhiteSpace()) { @@ -359,7 +359,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement // fixme - what if it is NOT a document but a ... media or whatever? // previously, we inserted the join+select *here* so we were sure to have it, // but now that's not the case anymore! - return "variantName"; + return "variantName"; } // previously, we'd accept anything and just sanitize it - not anymore diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs index a427d80bf5..2bb930dd79 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs @@ -83,7 +83,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement var translator = new SqlTranslator(sqlClause, query); var sql = translator.Translate(); - sql // fixme why? + sql // fixme why - this should be Path .OrderBy(x => x.Level) .OrderBy(x => x.SortOrder); @@ -182,6 +182,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { var list = new List { + "DELETE FROM " + Constants.DatabaseSchema.Tables.ContentSchedule + " WHERE nodeId = @id", "DELETE FROM " + Constants.DatabaseSchema.Tables.RedirectUrl + " WHERE contentKey IN (SELECT uniqueId FROM " + Constants.DatabaseSchema.Tables.Node + " WHERE id = @id)", "DELETE FROM " + Constants.DatabaseSchema.Tables.User2NodeNotify + " WHERE nodeId = @id", "DELETE FROM " + Constants.DatabaseSchema.Tables.UserGroup2NodePermission + " WHERE nodeId = @id", @@ -319,7 +320,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement var contentVersionDto = dto.DocumentVersionDto.ContentVersionDto; contentVersionDto.NodeId = nodeDto.NodeId; contentVersionDto.Current = !publishing; - contentVersionDto.Text = content.Name; + contentVersionDto.Text = content.Name; //fixme is this requried? isn't this mapped in the ContentBaseFactory? Database.Insert(contentVersionDto); content.VersionId = contentVersionDto.Id; @@ -367,6 +368,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement //insert the schedule foreach(var c in dto.ContentSchedule) { + c.NodeId = nodeDto.NodeId; Database.Insert(c); } @@ -591,6 +593,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement //update the schedule, get the existing one so we know what to update var existingSched = Database.Fetch(Sql() .Select(x => x.Id) + .From() .Where(x => x.NodeId == content.Id)); //remove any that no longer exist var schedToRemove = existingSched.Except(dto.ContentSchedule.Select(x => x.Id)); @@ -892,6 +895,52 @@ namespace Umbraco.Core.Persistence.Repositories.Implement #endregion + #region Schedule + + /// + public IEnumerable GetContentForRelease() + { + var sqlSchedule = Sql() + .Select(x => x.NodeId) + .From() + .Where(x => + x.Action == ContentScheduleChange.Start.ToString() + && x.LanguageId == null + && x.Date <= DateTime.Now); + + //fixme - If we don't cast to IEnumerable or do a ToArray, the Expression Visitor will FAIL! + // in the ExpressionVisitorBase.VisitMethodCall where the switch checks for "Contains" for some reason + // the 'special case' that redirects to `SqlIn` fails because the m.Arguments.Count is only ONE instead of TWO, + // no time to investigate right now. + var scheduledIds = (IEnumerable)Database.Fetch(sqlSchedule); + + var query = Query().Where(x => x.Published == false && scheduledIds.Contains(x.Id)); + return Get(query); + } + + /// + public IEnumerable GetContentForExpiration() + { + var sqlSchedule = Sql() + .Select(x => x.NodeId) + .From() + .Where(x => + x.Action == ContentScheduleChange.End.ToString() + && x.LanguageId == null + && x.Date <= DateTime.Now); + + //fixme - If we don't cast to IEnumerable or do a ToArray, the Expression Visitor will FAIL! + // in the ExpressionVisitorBase.VisitMethodCall where the switch checks for "Contains" for some reason + // the 'special case' that redirects to `SqlIn` fails because the m.Arguments.Count is only ONE instead of TWO, + // no time to investigate right now. + var scheduledIds = (IEnumerable)Database.Fetch(sqlSchedule); + + var query = Query().Where(x => x.Published && scheduledIds.Contains(x.Id)); + return Get(query); + } + + #endregion + protected override string ApplySystemOrdering(ref Sql sql, Ordering ordering) { // note: 'updater' is the user who created the latest draft version, diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs index e316d1d04b..af9029244c 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/LanguageRepository.cs @@ -236,9 +236,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement // fast way of getting an id for an isoCode - avoiding cloning // _codeIdMap is rebuilt whenever PerformGetAll runs - public int? GetIdByIsoCode(string isoCode) => GetIdByIsoCode(isoCode, throwOnNotFound: true); - - private int? GetIdByIsoCode(string isoCode, bool throwOnNotFound) + public int? GetIdByIsoCode(string isoCode, bool throwOnNotFound) { if (isoCode == null) return null; @@ -254,14 +252,13 @@ namespace Umbraco.Core.Persistence.Repositories.Implement } if (throwOnNotFound) throw new ArgumentException($"Code {isoCode} does not correspond to an existing language.", nameof(isoCode)); - return 0; - } + return null; + } + // fast way of getting an isoCode for an id - avoiding cloning // _idCodeMap is rebuilt whenever PerformGetAll runs - public string GetIsoCodeById(int? id) => GetIsoCodeById(id, throwOnNotFound: true); - - private string GetIsoCodeById(int? id, bool throwOnNotFound) + public string GetIsoCodeById(int? id, bool throwOnNotFound = true) { if (id == null) return null; @@ -277,6 +274,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement } if (throwOnNotFound) throw new ArgumentException($"Id {id} does not correspond to an existing language.", nameof(id)); + return null; } diff --git a/src/Umbraco.Core/Services/Implement/ContentService.cs b/src/Umbraco.Core/Services/Implement/ContentService.cs index 83f96a122a..903aa28679 100644 --- a/src/Umbraco.Core/Services/Implement/ContentService.cs +++ b/src/Umbraco.Core/Services/Implement/ContentService.cs @@ -749,11 +749,7 @@ namespace Umbraco.Core.Services.Implement using (var scope = ScopeProvider.CreateScope(autoComplete: true)) { scope.ReadLock(Constants.Locks.ContentTree); - - //fixme - need to get the DB updated to query for this - //var query = Query().Where(x => x.Published && x.ExpireDate <= DateTime.Now); - //return _documentRepository.Get(query); - throw new NotImplementedException("Implement GetContentForExpiration"); + return _documentRepository.GetContentForExpiration(); } } @@ -766,11 +762,7 @@ namespace Umbraco.Core.Services.Implement using (var scope = ScopeProvider.CreateScope(autoComplete: true)) { scope.ReadLock(Constants.Locks.ContentTree); - - //fixme - need to get the DB updated to query for this - //var query = Query().Where(x => x.Published == false && x.ReleaseDate <= DateTime.Now); - //return _documentRepository.Get(query); - throw new NotImplementedException("Implement GetContentForRelease"); + return _documentRepository.GetContentForRelease(); } } diff --git a/src/Umbraco.Tests/Services/ContentServiceTests.cs b/src/Umbraco.Tests/Services/ContentServiceTests.cs index 70e2107ad5..2394302aad 100644 --- a/src/Umbraco.Tests/Services/ContentServiceTests.cs +++ b/src/Umbraco.Tests/Services/ContentServiceTests.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; @@ -12,18 +11,15 @@ using Umbraco.Core.IO; using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; using LightInject; -using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Services; using Umbraco.Tests.TestHelpers.Entities; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Persistence.Repositories.Implement; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Scoping; using Umbraco.Core.Services.Implement; using Umbraco.Tests.Testing; -using Umbraco.Web.PropertyEditors; using System.Reflection; using Umbraco.Core.Persistence.DatabaseModelDefinitions; @@ -212,11 +208,11 @@ namespace Umbraco.Tests.Services var root = ServiceContext.ContentService.GetById(NodeDto.NodeIdSeed + 1); root.PublishCulture(); Assert.IsTrue(contentService.SaveAndPublish(root).Success); - var content = contentService.CreateAndSave("Test", -1, "umbTextpage", 0); + var content = contentService.CreateAndSave("Test", -1, "umbTextpage", Constants.Security.SuperUserId); content.PublishCulture(); Assert.IsTrue(contentService.SaveAndPublish(content).Success); var hierarchy = CreateContentHierarchy().OrderBy(x => x.Level).ToArray(); - contentService.Save(hierarchy, 0); + contentService.Save(hierarchy, Constants.Security.SuperUserId); foreach (var c in hierarchy) { c.PublishCulture(); @@ -258,14 +254,14 @@ namespace Umbraco.Tests.Services var contentService = ServiceContext.ContentService; // Act - var content = contentService.CreateAndSave("Test", -1, "umbTextpage", 0); + var content = contentService.CreateAndSave("Test", -1, "umbTextpage", Constants.Security.SuperUserId); content.ContentSchedule.Add(null, DateTime.Now.AddHours(2)); - contentService.Save(content, 0); + contentService.Save(content, Constants.Security.SuperUserId); content = contentService.GetById(content.Id); content.ContentSchedule.Clear(ContentScheduleChange.End); - contentService.Save(content, 0); + contentService.Save(content, Constants.Security.SuperUserId); // Assert @@ -279,7 +275,7 @@ namespace Umbraco.Tests.Services var contentService = ServiceContext.ContentService; // Act - var content = contentService.CreateAndSave("Test", -1, "umbTextpage", 0); + var content = contentService.CreateAndSave("Test", -1, "umbTextpage", Constants.Security.SuperUserId); for (var i = 0; i < 20; i++) { content.SetValue("bodyText", "hello world " + Guid.NewGuid()); @@ -324,7 +320,7 @@ namespace Umbraco.Tests.Services // Act for (int i = 0; i < 20; i++) { - contentService.CreateAndSave("Test", -1, "umbTextpage", 0); + contentService.CreateAndSave("Test", -1, "umbTextpage", Constants.Security.SuperUserId); } // Assert @@ -343,7 +339,7 @@ namespace Umbraco.Tests.Services // Act for (int i = 0; i < 20; i++) { - contentService.CreateAndSave("Test", -1, "umbBlah", 0); + contentService.CreateAndSave("Test", -1, "umbBlah", Constants.Security.SuperUserId); } // Assert @@ -358,7 +354,7 @@ namespace Umbraco.Tests.Services var contentTypeService = ServiceContext.ContentTypeService; var contentType = MockedContentTypes.CreateSimpleContentType("umbBlah", "test Doc Type"); contentTypeService.Save(contentType); - var parent = contentService.CreateAndSave("Test", -1, "umbBlah", 0); + var parent = contentService.CreateAndSave("Test", -1, "umbBlah", Constants.Security.SuperUserId); // Act for (int i = 0; i < 20; i++) @@ -378,7 +374,7 @@ namespace Umbraco.Tests.Services var contentTypeService = ServiceContext.ContentTypeService; var contentType = MockedContentTypes.CreateSimpleContentType("umbBlah", "test Doc Type"); contentTypeService.Save(contentType); - var parent = contentService.CreateAndSave("Test", -1, "umbBlah", 0); + var parent = contentService.CreateAndSave("Test", -1, "umbBlah", Constants.Security.SuperUserId); // Act IContent current = parent; @@ -917,7 +913,7 @@ namespace Umbraco.Tests.Services var contentService = ServiceContext.ContentService; // Act - var content = contentService.Create("Test", -1, "umbTextpage", 0); + var content = contentService.Create("Test", -1, "umbTextpage", Constants.Security.SuperUserId); // Assert Assert.That(content, Is.Not.Null); @@ -931,7 +927,7 @@ namespace Umbraco.Tests.Services var contentService = ServiceContext.ContentService; // Act - var content = contentService.Create("Test", -1, "umbTextpage", 0); + var content = contentService.Create("Test", -1, "umbTextpage", Constants.Security.SuperUserId); // Assert Assert.That(content, Is.Not.Null); @@ -1059,7 +1055,7 @@ namespace Umbraco.Tests.Services // Arrange var contentService = ServiceContext.ContentService; var hierarchy = CreateContentHierarchy(); - contentService.Save(hierarchy, 0); + contentService.Save(hierarchy, Constants.Security.SuperUserId); // Act var contents = contentService.GetDescendants(NodeDto.NodeIdSeed + 2).ToList(); @@ -1330,7 +1326,7 @@ namespace Umbraco.Tests.Services // Act content.PublishCulture(); - var published = contentService.SavePublishing(content, 0); + var published = contentService.SavePublishing(content, Constants.Security.SuperUserId); // Assert Assert.That(published.Success, Is.True); @@ -1385,7 +1381,7 @@ namespace Umbraco.Tests.Services content.Name = "foo"; content.PublishCulture(); - var published = contentService.SavePublishing(content, 0); + var published = contentService.SavePublishing(content, Constants.Security.SuperUserId); Assert.That(published.Success, Is.True); Assert.That(content.Published, Is.True); @@ -1509,11 +1505,11 @@ namespace Umbraco.Tests.Services var parent = contentService.GetById(NodeDto.NodeIdSeed + 2); parent.PublishCulture(); - var parentPublished = contentService.SavePublishing(parent, 0);//Publish root Home node to enable publishing of 'NodeDto.NodeIdSeed + 3' + var parentPublished = contentService.SavePublishing(parent, Constants.Security.SuperUserId);//Publish root Home node to enable publishing of 'NodeDto.NodeIdSeed + 3' // Act content.PublishCulture(); - var published = contentService.SavePublishing(content, 0); + var published = contentService.SavePublishing(content, Constants.Security.SuperUserId); // Assert Assert.That(parentPublished.Success, Is.True); @@ -1527,16 +1523,16 @@ namespace Umbraco.Tests.Services // Arrange var contentService = ServiceContext.ContentService; var content = contentService.GetById(NodeDto.NodeIdSeed + 3); - content.ContentSchedule.Add(null, DateTime.Now.AddHours(2)); - contentService.Save(content, 0); + content.ContentSchedule.Add(DateTime.Now.AddHours(2), null); + contentService.Save(content, Constants.Security.SuperUserId); var parent = contentService.GetById(NodeDto.NodeIdSeed + 2); parent.PublishCulture(); - var parentPublished = contentService.SavePublishing(parent, 0);//Publish root Home node to enable publishing of 'NodeDto.NodeIdSeed + 3' + var parentPublished = contentService.SavePublishing(parent, Constants.Security.SuperUserId);//Publish root Home node to enable publishing of 'NodeDto.NodeIdSeed + 3' // Act content.PublishCulture(); - var published = contentService.SavePublishing(content, 0); + var published = contentService.SavePublishing(content, Constants.Security.SuperUserId); // Assert Assert.That(parentPublished.Success, Is.True); @@ -1549,8 +1545,8 @@ namespace Umbraco.Tests.Services { // Arrange var contentService = ServiceContext.ContentService; - var content = contentService.Create("Subpage with Unpublisehed Parent", NodeDto.NodeIdSeed + 2, "umbTextpage", 0); - contentService.Save(content, 0); + var content = contentService.Create("Subpage with Unpublished Parent", NodeDto.NodeIdSeed + 2, "umbTextpage", Constants.Security.SuperUserId); + contentService.Save(content, Constants.Security.SuperUserId); // Act var published = contentService.SaveAndPublishBranch(content, true); @@ -1569,7 +1565,7 @@ namespace Umbraco.Tests.Services // Act content.PublishCulture(); - var published = contentService.SavePublishing(content, 0); + var published = contentService.SavePublishing(content, Constants.Security.SuperUserId); // Assert Assert.That(published.Success, Is.False); @@ -1582,12 +1578,12 @@ namespace Umbraco.Tests.Services { // Arrange var contentService = ServiceContext.ContentService; - var content = contentService.Create("Home US", - 1, "umbTextpage", 0); + var content = contentService.Create("Home US", - 1, "umbTextpage", Constants.Security.SuperUserId); content.SetValue("author", "Barack Obama"); // Act content.PublishCulture(); - var published = contentService.SavePublishing(content, 0); + var published = contentService.SavePublishing(content, Constants.Security.SuperUserId); // Assert Assert.That(content.HasIdentity, Is.True); @@ -1607,19 +1603,19 @@ namespace Umbraco.Tests.Services { // Arrange var contentService = ServiceContext.ContentService; - var content = contentService.Create("Home US", -1, "umbTextpage", 0); + var content = contentService.Create("Home US", -1, "umbTextpage", Constants.Security.SuperUserId); content.SetValue("author", "Barack Obama"); // Act content.PublishCulture(); - var published = contentService.SavePublishing(content, 0); - var childContent = contentService.Create("Child", content.Id, "umbTextpage", 0); + var published = contentService.SavePublishing(content, Constants.Security.SuperUserId); + var childContent = contentService.Create("Child", content.Id, "umbTextpage", Constants.Security.SuperUserId); // Reset all identity properties childContent.Id = 0; childContent.Path = null; ((Content)childContent).ResetIdentity(); childContent.PublishCulture(); - var childPublished = contentService.SavePublishing(childContent, 0); + var childPublished = contentService.SavePublishing(childContent, Constants.Security.SuperUserId); // Assert Assert.That(content.HasIdentity, Is.True); @@ -1681,11 +1677,11 @@ namespace Umbraco.Tests.Services { // Arrange var contentService = ServiceContext.ContentService; - var content = contentService.Create("Home US", - 1, "umbTextpage", 0); + var content = contentService.Create("Home US", - 1, "umbTextpage", Constants.Security.SuperUserId); content.SetValue("author", "Barack Obama"); // Act - contentService.Save(content, 0); + contentService.Save(content, Constants.Security.SuperUserId); // Assert Assert.That(content.HasIdentity, Is.True); @@ -1704,7 +1700,7 @@ namespace Umbraco.Tests.Services var list = new List {subpage, subpage2}; // Act - contentService.Save(list, 0); + contentService.Save(list, Constants.Security.SuperUserId); // Assert Assert.That(list.Any(x => !x.HasIdentity), Is.False); @@ -1718,7 +1714,7 @@ namespace Umbraco.Tests.Services var hierarchy = CreateContentHierarchy().ToList(); // Act - contentService.Save(hierarchy, 0); + contentService.Save(hierarchy, Constants.Security.SuperUserId); Assert.That(hierarchy.Any(), Is.True); Assert.That(hierarchy.Any(x => x.HasIdentity == false), Is.False); @@ -1753,7 +1749,7 @@ namespace Umbraco.Tests.Services var content = contentService.GetById(NodeDto.NodeIdSeed + 4); // Act - contentService.Delete(content, 0); + contentService.Delete(content, Constants.Security.SuperUserId); var deleted = contentService.GetById(NodeDto.NodeIdSeed + 4); // Assert @@ -1768,7 +1764,7 @@ namespace Umbraco.Tests.Services var content = contentService.GetById(NodeDto.NodeIdSeed + 3); // Act - contentService.MoveToRecycleBin(content, 0); + contentService.MoveToRecycleBin(content, Constants.Security.SuperUserId); // Assert Assert.That(content.ParentId, Is.EqualTo(-20)); @@ -1782,7 +1778,7 @@ namespace Umbraco.Tests.Services var contentType = ServiceContext.ContentTypeService.Get("umbTextpage"); var subsubpage = MockedContent.CreateSimpleContent(contentType, "Text Page 3", NodeDto.NodeIdSeed + 3); - contentService.Save(subsubpage, 0); + contentService.Save(subsubpage, Constants.Security.SuperUserId); var content = contentService.GetById(NodeDto.NodeIdSeed + 2); var descendants = contentService.GetDescendants(content).ToList(); @@ -1792,7 +1788,7 @@ namespace Umbraco.Tests.Services Assert.IsFalse(descendants.Any(x => x.Path.StartsWith("-1,-20,"))); Assert.IsFalse(descendants.Any(x => x.Trashed)); - contentService.MoveToRecycleBin(content, 0); + contentService.MoveToRecycleBin(content, Constants.Security.SuperUserId); descendants = contentService.GetDescendants(content).ToList(); Assert.AreEqual(-20, content.ParentId); @@ -1929,7 +1925,7 @@ namespace Umbraco.Tests.Services // * multiple versions var contentType = MockedContentTypes.CreateAllTypesContentType("test", "test"); - ServiceContext.ContentTypeService.Save(contentType, 0); + ServiceContext.ContentTypeService.Save(contentType, Constants.Security.SuperUserId); object obj = new @@ -1939,13 +1935,13 @@ namespace Umbraco.Tests.Services var content1 = MockedContent.CreateBasicContent(contentType); content1.PropertyValues(obj); content1.ResetDirtyProperties(false); - ServiceContext.ContentService.Save(content1, 0); + ServiceContext.ContentService.Save(content1, Constants.Security.SuperUserId); content1.PublishCulture(); Assert.IsTrue(ServiceContext.ContentService.SavePublishing(content1, 0).Success); var content2 = MockedContent.CreateBasicContent(contentType); content2.PropertyValues(obj); content2.ResetDirtyProperties(false); - ServiceContext.ContentService.Save(content2, 0); + ServiceContext.ContentService.Save(content2, Constants.Security.SuperUserId); content2.PublishCulture(); Assert.IsTrue(ServiceContext.ContentService.SavePublishing(content2, 0).Success); @@ -2014,7 +2010,7 @@ namespace Umbraco.Tests.Services var temp = contentService.GetById(NodeDto.NodeIdSeed + 4); // Act - var copy = contentService.Copy(temp, temp.ParentId, false, 0); + var copy = contentService.Copy(temp, temp.ParentId, false, Constants.Security.SuperUserId); var content = contentService.GetById(NodeDto.NodeIdSeed + 4); // Assert @@ -2038,7 +2034,7 @@ namespace Umbraco.Tests.Services Assert.AreEqual(2, temp.Children(contentService).Count()); // Act - var copy = contentService.Copy(temp, temp.ParentId, false, true, 0); + var copy = contentService.Copy(temp, temp.ParentId, false, true, Constants.Security.SuperUserId); var content = contentService.GetById(NodeDto.NodeIdSeed + 2); // Assert @@ -2064,7 +2060,7 @@ namespace Umbraco.Tests.Services Assert.AreEqual(2, temp.Children(contentService).Count()); // Act - var copy = contentService.Copy(temp, temp.ParentId, false, false, 0); + var copy = contentService.Copy(temp, temp.ParentId, false, false, Constants.Security.SuperUserId); var content = contentService.GetById(NodeDto.NodeIdSeed + 2); // Assert @@ -2533,7 +2529,7 @@ namespace Umbraco.Tests.Services var version = content.VersionId; // Act - contentService.DeleteVersion(NodeDto.NodeIdSeed + 5, version, true, 0); + contentService.DeleteVersion(NodeDto.NodeIdSeed + 5, version, true, Constants.Security.SuperUserId); var sut = contentService.GetById(NodeDto.NodeIdSeed + 5); // Assert @@ -2544,7 +2540,7 @@ namespace Umbraco.Tests.Services public void Ensure_Content_Xml_Created() { var contentService = ServiceContext.ContentService; - var content = contentService.Create("Home US", -1, "umbTextpage", 0); + var content = contentService.Create("Home US", -1, "umbTextpage", Constants.Security.SuperUserId); content.SetValue("author", "Barack Obama"); contentService.Save(content); @@ -2566,7 +2562,7 @@ namespace Umbraco.Tests.Services public void Ensure_Preview_Xml_Created() { var contentService = ServiceContext.ContentService; - var content = contentService.Create("Home US", -1, "umbTextpage", 0); + var content = contentService.Create("Home US", -1, "umbTextpage", Constants.Security.SuperUserId); content.SetValue("author", "Barack Obama"); contentService.Save(content); diff --git a/src/Umbraco.Tests/Services/TestWithSomeContentBase.cs b/src/Umbraco.Tests/Services/TestWithSomeContentBase.cs index 263ca17c28..2b313afc5c 100644 --- a/src/Umbraco.Tests/Services/TestWithSomeContentBase.cs +++ b/src/Umbraco.Tests/Services/TestWithSomeContentBase.cs @@ -34,7 +34,7 @@ namespace Umbraco.Tests.Services //Create and Save Content "Text Page 1" based on "umbTextpage" -> 1062 Content subpage = MockedContent.CreateSimpleContent(contentType, "Text Page 1", textpage.Id); - subpage.ContentSchedule.Add(null, DateTime.Now.AddMinutes(-5)); + subpage.ContentSchedule.Add(DateTime.Now.AddMinutes(-5), null); ServiceContext.ContentService.Save(subpage, 0); //Create and Save Content "Text Page 1" based on "umbTextpage" -> 1063