public void SetLock() { // Arrange var key = new SimpleThrottleKey("test", "key"); Limiter limiter = new Limiter().Limit(1).Over(1).LockFor(1); var db = Substitute.For <IDatabase>(); var repository = new RedisThrottleRepository(db); string id = repository.CreateLockKey(key, limiter); var transaction = Substitute.For <ITransaction>(); db .CreateTransaction() .Returns(transaction); // Act repository.SetLock(key, limiter); // Assert transaction .Received(1) .StringIncrementAsync(id); transaction .Received(1) .KeyExpireAsync(id, limiter.LockDuration); transaction .Received(1) .Execute(); }
public void KeyExists_ReturnsTrue(bool keyExists, bool expected) { // Arrange var key = new SimpleThrottleKey("test", "key"); Limiter limiter = new Limiter().Limit(1).Over(1).LockFor(1); var db = Substitute.For <IDatabase>(); var repository = new RedisThrottleRepository(db); string id = repository.CreateLockKey(key, limiter); db .KeyExists(id) .Returns(keyExists); // Act bool result = repository.LockExists(key, limiter); // Assert Assert.Equal(expected, result); }