public void IncrementReturnsOne_ExpireKey() { // Arrange var key = new SimpleThrottleKey("test", "key"); Limiter limiter = new Limiter().Limit(1).Over(10); var db = Substitute.For <IDatabase>(); var repository = new RedisThrottleRepository(db); string id = repository.CreateThrottleKey(key, limiter); db .StringIncrement(id) .Returns(1); // Act repository.AddOrIncrementWithExpiration(key, limiter); // Assert db .Received(1) .StringIncrement(id); db .Received(1) .KeyExpire(id, limiter.Period); }
public void RemoveThrottle() { // Arrange var key = new SimpleThrottleKey("test", "key"); Limiter limiter = new Limiter().Limit(1).Over(1); var db = Substitute.For <IDatabase>(); var repository = new RedisThrottleRepository(db); string id = repository.CreateThrottleKey(key, limiter); // Act repository.RemoveThrottle(key, limiter); // Assert db .Received(1) .KeyDelete(id); }
public void KeyExists_ReturnsParsedValue() { // Arrange var key = new SimpleThrottleKey("test", "key"); Limiter limiter = new Limiter().Limit(1).Over(1); var db = Substitute.For <IDatabase>(); var repository = new RedisThrottleRepository(db); string id = repository.CreateThrottleKey(key, limiter); db .StringGet(id) .Returns((RedisValue)"10"); // Act long?result = repository.GetThrottleCount(key, limiter); // Assert Assert.Equal(10, result); }
public void KeyDoesNotExist_ReturnsNull() { // Arrange var key = new SimpleThrottleKey("test", "key"); Limiter limiter = new Limiter().Limit(1).Over(1); var db = Substitute.For <IDatabase>(); var repository = new RedisThrottleRepository(db); string id = repository.CreateThrottleKey(key, limiter); db .StringGet(id) .Returns((long?)null); // Act long?result = repository.GetThrottleCount(key, limiter); // Assert Assert.Null(result); }