Skip to content

Commit f06f216

Browse files
committed
Add tests for FilteringCache.
1 parent 78b3f20 commit f06f216

File tree

1 file changed

+67
-4
lines changed

1 file changed

+67
-4
lines changed

src/test/kotlin/io/github/nstdio/http/ext/FilteringCacheTest.kt

Lines changed: 67 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,84 @@
1515
*/
1616
package io.github.nstdio.http.ext
1717

18+
import org.junit.jupiter.api.BeforeEach
1819
import org.junit.jupiter.api.Test
19-
import org.mockito.Mockito.mock
20+
import org.junit.jupiter.api.extension.ExtendWith
21+
import org.mockito.Mock
2022
import org.mockito.Mockito.verify
23+
import org.mockito.Mockito.verifyNoInteractions
24+
import org.mockito.junit.jupiter.MockitoExtension
25+
import java.net.http.HttpRequest
26+
import java.time.Clock
2127

28+
@ExtendWith(MockitoExtension::class)
2229
internal class FilteringCacheTest {
30+
@Mock
31+
private lateinit var mockDelegate: Cache
32+
33+
@Mock
34+
private lateinit var mockRequest: HttpRequest
35+
36+
@Mock
37+
private lateinit var mockEntry: Cache.CacheEntry
38+
private lateinit var metadata: CacheEntryMetadata
39+
40+
@BeforeEach
41+
fun setup() {
42+
metadata = CacheEntryMetadata.of(0, 0, Helpers.responseInfo(mapOf()), mockRequest, Clock.systemUTC())
43+
}
44+
2345
@Test
2446
fun `Should call delegate`() {
2547
//given
26-
val mock = mock(Cache::class.java)
27-
val cache = FilteringCache(mock, { true }, { true })
48+
val cache = FilteringCache(mockDelegate, { true }, { true })
2849

2950
//when
51+
cache.put(mockRequest, mockEntry)
52+
cache.evict(mockRequest)
53+
cache.evictAll(mockRequest)
54+
cache.evictAll()
55+
cache.get(mockRequest)
56+
cache.stats()
57+
cache.writer<String>(metadata)
3058
cache.close()
3159

3260
//then
33-
verify(mock).close()
61+
verify(mockDelegate).put(mockRequest, mockEntry)
62+
verify(mockDelegate).evict(mockRequest)
63+
verify(mockDelegate).evictAll(mockRequest)
64+
verify(mockDelegate).evictAll()
65+
verify(mockDelegate).get(mockRequest)
66+
verify(mockDelegate).stats()
67+
verify(mockDelegate).writer<String>(metadata)
68+
verify(mockDelegate).close()
69+
}
70+
71+
@Test
72+
fun `Should not call delegate when request does not match`() {
73+
//given
74+
val cache = FilteringCache(mockDelegate, { false }, { true })
75+
76+
//when
77+
cache.put(mockRequest, mockEntry)
78+
cache.evict(mockRequest)
79+
cache.evictAll(mockRequest)
80+
cache.get(mockRequest)
81+
cache.writer<String>(metadata)
82+
83+
//then
84+
verifyNoInteractions(mockDelegate)
85+
}
86+
87+
@Test
88+
fun `Should not call delegate when response does not match`() {
89+
//given
90+
val cache = FilteringCache(mockDelegate, { true }, { false })
91+
92+
//when
93+
cache.writer<String>(metadata)
94+
95+
//then
96+
verifyNoInteractions(mockDelegate)
3497
}
3598
}

0 commit comments

Comments
 (0)