Skip to content

Commit

Permalink
extensions package for a named client
Browse files Browse the repository at this point in the history
  • Loading branch information
tomasjurasek committed Jan 13, 2021
1 parent c88baee commit f82a31f
Show file tree
Hide file tree
Showing 26 changed files with 841 additions and 469 deletions.
10 changes: 5 additions & 5 deletions Kentico.Kontent.Delivery.Abstractions/IDeliveryClientFactory.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
namespace Kentico.Kontent.Delivery.Abstractions
{
/// <summary>
/// Defines a methods for getting a <see cref="IDeliveryClient"/>
/// Defines a method for getting a named <see cref="IDeliveryClient"/>
/// </summary>
public interface IDeliveryClientFactory
{
Expand All @@ -12,10 +12,10 @@ public interface IDeliveryClientFactory
/// <returns>Returns an <see cref="IDeliveryClient"/> instance with the given name.</returns>
IDeliveryClient Get(string name);

/// <summary>
/// Returns a default instance of the <see cref="IDeliveryClient"/>.
/// </summary>
/// <returns>Returns a default instance of the <see cref="IDeliveryClient"/>.</returns>
/// <summary>
/// Returns a default instance of the <see cref="IDeliveryClient"/>.
/// </summary>
/// <returns>Returns a default instance of the <see cref="IDeliveryClient"/>.</returns>
IDeliveryClient Get();
}
}
40 changes: 40 additions & 0 deletions Kentico.Kontent.Delivery.Caching.Tests/CacheManagerFactoryTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using FakeItEasy;
using FluentAssertions;
using Kentico.Kontent.Delivery.Caching.Factories;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Options;
using Xunit;

