Skip to content

Commit 8b1836c

Browse files
committed
added flagset filter tests
1 parent a6f33ae commit 8b1836c

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed

tests/storage/test_flag_sets.py

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
import pytest
2+
3+
from splitio.storage import FlagSetsFilter
4+
from splitio.storage.inmemmory import FlagSets, FlagSetsAsync
5+
6+
class FlagSetsFilterTests(object):
7+
"""Flag sets filter storage tests."""
8+
def test_without_initial_set(self):
9+
flag_set = FlagSets()
10+
assert flag_set.sets_feature_flag_map == {}
11+
12+
flag_set.add_flag_set('set1')
13+
assert flag_set.get_flag_set('set1') == set({})
14+
assert flag_set.flag_set_exist('set1') == True
15+
assert flag_set.flag_set_exist('set2') == False
16+
17+
flag_set.add_feature_flag_to_flag_set('set1', 'split1')
18+
assert flag_set.get_flag_set('set1') == {'split1'}
19+
flag_set.add_feature_flag_to_flag_set('set1', 'split2')
20+
assert flag_set.get_flag_set('set1') == {'split1', 'split2'}
21+
flag_set.remove_feature_flag_to_flag_set('set1', 'split1')
22+
assert flag_set.get_flag_set('set1') == {'split2'}
23+
flag_set.remove_flag_set('set2')
24+
assert flag_set.sets_feature_flag_map == {'set1': set({'split2'})}
25+
flag_set.remove_flag_set('set1')
26+
assert flag_set.sets_feature_flag_map == {}
27+
assert flag_set.flag_set_exist('set1') == False
28+
29+
def test_with_initial_set(self):
30+
flag_set = FlagSets(['set1', 'set2'])
31+
assert flag_set.sets_feature_flag_map == {'set1': set(), 'set2': set()}
32+
33+
flag_set.add_flag_set('set1')
34+
assert flag_set.get_flag_set('set1') == set({})
35+
assert flag_set.flag_set_exist('set1') == True
36+
assert flag_set.flag_set_exist('set2') == True
37+
38+
flag_set.add_feature_flag_to_flag_set('set1', 'split1')
39+
assert flag_set.get_flag_set('set1') == {'split1'}
40+
flag_set.add_feature_flag_to_flag_set('set1', 'split2')
41+
assert flag_set.get_flag_set('set1') == {'split1', 'split2'}
42+
flag_set.remove_feature_flag_to_flag_set('set1', 'split1')
43+
assert flag_set.get_flag_set('set1') == {'split2'}
44+
flag_set.remove_flag_set('set2')
45+
assert flag_set.sets_feature_flag_map == {'set1': set({'split2'})}
46+
flag_set.remove_flag_set('set1')
47+
assert flag_set.sets_feature_flag_map == {}
48+
assert flag_set.flag_set_exist('set1') == False
49+
50+
@pytest.mark.asyncio
51+
async def test_without_initial_set_async(self):
52+
flag_set = FlagSetsAsync()
53+
assert flag_set.sets_feature_flag_map == {}
54+
55+
await flag_set.add_flag_set('set1')
56+
assert await flag_set.get_flag_set('set1') == set({})
57+
assert await flag_set.flag_set_exist('set1') == True
58+
assert await flag_set.flag_set_exist('set2') == False
59+
60+
await flag_set.add_feature_flag_to_flag_set('set1', 'split1')
61+
assert await flag_set.get_flag_set('set1') == {'split1'}
62+
await flag_set.add_feature_flag_to_flag_set('set1', 'split2')
63+
assert await flag_set.get_flag_set('set1') == {'split1', 'split2'}
64+
await flag_set.remove_feature_flag_to_flag_set('set1', 'split1')
65+
assert await flag_set.get_flag_set('set1') == {'split2'}
66+
await flag_set.remove_flag_set('set2')
67+
assert flag_set.sets_feature_flag_map == {'set1': set({'split2'})}
68+
await flag_set.remove_flag_set('set1')
69+
assert flag_set.sets_feature_flag_map == {}
70+
assert await flag_set.flag_set_exist('set1') == False
71+
72+
@pytest.mark.asyncio
73+
async def test_with_initial_set_async(self):
74+
flag_set = FlagSetsAsync(['set1', 'set2'])
75+
assert flag_set.sets_feature_flag_map == {'set1': set(), 'set2': set()}
76+
77+
await flag_set.add_flag_set('set1')
78+
assert await flag_set.get_flag_set('set1') == set({})
79+
assert await flag_set.flag_set_exist('set1') == True
80+
assert await flag_set.flag_set_exist('set2') == True
81+
82+
await flag_set.add_feature_flag_to_flag_set('set1', 'split1')
83+
assert await flag_set.get_flag_set('set1') == {'split1'}
84+
await flag_set.add_feature_flag_to_flag_set('set1', 'split2')
85+
assert await flag_set.get_flag_set('set1') == {'split1', 'split2'}
86+
await flag_set.remove_feature_flag_to_flag_set('set1', 'split1')
87+
assert await flag_set.get_flag_set('set1') == {'split2'}
88+
await flag_set.remove_flag_set('set2')
89+
assert flag_set.sets_feature_flag_map == {'set1': set({'split2'})}
90+
await flag_set.remove_flag_set('set1')
91+
assert flag_set.sets_feature_flag_map == {}
92+
assert await flag_set.flag_set_exist('set1') == False
93+
94+
def test_flag_set_filter(self):
95+
flag_set_filter = FlagSetsFilter()
96+
assert flag_set_filter.flag_sets == set()
97+
assert not flag_set_filter.should_filter
98+
99+
flag_set_filter = FlagSetsFilter(['set1', 'set2'])
100+
assert flag_set_filter.flag_sets == set({'set1', 'set2'})
101+
assert flag_set_filter.should_filter
102+
assert flag_set_filter.intersect(set({'set1', 'set2'}))
103+
assert flag_set_filter.intersect(set({'set1', 'set2', 'set5'}))
104+
assert not flag_set_filter.intersect(set({'set4'}))
105+
assert not flag_set_filter.set_exist('set4')
106+
assert flag_set_filter.set_exist('set1')
107+
108+
flag_set_filter = FlagSetsFilter(['set5', 'set2', 'set6', 'set1'])
109+
assert flag_set_filter.sorted_flag_sets == ['set1', 'set2', 'set5', 'set6']

0 commit comments

Comments
 (0)