Files
Umbraco-CMS/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs

297 lines
13 KiB
C#
Raw Normal View History

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
// 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(new DefaultConfigurationEditorJsonSerializerEncoderFactory());
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
//
// // 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);
// }
// }