diff --git a/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/RelationRepositoryTest.cs similarity index 63% rename from src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs rename to src/Umbraco.Tests.Integration/Persistence/Repositories/RelationRepositoryTest.cs index 9cdd0d7c4a..804c6fef90 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/RelationRepositoryTest.cs @@ -12,6 +12,8 @@ using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.Repositories.Implement; using Umbraco.Core.Scoping; +using Umbraco.Core.Services; +using Umbraco.Tests.Integration.Testing; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; using Umbraco.Tests.Testing; @@ -20,37 +22,51 @@ namespace Umbraco.Tests.Persistence.Repositories { [TestFixture] [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)] - public class RelationRepositoryTest : TestWithDatabaseBase + public class RelationRepositoryTest : UmbracoIntegrationTest { - public override void SetUp() - { - base.SetUp(); + private RelationType _relateContent; + private RelationType _relateContentType; + private ContentType _contentType; + private Content _textpage; + private Content _subpage; + private Content _subpage2; + private Relation _relation; + private Relation _relation2; + private IContentTypeService ContentTypeService => GetRequiredService(); + private IContentService ContentService => GetRequiredService(); + private IMediaTypeService MediaTypeService => GetRequiredService(); + private IMediaService MediaService => GetRequiredService(); + + private IMemberTypeService MemberTypeService => GetRequiredService(); + private IMemberService MemberService => GetRequiredService(); + private IRelationService RelationService => GetRequiredService(); + private IFileService FileService => GetRequiredService(); + + [SetUp] + public void SetUp() + { CreateTestData(); } private RelationRepository CreateRepository(IScopeProvider provider, out RelationTypeRepository relationTypeRepository) { - var accessor = (IScopeAccessor) provider; - relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Mock.Of>()); - var entityRepository = new EntityRepository(accessor); - var repository = new RelationRepository(accessor, Mock.Of>(), relationTypeRepository, entityRepository); - return repository; + relationTypeRepository = (RelationTypeRepository)GetRequiredService(); + return (RelationRepository)GetRequiredService(); } [Test] public void Can_Perform_Add_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { RelationTypeRepository repositoryType; - var repository = CreateRepository(provider, out repositoryType); + var repository = CreateRepository(ScopeProvider, out repositoryType); // Act var relationType = repositoryType.Get(1); - var relation = new Relation(NodeDto.NodeIdSeed + 2, NodeDto.NodeIdSeed + 3, relationType); + var relation = new Relation(_textpage.Id, _subpage.Id, relationType); repository.Save(relation); @@ -64,11 +80,10 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Update_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { RelationTypeRepository repositoryType; - var repository = CreateRepository(provider, out repositoryType); + var repository = CreateRepository(ScopeProvider, out repositoryType); // Act var relation = repository.Get(1); @@ -89,11 +104,10 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Delete_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { RelationTypeRepository repositoryType; - var repository = CreateRepository(provider, out repositoryType); + var repository = CreateRepository(ScopeProvider, out repositoryType); // Act var relation = repository.Get(2); @@ -111,11 +125,10 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Get_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { RelationTypeRepository repositoryType; - var repository = CreateRepository(provider, out repositoryType); + var repository = CreateRepository(ScopeProvider, out repositoryType); // Act var relation = repository.Get(1); @@ -123,8 +136,8 @@ namespace Umbraco.Tests.Persistence.Repositories // Assert Assert.That(relation, Is.Not.Null); Assert.That(relation.HasIdentity, Is.True); - Assert.That(relation.ChildId, Is.EqualTo(NodeDto.NodeIdSeed + 3)); - Assert.That(relation.ParentId, Is.EqualTo(NodeDto.NodeIdSeed + 2)); + Assert.That(relation.ChildId, Is.EqualTo(_subpage.Id)); + Assert.That(relation.ParentId, Is.EqualTo(_textpage.Id)); Assert.That(relation.RelationType.Alias, Is.EqualTo("relateContentOnCopy")); } } @@ -133,11 +146,10 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetAll_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { RelationTypeRepository repositoryType; - var repository = CreateRepository(provider, out repositoryType); + var repository = CreateRepository(ScopeProvider, out repositoryType); // Act var relations = repository.GetMany(); @@ -154,11 +166,10 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetAll_With_Params_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { RelationTypeRepository repositoryType; - var repository = CreateRepository(provider, out repositoryType); + var repository = CreateRepository(ScopeProvider, out repositoryType); // Act var relations = repository.GetMany(1, 2); @@ -176,35 +187,34 @@ namespace Umbraco.Tests.Persistence.Repositories { CreateTestDataForPagingTests(out var createdContent, out var createdMembers, out var createdMedia); - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { - var repository = CreateRepository(provider, out var relationTypeRepository); + var repository = CreateRepository(ScopeProvider, out var relationTypeRepository); // Get parent entities for child id var parents = repository.GetPagedParentEntitiesByChildId(createdMedia[0].Id, 0, 11, out var totalRecords).ToList(); - Assert.AreEqual(20, totalRecords); - Assert.AreEqual(11, parents.Count); + Assert.AreEqual(6, totalRecords); + Assert.AreEqual(6, parents.Count); //add the next page parents.AddRange(repository.GetPagedParentEntitiesByChildId(createdMedia[0].Id, 1, 11, out totalRecords)); - Assert.AreEqual(20, totalRecords); - Assert.AreEqual(20, parents.Count); + Assert.AreEqual(6, totalRecords); + Assert.AreEqual(6, parents.Count); var contentEntities = parents.OfType().ToList(); var mediaEntities = parents.OfType().ToList(); var memberEntities = parents.OfType().ToList(); - Assert.AreEqual(10, contentEntities.Count); + Assert.AreEqual(3, contentEntities.Count); Assert.AreEqual(0, mediaEntities.Count); - Assert.AreEqual(10, memberEntities.Count); + Assert.AreEqual(3, memberEntities.Count); //only of a certain type parents.AddRange(repository.GetPagedParentEntitiesByChildId(createdMedia[0].Id, 0, 100, out totalRecords, UmbracoObjectTypes.Document.GetGuid())); - Assert.AreEqual(10, totalRecords); + Assert.AreEqual(3, totalRecords); parents.AddRange(repository.GetPagedParentEntitiesByChildId(createdMedia[0].Id, 0, 100, out totalRecords, UmbracoObjectTypes.Member.GetGuid())); - Assert.AreEqual(10, totalRecords); + Assert.AreEqual(3, totalRecords); parents.AddRange(repository.GetPagedParentEntitiesByChildId(createdMedia[0].Id, 0, 100, out totalRecords, UmbracoObjectTypes.Media.GetGuid())); Assert.AreEqual(0, totalRecords); @@ -216,16 +226,15 @@ namespace Umbraco.Tests.Persistence.Repositories { //Create a media item and create a relationship between itself (parent -> child) var imageType = MockedContentTypes.CreateImageMediaType("myImage"); - ServiceContext.MediaTypeService.Save(imageType); + MediaTypeService.Save(imageType); var media = MockedMedia.CreateMediaImage(imageType, -1); - ServiceContext.MediaService.Save(media); - var relType = ServiceContext.RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelatedMediaAlias); - ServiceContext.RelationService.Relate(media.Id, media.Id, relType); + MediaService.Save(media); + var relType = RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelatedMediaAlias); + RelationService.Relate(media.Id, media.Id, relType); - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { - var repository = CreateRepository(provider, out var relationTypeRepository); + var repository = CreateRepository(ScopeProvider, out var relationTypeRepository); // Get parent entities for child id var parents = repository.GetPagedParentEntitiesByChildId(media.Id, 0, 10, out var totalRecords).ToList(); @@ -244,35 +253,34 @@ namespace Umbraco.Tests.Persistence.Repositories { CreateTestDataForPagingTests(out var createdContent, out var createdMembers, out var createdMedia); - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { - var repository = CreateRepository(provider, out var relationTypeRepository); + var repository = CreateRepository(ScopeProvider, out var relationTypeRepository); // Get parent entities for child id var parents = repository.GetPagedChildEntitiesByParentId(createdContent[0].Id, 0, 6, out var totalRecords).ToList(); - Assert.AreEqual(10, totalRecords); - Assert.AreEqual(6, parents.Count); + Assert.AreEqual(3, totalRecords); + Assert.AreEqual(3, parents.Count); //add the next page parents.AddRange(repository.GetPagedChildEntitiesByParentId(createdContent[0].Id, 1, 6, out totalRecords)); - Assert.AreEqual(10, totalRecords); - Assert.AreEqual(10, parents.Count); + Assert.AreEqual(3, totalRecords); + Assert.AreEqual(3, parents.Count); var contentEntities = parents.OfType().ToList(); var mediaEntities = parents.OfType().ToList(); var memberEntities = parents.OfType().ToList(); Assert.AreEqual(0, contentEntities.Count); - Assert.AreEqual(10, mediaEntities.Count); + Assert.AreEqual(3, mediaEntities.Count); Assert.AreEqual(0, memberEntities.Count); //only of a certain type parents.AddRange(repository.GetPagedChildEntitiesByParentId(createdContent[0].Id, 0, 100, out totalRecords, UmbracoObjectTypes.Media.GetGuid())); - Assert.AreEqual(10, totalRecords); + Assert.AreEqual(3, totalRecords); parents.AddRange(repository.GetPagedChildEntitiesByParentId(createdMembers[0].Id, 0, 100, out totalRecords, UmbracoObjectTypes.Media.GetGuid())); - Assert.AreEqual(10, totalRecords); + Assert.AreEqual(3, totalRecords); parents.AddRange(repository.GetPagedChildEntitiesByParentId(createdContent[0].Id, 0, 100, out totalRecords, UmbracoObjectTypes.Member.GetGuid())); Assert.AreEqual(0, totalRecords); @@ -284,52 +292,51 @@ namespace Umbraco.Tests.Persistence.Repositories //Create content createdContent = new List(); var contentType = MockedContentTypes.CreateBasicContentType("blah"); - ServiceContext.ContentTypeService.Save(contentType); - for (int i = 0; i < 10; i++) + ContentTypeService.Save(contentType); + for (int i = 0; i < 3; i++) { var c1 = MockedContent.CreateBasicContent(contentType); - ServiceContext.ContentService.Save(c1); + ContentService.Save(c1); createdContent.Add(c1); } //Create media createdMedia = new List(); var imageType = MockedContentTypes.CreateImageMediaType("myImage"); - ServiceContext.MediaTypeService.Save(imageType); - for (int i = 0; i < 10; i++) + MediaTypeService.Save(imageType); + for (int i = 0; i < 3; i++) { var c1 = MockedMedia.CreateMediaImage(imageType, -1); - ServiceContext.MediaService.Save(c1); + MediaService.Save(c1); createdMedia.Add(c1); } // Create members var memberType = MockedContentTypes.CreateSimpleMemberType("simple"); - ServiceContext.MemberTypeService.Save(memberType); - createdMembers = MockedMember.CreateSimpleMember(memberType, 10).ToList(); - ServiceContext.MemberService.Save(createdMembers); + MemberTypeService.Save(memberType); + createdMembers = MockedMember.CreateSimpleMember(memberType, 3).ToList(); + MemberService.Save(createdMembers); - var relType = ServiceContext.RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelatedMediaAlias); + var relType = RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelatedMediaAlias); // Relate content to media foreach (var content in createdContent) foreach (var media in createdMedia) - ServiceContext.RelationService.Relate(content.Id, media.Id, relType); + RelationService.Relate(content.Id, media.Id, relType); // Relate members to media foreach (var member in createdMembers) foreach (var media in createdMedia) - ServiceContext.RelationService.Relate(member.Id, media.Id, relType); + RelationService.Relate(member.Id, media.Id, relType); } [Test] public void Can_Perform_Exists_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { RelationTypeRepository repositoryType; - var repository = CreateRepository(provider, out repositoryType); + var repository = CreateRepository(ScopeProvider, out repositoryType); // Act var exists = repository.Exists(2); @@ -345,14 +352,13 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Count_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { RelationTypeRepository repositoryType; - var repository = CreateRepository(provider, out repositoryType); + var repository = CreateRepository(ScopeProvider, out repositoryType); // Act - var query = scope.SqlContext.Query().Where(x => x.ParentId == NodeDto.NodeIdSeed + 2); + var query = scope.SqlContext.Query().Where(x => x.ParentId == _textpage.Id); int count = repository.Count(query); // Assert @@ -364,14 +370,13 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetByQuery_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { RelationTypeRepository repositoryType; - var repository = CreateRepository(provider, out repositoryType); + var repository = CreateRepository(ScopeProvider, out repositoryType); // Act - var query = scope.SqlContext.Query().Where(x => x.RelationTypeId == RelationTypeDto.NodeIdSeed); + var query = scope.SqlContext.Query().Where(x => x.RelationTypeId == _relateContent.Id); var relations = repository.Get(query); // Assert @@ -386,14 +391,13 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Delete_Content_And_Verify_Relation_Is_Removed() { // Arrange - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { RelationTypeRepository repositoryType; - var repository = CreateRepository(provider, out repositoryType); + var repository = CreateRepository(ScopeProvider, out repositoryType); - var content = ServiceContext.ContentService.GetById(NodeDto.NodeIdSeed + 3); - ServiceContext.ContentService.Delete(content, 0); + var content = ContentService.GetById(_subpage.Id); + ContentService.Delete(content, 0); // Act var shouldntExist = repository.Exists(1); @@ -413,49 +417,48 @@ namespace Umbraco.Tests.Persistence.Repositories public void CreateTestData() { - var relateContent = new RelationType( + _relateContent = new RelationType( "Relate Content on Copy", "relateContentOnCopy", true, Constants.ObjectTypes.Document, new Guid("C66BA18E-EAF3-4CFF-8A22-41B16D66A972")); - var relateContentType = new RelationType("Relate ContentType on Copy", + _relateContentType = new RelationType("Relate ContentType on Copy", "relateContentTypeOnCopy", true, Constants.ObjectTypes.DocumentType, new Guid("A2CB7800-F571-4787-9638-BC48539A0EFB")); - var provider = TestObjects.GetScopeProvider(LoggerFactory); - using (var scope = provider.CreateScope()) + using (var scope = ScopeProvider.CreateScope()) { - var accessor = (IScopeAccessor)provider; + var accessor = (IScopeAccessor)ScopeProvider; var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Mock.Of>()); var entityRepository = new EntityRepository(accessor); var relationRepository = new RelationRepository(accessor, Mock.Of>(), relationTypeRepository, entityRepository); - relationTypeRepository.Save(relateContent); - relationTypeRepository.Save(relateContentType); + relationTypeRepository.Save(_relateContent); + relationTypeRepository.Save(_relateContentType); //Create and Save ContentType "umbTextpage" -> (NodeDto.NodeIdSeed) - ContentType contentType = MockedContentTypes.CreateSimpleContentType("umbTextpage", "Textpage"); - ServiceContext.FileService.SaveTemplate(contentType.DefaultTemplate); // else, FK violation on contentType! - ServiceContext.ContentTypeService.Save(contentType); + _contentType = MockedContentTypes.CreateSimpleContentType("umbTextpage", "Textpage"); + FileService.SaveTemplate(_contentType.DefaultTemplate); // else, FK violation on contentType! + ContentTypeService.Save(_contentType); //Create and Save Content "Homepage" based on "umbTextpage" -> (NodeDto.NodeIdSeed + 1) - Content textpage = MockedContent.CreateSimpleContent(contentType); - ServiceContext.ContentService.Save(textpage, 0); + _textpage = MockedContent.CreateSimpleContent(_contentType); + ContentService.Save(_textpage, 0); //Create and Save Content "Text Page 1" based on "umbTextpage" -> (NodeDto.NodeIdSeed + 2) - Content subpage = MockedContent.CreateSimpleContent(contentType, "Text Page 1", textpage.Id); - ServiceContext.ContentService.Save(subpage, 0); + _subpage = MockedContent.CreateSimpleContent(_contentType, "Text Page 1", _textpage.Id); + ContentService.Save(_subpage, 0); //Create and Save Content "Text Page 1" based on "umbTextpage" -> (NodeDto.NodeIdSeed + 3) - Content subpage2 = MockedContent.CreateSimpleContent(contentType, "Text Page 2", textpage.Id); - ServiceContext.ContentService.Save(subpage2, 0); + _subpage2 = MockedContent.CreateSimpleContent(_contentType, "Text Page 2", _textpage.Id); + ContentService.Save(_subpage2, 0); - var relation = new Relation(textpage.Id, subpage.Id, relateContent) { Comment = string.Empty }; - var relation2 = new Relation(textpage.Id, subpage2.Id, relateContent) { Comment = string.Empty }; - relationRepository.Save(relation); - relationRepository.Save(relation2); + _relation = new Relation(_textpage.Id, _subpage.Id, _relateContent) { Comment = string.Empty }; + _relation2 = new Relation(_textpage.Id, _subpage2.Id, _relateContent) { Comment = string.Empty }; + relationRepository.Save(_relation); + relationRepository.Save(_relation2); scope.Complete(); } } diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 5e262f768a..87ab7e5fa1 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -310,7 +310,6 @@ -