|
2 | 2 | # pylint: disable=no-self-use |
3 | 3 | import random |
4 | 4 | import pytest |
| 5 | +import copy |
5 | 6 |
|
6 | 7 | from splitio.models.splits import Split |
7 | 8 | from splitio.models.segments import Segment |
|
13 | 14 | InMemoryImpressionStorage, InMemoryEventStorage, InMemoryTelemetryStorage, InMemoryImpressionStorageAsync, InMemoryEventStorageAsync, \ |
14 | 15 | InMemoryTelemetryStorageAsync, FlagSets, InMemoryRuleBasedSegmentStorage, InMemoryRuleBasedSegmentStorageAsync |
15 | 16 | from splitio.models.rule_based_segments import RuleBasedSegment |
| 17 | +from splitio.models import rule_based_segments |
16 | 18 |
|
17 | 19 | class FlagSetsFilterTests(object): |
18 | 20 | """Flag sets filter storage tests.""" |
@@ -1840,6 +1842,31 @@ def test_store_get_changenumber(self): |
1840 | 1842 | assert storage.get_change_number() == -1 |
1841 | 1843 | storage.update([], [], 5) |
1842 | 1844 | assert storage.get_change_number() == 5 |
| 1845 | + |
| 1846 | + def test_contains(self): |
| 1847 | + raw = { |
| 1848 | + "changeNumber": 123, |
| 1849 | + "name": "segment1", |
| 1850 | + "status": "ACTIVE", |
| 1851 | + "trafficTypeName": "user", |
| 1852 | + "excluded":{ |
| 1853 | + "keys":[], |
| 1854 | + "segments":[] |
| 1855 | + }, |
| 1856 | + "conditions": [] |
| 1857 | + } |
| 1858 | + segment1 = rule_based_segments.from_raw(raw) |
| 1859 | + raw2 = copy.deepcopy(raw) |
| 1860 | + raw2["name"] = "segment2" |
| 1861 | + segment2 = rule_based_segments.from_raw(raw2) |
| 1862 | + raw3 = copy.deepcopy(raw) |
| 1863 | + raw3["name"] = "segment3" |
| 1864 | + segment3 = rule_based_segments.from_raw(raw3) |
| 1865 | + storage = InMemoryRuleBasedSegmentStorage() |
| 1866 | + storage.update([segment1, segment2, segment3], [], -1) |
| 1867 | + assert storage.contains(["segment1"]) |
| 1868 | + assert storage.contains(["segment1", "segment3"]) |
| 1869 | + assert not storage.contains(["segment5"]) |
1843 | 1870 |
|
1844 | 1871 | class InMemoryRuleBasedSegmentStorageAsyncTests(object): |
1845 | 1872 | """In memory rule based segment storage test cases.""" |
@@ -1874,3 +1901,29 @@ async def test_store_get_changenumber(self): |
1874 | 1901 | assert await storage.get_change_number() == -1 |
1875 | 1902 | await storage.update([], [], 5) |
1876 | 1903 | assert await storage.get_change_number() == 5 |
| 1904 | + |
| 1905 | + @pytest.mark.asyncio |
| 1906 | + async def test_contains(self): |
| 1907 | + raw = { |
| 1908 | + "changeNumber": 123, |
| 1909 | + "name": "segment1", |
| 1910 | + "status": "ACTIVE", |
| 1911 | + "trafficTypeName": "user", |
| 1912 | + "excluded":{ |
| 1913 | + "keys":[], |
| 1914 | + "segments":[] |
| 1915 | + }, |
| 1916 | + "conditions": [] |
| 1917 | + } |
| 1918 | + segment1 = rule_based_segments.from_raw(raw) |
| 1919 | + raw2 = copy.deepcopy(raw) |
| 1920 | + raw2["name"] = "segment2" |
| 1921 | + segment2 = rule_based_segments.from_raw(raw2) |
| 1922 | + raw3 = copy.deepcopy(raw) |
| 1923 | + raw3["name"] = "segment3" |
| 1924 | + segment3 = rule_based_segments.from_raw(raw3) |
| 1925 | + storage = InMemoryRuleBasedSegmentStorageAsync() |
| 1926 | + await storage.update([segment1, segment2, segment3], [], -1) |
| 1927 | + assert await storage.contains(["segment1"]) |
| 1928 | + assert await storage.contains(["segment1", "segment3"]) |
| 1929 | + assert not await storage.contains(["segment5"]) |
0 commit comments