// using Moq; // using NUnit.Framework; // using Umbraco.Cms.Core.Cache; // using Umbraco.Cms.Core.Models.PublishedContent; // using Umbraco.Cms.Core.PropertyEditors; // using Umbraco.Cms.Core.PublishedCache; // using Umbraco.Cms.Infrastructure.PublishedCache; // using Umbraco.Cms.Infrastructure.PublishedCache.DataSource; // // namespace Umbraco.Cms.Tests.Integration.Umbraco.Core.DeliveryApi; // // FIXME: Reintroduce if relevant // [TestFixture] // public class CacheTests // { // [TestCase(PropertyCacheLevel.Snapshot, false, 1)] // [TestCase(PropertyCacheLevel.Snapshot, true, 1)] // [TestCase(PropertyCacheLevel.Elements, false, 1)] // [TestCase(PropertyCacheLevel.Elements, true, 1)] // [TestCase(PropertyCacheLevel.Element, false, 1)] // [TestCase(PropertyCacheLevel.Element, true, 1)] // [TestCase(PropertyCacheLevel.None, false, 4)] // [TestCase(PropertyCacheLevel.None, true, 4)] // public void PublishedElementProperty_CachesDeliveryApiValueConversion(PropertyCacheLevel cacheLevel, bool expanding, int expectedConverterHits) // { // var contentType = new Mock(); // contentType.SetupGet(c => c.PropertyTypes).Returns(Array.Empty()); // // var contentNode = new ContentNode(123, Guid.NewGuid(), contentType.Object, 1, string.Empty, 1, 1, DateTime.Now, 1); // var contentData = new ContentData("bla", "bla", 1, DateTime.Now, 1, 1, true, new Dictionary(), null); // // var elementCache = new FastDictionaryAppCache(); // var snapshotCache = new FastDictionaryAppCache(); // var publishedSnapshotMock = new Mock(); // publishedSnapshotMock.SetupGet(p => p.ElementsCache).Returns(elementCache); // publishedSnapshotMock.SetupGet(p => p.SnapshotCache).Returns(snapshotCache); // // var publishedSnapshot = publishedSnapshotMock.Object; // var publishedSnapshotAccessor = new Mock(); // publishedSnapshotAccessor.Setup(p => p.TryGetPublishedSnapshot(out publishedSnapshot)).Returns(true); // // var content = new PublishedContent( // contentNode, // contentData, // publishedSnapshotAccessor.Object, // Mock.Of(), // Mock.Of()); // // var propertyType = new Mock(); // var invocationCount = 0; // propertyType.SetupGet(p => p.CacheLevel).Returns(cacheLevel); // propertyType.SetupGet(p => p.DeliveryApiCacheLevel).Returns(cacheLevel); // propertyType.SetupGet(p => p.DeliveryApiCacheLevelForExpansion).Returns(cacheLevel); // propertyType // .Setup(p => p.ConvertInterToDeliveryApiObject(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) // .Returns(() => $"Delivery API value: {++invocationCount}"); // // var prop1 = new Property(propertyType.Object, content, publishedSnapshotAccessor.Object); // var results = new List(); // results.Add(prop1.GetDeliveryApiValue(expanding)!.ToString()); // results.Add(prop1.GetDeliveryApiValue(expanding)!.ToString()); // results.Add(prop1.GetDeliveryApiValue(expanding)!.ToString()); // results.Add(prop1.GetDeliveryApiValue(expanding)!.ToString()); // // Assert.AreEqual("Delivery API value: 1", results.First()); // Assert.AreEqual(expectedConverterHits, results.Distinct().Count()); // // propertyType.Verify( // p => p.ConvertInterToDeliveryApiObject( // It.IsAny(), // It.IsAny(), // It.IsAny(), // It.IsAny(), // It.IsAny()), // Times.Exactly(expectedConverterHits)); // } // }