Skip to content

Commit 661d248

Browse files
committed
updated metadata to recent spec
1 parent c65fd01 commit 661d248

File tree

2 files changed

+32
-50
lines changed

2 files changed

+32
-50
lines changed

splitio/events/events_metadata.py

Lines changed: 22 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,35 @@
11
"""Events Metadata."""
2-
from splitio.models.events import SdkEvent, SdkInternalEvent
2+
from enum import Enum
3+
4+
class SdkEventType(Enum):
5+
"""Public event types"""
6+
7+
FLAG_UPDATE = 'FLAG_UPDATE'
8+
SEGMENT_UPDATE = 'SEGMENT_UPDATE'
39

410
class EventsMetadata(object):
511
"""Events Metadata class."""
612

7-
def __init__(self, metadata):
13+
def __init__(self, type, names):
814
"""
915
Construct Events Metadata instance.
1016
"""
11-
self._metadata = self._sanitize(metadata)
17+
self._type = type
18+
self._names = self._sanitize(names)
1219

13-
def get_data(self):
14-
"""Return metadata dict"""
15-
return self._metadata
20+
def get_type(self):
21+
"""Return type"""
22+
return self._type
1623

17-
def get_keys(self):
18-
"""Return metadata dict keys"""
19-
return self._metadata.keys()
20-
21-
def get_values(self):
22-
"""Return metadata dict values"""
23-
return self._metadata.values()
24-
25-
def contain_key(self, key):
26-
"""Return True if key is contained in metadata"""
27-
return key in self._metadata.keys()
24+
def get_names(self):
25+
"""Return names"""
26+
return self._names
2827

29-
def _sanitize(self, data):
30-
"""Return sanitized metadata dict with values either int, bool, str or list """
31-
santized_data = {}
32-
for item_name, item_value in data.items():
33-
if self._value_is_valid(item_value):
34-
santized_data[item_name] = item_value
28+
def _sanitize(self, names):
29+
"""Return sanitized names list with values str"""
30+
santized_data = set()
31+
for name in names:
32+
if isinstance(name, str):
33+
santized_data.add(name)
3534

3635
return santized_data
37-
38-
def _value_is_valid(self, value):
39-
"""Return bool if values is int, bool, str or list[str] """
40-
if (value is not None) and (isinstance(value, int) or isinstance(value, bool) or isinstance(value, str)):
41-
return True
42-
43-
if isinstance(value, set):
44-
return any([isinstance(item, str) for item in value])
45-
46-
return False

tests/events/test_events_metadata.py

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,20 @@
22
import pytest
33

44
from splitio.events.events_metadata import EventsMetadata
5-
from splitio.models.events import SdkEvent, SdkInternalEvent
5+
from splitio.events.events_metadata import SdkEventType
66

77
class EventsMetadataTests(object):
88
"""Tests for EventsMetadata."""
99

1010
def test_build_instance(self):
11-
data = { "updatedFlags": { "feature1" }, "sdkTimeout": 10 , "boolValue": True, "strValue": "value" }
12-
metadata = EventsMetadata(data)
13-
14-
assert len(metadata.get_keys()) == 4
15-
assert metadata.get_data()["updatedFlags"].pop() == "feature1"
16-
assert len(metadata.get_data()["updatedFlags"]) == 0
17-
assert metadata.get_data()["sdkTimeout"] == 10
18-
assert metadata.get_data()["boolValue"] == True
19-
assert metadata.get_data()["strValue"] == "value"
20-
assert metadata.contain_key("updatedFlags")
21-
assert not metadata.contain_key("not_exist")
22-
assert len(metadata.get_values()) == 4
11+
metadata = EventsMetadata(SdkEventType.FLAG_UPDATE, { "feature1" })
12+
assert len(metadata.get_names()) == 1
13+
assert metadata.get_names().pop() == "feature1"
14+
assert len(metadata.get_names()) == 0
15+
assert metadata.get_type() == SdkEventType.FLAG_UPDATE
2316

2417
def test_sanitize_none_input(self):
25-
data = { "updatedFlags": { "feature1" }, "sdkTimeout": None, "strValue": [1, 2, 3] }
26-
metadata = EventsMetadata(data)
27-
assert len(metadata.get_keys()) == 1
28-
assert metadata.get_data()["updatedFlags"].pop() == "feature1"
18+
metadata = EventsMetadata(SdkEventType.FLAG_UPDATE, { "feature1", None, 123, False })
19+
assert len(metadata.get_names()) == 1
20+
assert metadata.get_names().pop() == "feature1"
21+
assert len(metadata.get_names()) == 0

0 commit comments

Comments
 (0)