Skip to content

Commit 80a011e

Browse files
committed
added test coverage for InMemoryFeatureStore
1 parent 7d64bc6 commit 80a011e

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
from ldclient.client import InMemoryFeatureStore
2+
import pytest
3+
4+
def make_feature(key, ver):
5+
return {
6+
u'key': key,
7+
u'version': ver,
8+
u'salt': u'abc',
9+
u'on': True,
10+
u'variations': [
11+
{
12+
u'value': True,
13+
u'weight': 100,
14+
u'targets': []
15+
},
16+
{
17+
u'value': False,
18+
u'weight': 0,
19+
u'targets': []
20+
}
21+
]
22+
}
23+
24+
def base_initialized_store():
25+
store = InMemoryFeatureStore()
26+
store.init({
27+
'foo': make_feature('foo', 10),
28+
'bar': make_feature('bar', 10),
29+
})
30+
return store
31+
32+
def test_not_initially_initialized():
33+
store = InMemoryFeatureStore()
34+
assert store.initialized == False
35+
36+
def test_initialized():
37+
store = base_initialized_store()
38+
assert store.initialized == True
39+
40+
def test_get_existing_feature():
41+
store = base_initialized_store()
42+
expected = make_feature('foo', 10)
43+
assert store.get('foo') == expected
44+
45+
def test_get_nonexisting_feature():
46+
store = base_initialized_store()
47+
assert store.get('biz') is None
48+
49+
def test_upsert_with_newer_version():
50+
store = base_initialized_store()
51+
new_ver = make_feature('foo', 11)
52+
store.upsert('foo', new_ver)
53+
assert store.get('foo') == new_ver
54+
55+
def test_upsert_with_older_version():
56+
store = base_initialized_store()
57+
new_ver = make_feature('foo', 9)
58+
expected = make_feature('foo', 10)
59+
store.upsert('foo', new_ver)
60+
assert store.get('foo') == expected
61+
62+
def test_upsert_with_new_feature():
63+
store = base_initialized_store()
64+
new_ver = make_feature('biz', 1)
65+
store.upsert('biz', new_ver)
66+
assert store.get('biz') == new_ver
67+
68+
def test_delete_with_newer_version():
69+
store = base_initialized_store()
70+
store.delete('foo', 11)
71+
assert store.get('foo') is None
72+
73+
def test_delete_unknown_feature():
74+
store = base_initialized_store()
75+
store.delete('biz', 11)
76+
assert store.get('biz') is None
77+
78+
def test_delete_with_older_version():
79+
store = base_initialized_store()
80+
store.delete('foo', 9)
81+
expected = make_feature('foo', 10)
82+
assert store.get('foo') == expected

0 commit comments

Comments
 (0)