using Microsoft.Extensions.Caching.Hybrid;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Infrastructure.HybridCache;
using Umbraco.Cms.Infrastructure.HybridCache.Extensions;
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.PublishedCache.HybridCache.Extensions;
///
/// Provides tests to cover the class.
///
///
/// Hat-tip: https://github.com/dotnet/aspnetcore/discussions/57191
///
[TestFixture]
public class HybridCacheExtensionsTests
{
private Mock _cacheMock;
[SetUp]
public void TestInitialize()
{
_cacheMock = new Mock();
}
[Test]
public async Task ExistsAsync_WhenKeyExists_ShouldReturnTrue()
{
// Arrange
string key = "test-key";
var expectedValue = new ContentCacheNode { Id = 1234 };
_cacheMock
.Setup(cache => cache.GetOrCreateAsync(
key,
null!,
It.IsAny>>(),
It.IsAny(),
null,
CancellationToken.None))
.ReturnsAsync(expectedValue);
// Act
var exists = await HybridCacheExtensions.ExistsAsync(_cacheMock.Object, key);
// Assert
Assert.IsTrue(exists);
}
[Test]
public async Task ExistsAsync_WhenKeyDoesNotExist_ShouldReturnFalse()
{
// Arrange
string key = "test-key";
_cacheMock
.Setup(cache => cache.GetOrCreateAsync(
key,
null!,
It.IsAny>>(),
It.IsAny(),
null,
CancellationToken.None))
.Returns((
string key,
object? state,
Func