namespace Kentico.Kontent.Delivery.Caching.Tests
{
public class CacheManagerFactoryTests
{
private IOptions<DeliveryCacheOptions> _options;
private IDistributedCache _distributedCache;
private IMemoryCache _memoryCache;

public CacheManagerFactoryTests()
{
_options = A.Fake<IOptions<DeliveryCacheOptions>>();
_distributedCache = A.Fake<IDistributedCache>();
_memoryCache = A.Fake<IMemoryCache>();
}

[Fact]
public void Create_DistributedCache()
{
var deliveryCacheManager = CacheManagerFactory.Create(_distributedCache, _options);

deliveryCacheManager.Should().NotBeNull();
}

[Fact]
public void Create_MemoryCache()
{
var deliveryCacheManager = CacheManagerFactory.Create(_memoryCache, _options);

deliveryCacheManager.Should().NotBeNull();
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,18 @@ public void AddDeliveryClientCacheWithDeliveryCacheOptions_ThrowsMissingTypeRegi
Assert.Throws<MissingTypeRegistrationException>(() => _serviceCollection.AddDeliveryClientCache(new DeliveryCacheOptions() { CacheType = cacheType }));
}

[Fact]
public void AddDeliveryClientCacheWithNullDeliveryCacheOptions_ThrowsArgumentNullException()
{
Assert.Throws<ArgumentNullException>(() => _serviceCollection.AddDeliveryClientCache(null));
}

[Fact]
public void AddDeliveryClientCacheWitNoPreviousRegistrationDeliveryClient_ThrowsMissingTypeRegistrationException()
{
Assert.Throws<MissingTypeRegistrationException>(() => _serviceCollection.AddDeliveryClientCache(new DeliveryCacheOptions()));
}

[Theory]
[InlineData(CacheTypeEnum.Memory)]
[InlineData(CacheTypeEnum.Distributed)]
Expand Down Expand Up @@ -63,75 +75,5 @@ public void AddDeliveryClient_CacheWithDeliveryCacheOptions_GetNull(CacheTypeEnu

client.Should().BeNull();
}

[Theory]
[InlineData(CacheTypeEnum.Memory)]
[InlineData(CacheTypeEnum.Distributed)]
public void AddDeliveryNamedClient_CacheWithDeliveryCacheOptions_GetNamedClient(CacheTypeEnum cacheType)
{
_serviceCollection.AddDeliveryClient("named", new DeliveryOptions() { ProjectId = Guid.NewGuid().ToString() });
_serviceCollection.AddDeliveryClientCache("named", new DeliveryCacheOptions()
{
CacheType = cacheType
});

var sp = _serviceCollection.BuildServiceProvider();
var factory = sp.GetRequiredService<IDeliveryClientFactory>();

var client = factory.Get("named");

client.Should().NotBeNull();
}

[Theory]
[InlineData(CacheTypeEnum.Memory)]
[InlineData(CacheTypeEnum.Distributed)]
public void AddDeliveryNamedClient_CacheWithDeliveryCacheOptions_GetNull(CacheTypeEnum cacheType)
{
_serviceCollection.AddDeliveryClient("named", new DeliveryOptions() { ProjectId = Guid.NewGuid().ToString() });
_serviceCollection.AddDeliveryClientCache("named", new DeliveryCacheOptions()
{
CacheType = cacheType
});

var sp = _serviceCollection.BuildServiceProvider();
var factory = sp.GetRequiredService<IDeliveryClientFactory>();

var client = factory.Get("WrongName");

client.Should().BeNull();
}

[Theory]
[InlineData(CacheTypeEnum.Memory)]
[InlineData(CacheTypeEnum.Distributed)]
public void AddDeliveryClientCacheNamedWithDeliveryCacheOptions_ThrowsInvalidOperationException(CacheTypeEnum cacheType)
{
Assert.Throws<MissingTypeRegistrationException>(() => _serviceCollection.AddDeliveryClientCache("named", new DeliveryCacheOptions() { CacheType = cacheType }));
}

[Fact]
public void AddDeliveryClientCacheWithNullDeliveryCacheOptions_ThrowsArgumentNullException()
{
Assert.Throws<ArgumentNullException>(() => _serviceCollection.AddDeliveryClientCache(null));
}

[Fact]
public void AddDeliveryClientCacheNamedWithNullDeliveryCacheOptions_ThrowsArgumentNullException()
{
Assert.Throws<ArgumentNullException>(() => _serviceCollection.AddDeliveryClientCache("named", null));
}

[Fact]
public void AddDeliveryClientCacheWitNoPreviousRegistrationDeliveryClient_ThrowsMissingTypeRegistrationException()
{
Assert.Throws<MissingTypeRegistrationException>(() => _serviceCollection.AddDeliveryClientCache(new DeliveryCacheOptions()));
}

[Fact]
public void AddDeliveryClientNamedCacheWitNoPreviousRegistrationDeliveryClient_ThrowsMissingTypeRegistrationException()
{
Assert.Throws<MissingTypeRegistrationException>(() => _serviceCollection.AddDeliveryClientCache("named", new DeliveryCacheOptions()));
}
}
}
5 changes: 0 additions & 5 deletions Kentico.Kontent.Delivery.Caching/DeliveryCacheOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,5 @@ public class DeliveryCacheOptions
/// Determines whether to use <see cref="Microsoft.Extensions.Caching.Distributed.IDistributedCache" /> or <inheritdoc cref="Microsoft.Extensions.Caching.Memory.IMemoryCache"/>
/// </summary>
public CacheTypeEnum CacheType { get; set; } = CacheTypeEnum.Memory;

/// <summary>
/// Name of an <see cref="IDeliveryCacheManager"/> instance the options are bound to.
/// </summary>
internal string Name { get; set; }
}
}
81 changes: 0 additions & 81 deletions Kentico.Kontent.Delivery.Caching/DeliveryClientCacheFactory.cs

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
namespace Kentico.Kontent.Delivery.Caching.Extensions
{
internal static class DeliveryCacheOptionsExtensions
/// <summary>
/// Extensions for a <see cref="DeliveryCacheOptions"/>.
/// </summary>
public static class DeliveryCacheOptionsExtensions
{
/// <summary>
/// Maps a <see cref="DeliveryCacheOptions"/> to each other.
/// </summary>
/// <param name="o">A destination.</param>
/// <param name="options">A source.</param>
public static void Configure(this DeliveryCacheOptions o, DeliveryCacheOptions options)
{
o.CacheType = options.CacheType;
o.DefaultExpiration = options.DefaultExpiration;
o.DefaultExpirationType = options.DefaultExpirationType;
o.StaleContentExpiration = options.StaleContentExpiration;
o.Name = o.Name;
}
}
}
Loading

0 comments on commit f82a31f

Please sign in to comment.