package com.njcn.middle.cache.autoconfig; import org.junit.jupiter.api.Test; import org.springframework.boot.context.properties.bind.Binder; import org.springframework.boot.context.properties.source.ConfigurationPropertySources; import org.springframework.mock.env.MockEnvironment; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; class RedisCachePropertiesTest { @Test void defaults() { RedisCacheProperties p = new RedisCacheProperties(); assertEquals("cache:", p.getKeyPrefix()); assertFalse(p.isEnvIsolation()); assertEquals("", p.getEnv()); assertEquals(3600, p.getDefaultTtlSeconds()); assertEquals(60, p.getNullTtlSeconds()); assertEquals(0.1, p.getJitterRatio()); assertFalse(p.isSlidingExpireEnabled()); assertTrue(p.getBreakdown().isEnabled()); assertEquals(10000, p.getBreakdown().getLockTtlMs()); assertEquals(3000, p.getBreakdown().getWaitTimeoutMs()); assertEquals(50, p.getBreakdown().getWaitIntervalMs()); } @Test void relaxedBinding() { MockEnvironment env = new MockEnvironment() .withProperty("redis-cache.default-ttl-seconds", "1800") .withProperty("redis-cache.sliding-expire-enabled", "true") .withProperty("redis-cache.breakdown.lock-ttl-ms", "5000") .withProperty("redis-cache.breakdown.enabled", "false"); RedisCacheProperties p = Binder.get(env) .bind("redis-cache", RedisCacheProperties.class).get(); assertEquals(1800, p.getDefaultTtlSeconds()); assertTrue(p.isSlidingExpireEnabled()); assertEquals(5000, p.getBreakdown().getLockTtlMs()); assertFalse(p.getBreakdown().isEnabled()); } }