Skip to content

Commit 51fc0c0

Browse files
committed
Add GarnetTagCache unit tests
1 parent 13f6d6b commit 51fc0c0

2 files changed

Lines changed: 94 additions & 8 deletions

File tree

src/OrchardCoreContrib.Garnet/Extensions/GarnetClientExtensions.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
using OrchardCoreContrib.Infrastructure;
1+
using Garnet.client;
2+
using OrchardCoreContrib.Infrastructure;
23

3-
namespace Garnet.client;
4+
namespace OrchardCoreContrib.Garnet;
45

56
/// <summary>
67
/// Provides an extension methods for <see cref="GarnetClient"/>.
Lines changed: 91 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,95 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Text;
5-
using System.Threading.Tasks;
1+
using Microsoft.Extensions.Hosting;
2+
using Microsoft.Extensions.Logging;
3+
using Microsoft.Extensions.Logging.Abstractions;
4+
using Microsoft.Extensions.Options;
5+
using Moq;
6+
using OrchardCore.Environment.Shell;
7+
using OrchardCoreContrib.Garnet.Services;
68

79
namespace OrchardCoreContrib.Garnet.Tests;
8-
internal class GarnetTagCacheTests
10+
11+
public class GarnetTagCacheTests : TestBase
912
{
13+
private static GarnetTagCache _garnetTagCache;
14+
15+
private IGarnetService _garnetService;
16+
private ShellSettings _shellSettings = new();
17+
18+
public override async Task InitializeAsync()
19+
{
20+
_garnetService = await CreateGarnetServiceAsync();
21+
22+
_garnetTagCache = new GarnetTagCache(
23+
_garnetService,
24+
_shellSettings,
25+
[],
26+
NullLogger<GarnetTagCache>.Instance);
27+
}
28+
29+
[Fact]
30+
public async Task TagItems()
31+
{
32+
// Arrange
33+
var key = "tagKey1";
34+
string[] tags = ["tag1", "tag2", "tag3"];
35+
36+
// Act
37+
await _garnetTagCache.TagAsync(key, tags);
38+
39+
// Assert
40+
foreach (var tag in tags)
41+
{
42+
var result = await _garnetService.Client.SetGetAsync($"{_garnetService.InstancePrefix}{_shellSettings.Name}:Tag:{tag}");
43+
Assert.Single(result);
44+
Assert.Equal(key, result[0]);
45+
}
46+
}
47+
48+
[Fact]
49+
public async Task GetTaggedItems()
50+
{
51+
// Arrange
52+
var tag = "tag4";
53+
string[] items = ["item1", "item2"];
54+
55+
await _garnetService.Client.SetSetAsync($"{_garnetService.InstancePrefix}{_shellSettings.Name}:Tag:{tag}", items[0]);
56+
await _garnetService.Client.SetSetAsync($"{_garnetService.InstancePrefix}{_shellSettings.Name}:Tag:{tag}", items[1]);
57+
58+
// Act
59+
var taggedItems = await _garnetTagCache.GetTaggedItemsAsync(tag);
60+
61+
// Assert
62+
Assert.NotEmpty(taggedItems);
63+
Assert.Equal(items, taggedItems);
64+
}
65+
66+
[Fact]
67+
public async Task RemoveTaggedItem()
68+
{
69+
// Arrange
70+
var tag = "tag5";
71+
72+
await _garnetService.Client.SetSetAsync($"{_garnetService.InstancePrefix}{_shellSettings.Name}:Tag:{tag}", "item1");
73+
74+
// Act
75+
await _garnetTagCache.RemoveTagAsync(tag);
76+
77+
// Assert
78+
await _garnetService.Client.SetGetAsync(tag);
79+
80+
var result = await _garnetService.Client.SetGetAsync($"{_garnetService.InstancePrefix}{_shellSettings.Name}:Tag:{tag}");
81+
Assert.Empty(result);
82+
}
83+
84+
private static async Task<IGarnetService> CreateGarnetServiceAsync()
85+
{
86+
var garnetClientFactory = new GarnetClientFactory(
87+
Mock.Of<IHostApplicationLifetime>(),
88+
Mock.Of<ILogger<GarnetClientFactory>>());
89+
var garnetService = new GarnetService(garnetClientFactory, Options.Create(new GarnetOptions()));
90+
91+
await garnetService.ConnectAsync();
92+
93+
return garnetService;
94+
}
1095
}

0 commit comments

Comments
 (0)