Files
Umbraco-CMS/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs
Mole 1258962429 V15: Remove Nucache (#17166)
* Remove nucache reference from Web.Common

* Get tests building-ish

* Move ReservedFieldNamesService to the right project

* Remove IPublishedSnapshotStatus

* Added functionality to the INavigationQueryService to get root keys

* Fixed issue with navigation

* Remove IPublishedSnapshot from UmbracoContext

* Begin removing usage of IPublishedSnapshot from PublishedContentExtensions

* Fix PublishedContentExtensions.cs

* Don't use snapshots in delivery media api

* Use IPublishedMediaCache in QueryMediaApiController

* Remove more usages of IPublishedSnapshotAccessor

* Comment out tests

* Remove more usages of PublishedSnapshotAccessor

* Remove PublishedSnapshot from property

* Fixed test build

* Fix errors

* Fix some tests

* Delete NuCache 🎉

* Implement DatabaseCacheRebuilder

* Remove usage of IPublishedSnapshotService

* Remove IPublishedSnapshotService

* Remove TestPublishedSnapshotAccessor and make tests build

* Don't test Snapshot cachelevel

It's no longer supported

* Fix BlockEditorConverter

Element != Element document type

* Remember to set cachemanager

* Fix RichTextParserTests

* Implement TryGetLevel on INavigationQueryService

* Fake level and obsolete it in PublishedContent

* Remove ChildrenForAllCultures

* Hack Path property on PublishedContent

* Remove usages of IPublishedSnapshot in tests

* More ConvertersTests

* Add hybrid cache to integration tests

We can actually do this now because we no longer save files on disk

* Rename IPublishedSnapshotRebuilder to ICacheRebuilder

* Comment out tests

* V15: Replacing the usages of Parent (navigation data) from IPublishedContent (#17125)

* Fix .Parent references in PublishedContentExtensions

* Add missing methods to FriendlyPublishedContentExtensions (ones that you were able to call on the content directly as they now require extra params)

* Fix references from the extension methods

* Fix dependencies in tests

* Replace IPublishedSnapshotAccessor with the content cache in tests

* Resolving more .Parent references

* Fix unit tests

* Obsolete and use extension methods

* Remove private method and use extension instead

* Moving code around

* Fix tests

* Fix more references

* Cleanup

* Fix more usages

* Resolve merge conflict

* Fix tests

* Cleanup

* Fix more tests

* Fixed unit tests

* Cleanup

* Replace last usages

---------

Co-authored-by: Bjarke Berg <mail@bergmania.dk>

* Remove usage of IPublishedSnapshotAccessor from IRequestItemProvider

* Post merge fixup

* Remo IPublishedSnapshot

* Add HasAny to IDocumentUrlService

* Fix TextBuilder

* Fix modelsbuilder tests

* Use explicit types

* Implement GetByContentType

* Support element types in PublishedContentTypeCache

* Run enlistments before publishing notifications

* Fix elements cache refreshing

* Implement GetByUdi

* Implement GetAtRoot

* Implement GetByRoute

* Reimplement GetRouteById

* Fix blocks unit tests

* Initialize domain cache on boot

* Only return routes with domains on non default lanauges

* V15: Replacing the usages of `Children` (navigation data) from `IPublishedContent` (#17159)

* Update params in PublishedContentExtensions to the general interfaces for the published cache and navigation service, so that we can use the extension methods on both documents and media

* Introduce GetParent() which uses the right services

* Fix obsolete message on .Parent

* Obsolete .Children

* Fix usages of Children for ApiMediaQueryService

* Fix usage in internal

* Fix usages in views

* Fix indentation

* Fix issue with delete language

* Update nuget pacakges

* Clear elements cache when content is deleted

instead of trying to update it

* Reset publishedModelFactory

* Fixed publishing

---------

Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: kjac <kja@umbraco.dk>
2024-10-01 15:03:02 +02:00

297 lines
13 KiB
C#

// using System.Collections.Generic;
// using System.Data;
// using System.Linq;
// using Microsoft.Extensions.Logging;
// using Microsoft.Extensions.Logging.Abstractions;
// using Microsoft.Extensions.Options;
// using Moq;
// using NUnit.Framework;
// using Umbraco.Cms.Core;
// using Umbraco.Cms.Core.Configuration.Models;
// using Umbraco.Cms.Core.Events;
// using Umbraco.Cms.Core.Hosting;
// using Umbraco.Cms.Core.Logging;
// using Umbraco.Cms.Core.Models;
// using Umbraco.Cms.Core.Models.PublishedContent;
// using Umbraco.Cms.Core.PropertyEditors;
// using Umbraco.Cms.Core.PropertyEditors.ValueConverters;
// using Umbraco.Cms.Core.PublishedCache;
// using Umbraco.Cms.Core.Routing;
// using Umbraco.Cms.Core.Scoping;
// using Umbraco.Cms.Core.Services;
// using Umbraco.Cms.Core.Strings;
// using Umbraco.Cms.Core.Sync;
// using Umbraco.Cms.Core.Web;
// using Umbraco.Cms.Infrastructure.PublishedCache;
// using Umbraco.Cms.Infrastructure.PublishedCache.DataSource;
// using Umbraco.Cms.Infrastructure.Serialization;
// using Umbraco.Cms.Tests.Common;
// using Umbraco.Extensions;
// using IScopeProvider = Umbraco.Cms.Infrastructure.Scoping.IScopeProvider;
//
// namespace Umbraco.Cms.Tests.UnitTests.TestHelpers;
//
// FIXME: Reintroduce if relevant
// [TestFixture]
// public class PublishedSnapshotServiceTestBase
// {
// [SetUp]
// public virtual void Setup()
// {
// VariationContextAccessor = new TestVariationContextAccessor();
// PublishedSnapshotAccessor = new TestPublishedSnapshotAccessor();
// }
//
// [TearDown]
// public void Teardown() => SnapshotService?.Dispose();
//
// protected IShortStringHelper ShortStringHelper { get; } = TestHelper.ShortStringHelper;
//
// protected virtual IPublishedModelFactory PublishedModelFactory { get; } = new NoopPublishedModelFactory();
//
// protected IContentTypeService ContentTypeService { get; private set; }
//
// protected IMediaTypeService MediaTypeService { get; private set; }
//
// protected IDataTypeService DataTypeService { get; private set; }
//
// protected IDomainService DomainService { get; private set; }
//
// protected IPublishedValueFallback PublishedValueFallback { get; private set; }
//
// protected IPublishedSnapshotService SnapshotService { get; private set; }
//
// protected IVariationContextAccessor VariationContextAccessor { get; private set; }
//
// protected TestPublishedSnapshotAccessor PublishedSnapshotAccessor { get; private set; }
//
// protected TestNuCacheContentService NuCacheContentService { get; private set; }
//
// protected PublishedContentTypeFactory PublishedContentTypeFactory { get; private set; }
//
// protected GlobalSettings GlobalSettings { get; } = new();
//
// protected virtual PropertyValueConverterCollection PropertyValueConverterCollection =>
// new(() => new[] { new TestSimpleTinyMceValueConverter() });
//
// protected IPublishedContent GetContent(int id)
// {
// var snapshot = GetPublishedSnapshot();
// var doc = snapshot.Content.GetById(id);
// Assert.IsNotNull(doc);
// return doc;
// }
//
// protected IPublishedContent GetMedia(int id)
// {
// var snapshot = GetPublishedSnapshot();
// var doc = snapshot.Media.GetById(id);
// Assert.IsNotNull(doc);
// return doc;
// }
//
// protected UrlProvider GetUrlProvider(
// IUmbracoContextAccessor umbracoContextAccessor,
// RequestHandlerSettings requestHandlerSettings,
// WebRoutingSettings webRoutingSettings,
// out UriUtility uriUtility)
// {
// uriUtility = new UriUtility(Mock.Of<IHostingEnvironment>());
// var urlProvider = new DefaultUrlProvider(
// Mock.Of<IOptionsMonitor<RequestHandlerSettings>>(x => x.CurrentValue == requestHandlerSettings),
// Mock.Of<ILogger<DefaultUrlProvider>>(),
// new SiteDomainMapper(),
// umbracoContextAccessor,
// uriUtility,
// Mock.Of<ILocalizationService>(x => x.GetDefaultLanguageIsoCode() == GlobalSettings.DefaultUILanguage));
//
// var publishedUrlProvider = new UrlProvider(
// umbracoContextAccessor,
// Options.Create(webRoutingSettings),
// new UrlProviderCollection(() => new[] { urlProvider }),
// new MediaUrlProviderCollection(() => Enumerable.Empty<IMediaUrlProvider>()),
// Mock.Of<IVariationContextAccessor>());
//
// return publishedUrlProvider;
// }
//
// protected static PublishedRouter CreatePublishedRouter(
// IUmbracoContextAccessor umbracoContextAccessor,
// IEnumerable<IContentFinder> contentFinders = null,
// IPublishedUrlProvider publishedUrlProvider = null,
// IDomainCache domainCache = null)
// {
// return new(
// Mock.Of<IOptionsMonitor<WebRoutingSettings>>(x => x.CurrentValue == new WebRoutingSettings()),
// new ContentFinderCollection(() => contentFinders ?? Enumerable.Empty<IContentFinder>()),
// new TestLastChanceFinder(),
// new TestVariationContextAccessor(),
// Mock.Of<IProfilingLogger>(),
// Mock.Of<ILogger<PublishedRouter>>(),
// publishedUrlProvider ?? Mock.Of<IPublishedUrlProvider>(),
// Mock.Of<IRequestAccessor>(),
// Mock.Of<IPublishedValueFallback>(),
// Mock.Of<IFileService>(),
// Mock.Of<IContentTypeService>(),
// umbracoContextAccessor,
// Mock.Of<IEventAggregator>(),
// domainCache ?? Mock.Of<IDomainCache>());
// }
//
// protected IUmbracoContextAccessor GetUmbracoContextAccessor(string urlAsString)
// {
// var snapshot = GetPublishedSnapshot();
//
// var uri = new Uri(urlAsString.Contains(Uri.SchemeDelimiter)
// ? urlAsString
// : $"http://example.com{urlAsString}");
//
// var umbracoContext = Mock.Of<IUmbracoContext>(
// x => x.CleanedUmbracoUrl == uri
// && x.Content == snapshot.Content
// && x.PublishedSnapshot == snapshot);
// var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
// return umbracoContextAccessor;
// }
//
// /// <summary>
// /// Used as a property editor for any test property that has an editor alias called "Umbraco.Void.RTE"
// /// </summary>
// private class TestSimpleTinyMceValueConverter : SimpleTinyMceValueConverter
// {
// public override bool IsConverter(IPublishedPropertyType propertyType)
// => propertyType.EditorAlias == "Umbraco.Void.RTE";
// }
//
// protected static DataType[] GetDefaultDataTypes()
// {
// var serializer = new SystemTextConfigurationEditorJsonSerializer();
//
// // create data types, property types and content types
// var dataType =
// new DataType(new VoidEditor("Editor", Mock.Of<IDataValueEditorFactory>()), serializer) { Id = 3 };
//
// return new[] { dataType };
// }
//
// protected virtual ServiceContext CreateServiceContext(IContentType[] contentTypes, IMediaType[] mediaTypes, IDataType[] dataTypes)
// {
// var contentTypeService = new Mock<IContentTypeService>();
// contentTypeService.Setup(x => x.GetAll()).Returns(contentTypes);
// contentTypeService.Setup(x => x.GetAll(It.IsAny<int[]>())).Returns(contentTypes);
// contentTypeService.Setup(x => x.Get(It.IsAny<string>()))
// .Returns((string alias) => contentTypes.FirstOrDefault(x => x.Alias.InvariantEquals(alias)));
//
// var mediaTypeService = new Mock<IMediaTypeService>();
// mediaTypeService.Setup(x => x.GetAll()).Returns(mediaTypes);
// mediaTypeService.Setup(x => x.GetAll(It.IsAny<int[]>())).Returns(mediaTypes);
// mediaTypeService.Setup(x => x.Get(It.IsAny<string>()))
// .Returns((string alias) => mediaTypes.FirstOrDefault(x => x.Alias.InvariantEquals(alias)));
//
// var contentTypeServiceBaseFactory = new Mock<IContentTypeBaseServiceProvider>();
// contentTypeServiceBaseFactory.Setup(x => x.For(It.IsAny<IContentBase>()))
// .Returns(contentTypeService.Object);
//
// var dataTypeServiceMock = new Mock<IDataTypeService>();
// dataTypeServiceMock.Setup(x => x.GetAll()).Returns(dataTypes);
//
// return ServiceContext.CreatePartial(
// dataTypeService: dataTypeServiceMock.Object,
// memberTypeService: Mock.Of<IMemberTypeService>(),
// memberService: Mock.Of<IMemberService>(),
// contentTypeService: contentTypeService.Object,
// mediaTypeService: mediaTypeService.Object,
// localizationService: Mock.Of<ILocalizationService>(),
// domainService: Mock.Of<IDomainService>(),
// fileService: Mock.Of<IFileService>());
// }
//
// /// <summary>
// /// Creates a published snapshot and set the accessor to resolve the created one
// /// </summary>
// /// <returns></returns>
// protected IPublishedSnapshot GetPublishedSnapshot()
// {
// var snapshot = SnapshotService.CreatePublishedSnapshot(null);
// PublishedSnapshotAccessor.SetCurrent(snapshot);
// return snapshot;
// }
//
// /// <summary>
// /// Initializes the <see cref="IPublishedSnapshotService" /> with a source of data.
// /// </summary>
// protected void InitializedCache(
// IEnumerable<ContentNodeKit> contentNodeKits,
// IContentType[] contentTypes,
// IDataType[] dataTypes = null,
// IEnumerable<ContentNodeKit> mediaNodeKits = null,
// IMediaType[] mediaTypes = null)
// {
// // create a data source for NuCache
// NuCacheContentService = new TestNuCacheContentService(contentNodeKits, mediaNodeKits);
//
// var runtime = Mock.Of<IRuntimeState>();
// Mock.Get(runtime).Setup(x => x.Level).Returns(RuntimeLevel.Run);
//
// // create a service context
// var serviceContext = CreateServiceContext(
// contentTypes ?? Array.Empty<IContentType>(),
// mediaTypes ?? Array.Empty<IMediaType>(),
// dataTypes ?? GetDefaultDataTypes());
//
// DataTypeService = serviceContext.DataTypeService;
// ContentTypeService = serviceContext.ContentTypeService;
// MediaTypeService = serviceContext.MediaTypeService;
// DomainService = serviceContext.DomainService;
//
// // create a scope provider
// var scopeProvider = Mock.Of<IScopeProvider>();
// Mock.Get(scopeProvider)
// .Setup(x => x.CreateScope(
// It.IsAny<IsolationLevel>(),
// It.IsAny<RepositoryCacheMode>(),
// It.IsAny<IEventDispatcher>(),
// It.IsAny<IScopedNotificationPublisher>(),
// It.IsAny<bool?>(),
// It.IsAny<bool>(),
// It.IsAny<bool>()))
// .Returns(Mock.Of<IScope>);
//
// // create a published content type factory
// PublishedContentTypeFactory = new PublishedContentTypeFactory(
// PublishedModelFactory,
// PropertyValueConverterCollection,
// DataTypeService);
//
// var typeFinder = TestHelper.GetTypeFinder();
//
// var nuCacheSettings = new NuCacheSettings();
//
// // at last, create the complete NuCache snapshot service!
// var options = new PublishedSnapshotServiceOptions { IgnoreLocalDb = true };
// SnapshotService = new PublishedSnapshotService(
// options,
// Mock.Of<ISyncBootStateAccessor>(x => x.GetSyncBootState() == SyncBootState.WarmBoot),
// new SimpleMainDom(),
// serviceContext,
// PublishedContentTypeFactory,
// PublishedSnapshotAccessor,
// VariationContextAccessor,
// Mock.Of<IProfilingLogger>(),
// NullLoggerFactory.Instance,
// scopeProvider,
// NuCacheContentService,
// new TestDefaultCultureAccessor(),
// Options.Create(GlobalSettings),
// PublishedModelFactory,
// TestHelper.GetHostingEnvironment(),
// Options.Create(nuCacheSettings),
// new ContentDataSerializer(new DictionaryOfPropertyDataSerializer()));
//
// // invariant is the current default
// VariationContextAccessor.VariationContext = new VariationContext();
//
// PublishedValueFallback = new PublishedValueFallback(serviceContext, VariationContextAccessor);
// }
// }