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