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