forked from optimizely/python-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_event_payload.py
More file actions
126 lines (114 loc) · 5.36 KB
/
test_event_payload.py
File metadata and controls
126 lines (114 loc) · 5.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# Copyright 2019, Optimizely
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from optimizely import version
from optimizely.event import payload
from . import base
class EventPayloadTest(base.BaseTest):
def test_impression_event_equals_serialized_payload(self):
expected_params = {
'account_id': '12001',
'project_id': '111001',
'visitors': [
{
'visitor_id': 'test_user',
'attributes': [
{'type': 'custom', 'value': 'test_value', 'entity_id': '111094', 'key': 'test_attribute'}
],
'snapshots': [
{
'decisions': [
{'variation_id': '111129', 'experiment_id': '111127', 'campaign_id': '111182',
'metadata': {'flag_key': 'flag_key',
'rule_key': 'rule_key',
'rule_type': 'experiment',
'variation_key': 'variation',
'enabled': False},
}
],
'events': [
{
'timestamp': 42123,
'entity_id': '111182',
'uuid': 'a68cf1ad-0393-4e18-af87-efe8f01a7c9c',
'key': 'campaign_activated',
}
],
}
],
}
],
'client_name': 'python-sdk',
'client_version': version.__version__,
'enrich_decisions': True,
'anonymize_ip': False,
'revision': '42',
}
batch = payload.EventBatch('12001', '111001', '42', 'python-sdk', version.__version__, False, True)
visitor_attr = payload.VisitorAttribute('111094', 'test_attribute', 'custom', 'test_value')
event = payload.SnapshotEvent('111182', 'a68cf1ad-0393-4e18-af87-efe8f01a7c9c', 'campaign_activated', 42123,)
metadata = payload.Metadata('flag_key', 'rule_key', 'experiment', 'variation', False)
event_decision = payload.Decision('111182', '111127', '111129', metadata)
snapshots = payload.Snapshot([event], [event_decision])
user = payload.Visitor([snapshots], [visitor_attr], 'test_user')
batch.visitors = [user]
self.assertEqual(batch, expected_params)
def test_conversion_event_equals_serialized_payload(self):
expected_params = {
'account_id': '12001',
'project_id': '111001',
'visitors': [
{
'visitor_id': 'test_user',
'attributes': [
{'type': 'custom', 'value': 'test_value', 'entity_id': '111094', 'key': 'test_attribute'},
{'type': 'custom', 'value': 'test_value2', 'entity_id': '111095', 'key': 'test_attribute2'},
],
'snapshots': [
{
'events': [
{
'timestamp': 42123,
'entity_id': '111182',
'uuid': 'a68cf1ad-0393-4e18-af87-efe8f01a7c9c',
'key': 'campaign_activated',
'revenue': 4200,
'tags': {'non-revenue': 'abc', 'revenue': 4200, 'value': 1.234},
'value': 1.234,
}
]
}
],
}
],
'client_name': 'python-sdk',
'client_version': version.__version__,
'enrich_decisions': True,
'anonymize_ip': False,
'revision': '42',
}
batch = payload.EventBatch('12001', '111001', '42', 'python-sdk', version.__version__, False, True)
visitor_attr_1 = payload.VisitorAttribute('111094', 'test_attribute', 'custom', 'test_value')
visitor_attr_2 = payload.VisitorAttribute('111095', 'test_attribute2', 'custom', 'test_value2')
event = payload.SnapshotEvent(
'111182',
'a68cf1ad-0393-4e18-af87-efe8f01a7c9c',
'campaign_activated',
42123,
4200,
1.234,
{'revenue': 4200, 'value': 1.234, 'non-revenue': 'abc'},
)
snapshots = payload.Snapshot([event])
user = payload.Visitor([snapshots], [visitor_attr_1, visitor_attr_2], 'test_user')
batch.visitors = [user]
self.assertEqual(batch, expected_params)