Webiant Logo Webiant Logo
  1. No results found.

    Try your search with a different keyword or use * as a wildcard.

TerstRedisConnectionWrapper.cs

using System.Net;
using Moq;
using Nop.Services.Caching;
using StackExchange.Redis;

namespace Nop.Tests.Nop.Services.Tests.Caching;

internal class TestRedisConnectionWrapper : IRedisConnectionWrapper
{
    protected static int _npp = 1;

    protected readonly ISubscriber _subscriber = new TestSubscriber();
    protected readonly IDatabase _database;
    protected readonly IServer _server;

    protected string _instance;

    public TestRedisConnectionWrapper()
    {
        _instance = $"test_redis_connection_wrapper_{_npp}";
        var database = new Mock();
        database.Setup(d => d.Database).Returns(_npp);
        _database = database.Object;
        var server = new Mock();
        _server = server.Object;

        _npp += 1;
    }

    /// 
    /// Obtain an interactive connection to a database inside Redis
    /// 
    /// Redis cache database
    public Task GetDatabaseAsync()
    {
        return Task.FromResult(GetDatabase());
    }

    /// 
    /// Obtain an interactive connection to a database inside Redis
    /// 
    /// Redis cache database
    public IDatabase GetDatabase()
    {
        return _database;
    }

    /// 
    /// Obtain a configuration API for an individual server
    /// 
    /// The network endpoint
    /// Redis server
    public Task GetServerAsync(EndPoint endPoint)
    {
        return Task.FromResult(_server);
    }

    /// 
    /// Gets all endpoints defined on the server
    /// 
    /// Array of endpoints
    public Task GetEndPointsAsync()
    {
        return Task.FromResult(new[] { _server.EndPoint });
    }

    /// 
    /// Gets a subscriber for the server
    /// 
    /// Array of endpoints
    public Task GetSubscriberAsync()
    {
        return Task.FromResult(GetSubscriber());
    }

    /// 
    /// Gets a subscriber for the server
    /// 
    /// Array of endpoints
    public ISubscriber GetSubscriber()
    {
        return _subscriber;
    }

    /// 
    /// Delete all the keys of the database
    /// 
    public async Task FlushDatabaseAsync()
    {
        await _server.FlushDatabaseAsync(_database.Database);
    }

    /// 
    /// The Redis instance name
    /// 
    public string Instance => _instance;
}