-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcache_test.go
47 lines (40 loc) · 1.12 KB
/
cache_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package multi_tier_caching
import (
"context"
"testing"
"github.com/arturmon/multi-tier-caching/mocks"
databaseMock "github.com/arturmon/multi-tier-caching/storage/mocks"
"github.com/stretchr/testify/assert"
)
func TestMultiTierCache_Get_CacheHit(t *testing.T) {
ctx := context.Background()
mockCache := new(mocks.MockCacheLayer)
mockDB := new(databaseMock.MockDatabaseStorage)
// Настраиваем моки
mockCache.On("Get", ctx, "key1").Return("value1", nil)
mockCache.On("CheckHealth", ctx).Return(nil)
mockDB.On("Get", ctx, "key1").Return("value1", nil)
mockDB.On("CheckHealth", ctx).Return(nil)
cacheConfig := MultiTierCacheConfig{
Layers: []LayerInfo{
{
Layer: mockCache, // Implements CacheLayer
Name: "memory",
},
{
Layer: mockCache, // Implements CacheLayer
Name: "redis",
},
},
DB: mockDB,
Thresholds: []int{10, 5},
BloomSize: 100000,
BloomHashes: 5,
Debug: false,
}
cache := NewMultiTierCache(ctx, cacheConfig)
value, err := cache.Get(ctx, "key1")
assert.NoError(t, err)
assert.Equal(t, "value1", value)
mockCache.AssertExpectations(t)
}