@@ -78,6 +78,203 @@ def test_from_json2(self):
78
78
self .assertEqual (2 , len (config .task_routing .filters ))
79
79
self .assertEqual (4 , len (config .task_routing .default_filter ))
80
80
81
+ def test_from_json_with_filter_friendly_name (self ):
82
+ data = {
83
+ 'task_routing' :
84
+ {
85
+ 'filters' : [
86
+ {
87
+ 'expression' : 'type == "sales"' ,
88
+ 'filter_friendly_name' : 'Sales' ,
89
+ 'targets' : [
90
+ {
91
+
92
+ 'queue' : 'WQec62de0e1148b8477f2e24579779c8b1' ,
93
+ 'expression' : 'task.language IN worker.languages'
94
+ }
95
+ ]
96
+ },
97
+ {
98
+ 'expression' : 'type == "marketing"' ,
99
+ 'filter_friendly_name' : 'Marketing' ,
100
+ 'targets' : [
101
+ {
102
+ 'queue' : 'WQ2acd4c1a41ffadce5d1bac9e1ce2fa9f' ,
103
+ 'expression' : 'task.language IN worker.languages'
104
+ }
105
+ ]
106
+ },
107
+ {
108
+ 'expression' : 'type == "support"' ,
109
+ 'filter_friendly_name' : 'Support' ,
110
+ 'targets' : [
111
+ {
112
+ 'queue' : 'WQe5eb317eb23500ade45087ea6522896c' ,
113
+ 'expression' : 'task.language IN worker.languages'
114
+ }
115
+ ]
116
+ }
117
+ ],
118
+ 'default_filter' :
119
+ {
120
+ 'queue' : 'WQ05f810d2d130344fd56e3c91ece2e594'
121
+ }
122
+ }
123
+ }
124
+ # marshal object
125
+ config = WorkflowConfig .json2obj (json .dumps (data ))
126
+ self .assertEqual (3 , len (config .task_routing .filters ))
127
+ self .assertEqual (1 , len (config .task_routing .default_filter ))
128
+
129
+ # check that the configuration was marshaled to "friendly_name" and not "filter_friendly_name"
130
+ expected_config_data = {
131
+ "task_routing" :
132
+ {
133
+ "default_filter" :
134
+ {
135
+ "queue" : "WQ05f810d2d130344fd56e3c91ece2e594"
136
+ },
137
+ "filters" : [
138
+ {
139
+ "expression" : "type == \" sales\" " ,
140
+ "friendly_name" : "Sales" ,
141
+ "targets" : [
142
+ {
143
+ "expression" : "task.language IN worker.languages" ,
144
+ "queue" : "WQec62de0e1148b8477f2e24579779c8b1"
145
+ }
146
+ ]
147
+ },
148
+ {
149
+ "expression" : "type == \" marketing\" " ,
150
+ "friendly_name" : "Marketing" ,
151
+ "targets" : [
152
+ {
153
+ "expression" : "task.language IN worker.languages" ,
154
+ "queue" : "WQ2acd4c1a41ffadce5d1bac9e1ce2fa9f"
155
+ }
156
+ ]
157
+ },
158
+ {
159
+ "expression" : "type == \" support\" " ,
160
+ "friendly_name" : "Support" ,
161
+ "targets" : [
162
+ {
163
+ "expression" : "task.language IN worker.languages" ,
164
+ "queue" : "WQe5eb317eb23500ade45087ea6522896c"
165
+ }
166
+ ]
167
+ }
168
+ ]
169
+ }
170
+ }
171
+
172
+ expected_config_json = json .dumps (expected_config_data ,
173
+ sort_keys = True ,
174
+ indent = 4 )
175
+ # check that marshaling back stays as "friendly_name"
176
+ self .assertEqual (config .to_json (), expected_config_json )
177
+
178
+ def test_from_json_with_both_filter_and_friendly_name (self ):
179
+ data = {
180
+ 'task_routing' :
181
+ {
182
+ 'filters' : [
183
+ {
184
+ 'expression' : 'type == "sales"' ,
185
+ 'filter_friendly_name' : "Sales" ,
186
+ 'friendly_name' : 'Sales2' ,
187
+ 'targets' : [
188
+ {
189
+
190
+ 'queue' : 'WQec62de0e1148b8477f2e24579779c8b1' ,
191
+ 'expression' : 'task.language IN worker.languages'
192
+ }
193
+ ]
194
+ },
195
+ {
196
+ 'expression' : 'type == "marketing"' ,
197
+ 'filter_friendly_name' : 'Marketing' ,
198
+ 'friendly_name' : 'Marketing2' ,
199
+ 'targets' : [
200
+ {
201
+ 'queue' : 'WQ2acd4c1a41ffadce5d1bac9e1ce2fa9f' ,
202
+ 'expression' : 'task.language IN worker.languages'
203
+ }
204
+ ]
205
+ },
206
+ {
207
+ 'expression' : 'type == "support"' ,
208
+ 'filter_friendly_name' : 'Support' ,
209
+ 'friendly_name' : 'Support2' ,
210
+ 'targets' : [
211
+ {
212
+ 'queue' : 'WQe5eb317eb23500ade45087ea6522896c' ,
213
+ 'expression' : 'task.language IN worker.languages'
214
+ }
215
+ ]
216
+ }
217
+ ],
218
+ 'default_filter' :
219
+ {
220
+ 'queue' : 'WQ05f810d2d130344fd56e3c91ece2e594'
221
+ }
222
+ }
223
+ }
224
+ # marshal object
225
+ config = WorkflowConfig .json2obj (json .dumps (data ))
226
+ self .assertEqual (3 , len (config .task_routing .filters ))
227
+ self .assertEqual (1 , len (config .task_routing .default_filter ))
228
+
229
+ # check that the configuration was marshaled to "friendly_name" and not "filter_friendly_name"
230
+ expected_config_data = {
231
+ "task_routing" :
232
+ {
233
+ "default_filter" :
234
+ {
235
+ "queue" : "WQ05f810d2d130344fd56e3c91ece2e594"
236
+ },
237
+ "filters" : [
238
+ {
239
+ "expression" : "type == \" sales\" " ,
240
+ "friendly_name" : "Sales" ,
241
+ "targets" : [
242
+ {
243
+ "expression" : "task.language IN worker.languages" ,
244
+ "queue" : "WQec62de0e1148b8477f2e24579779c8b1"
245
+ }
246
+ ]
247
+ },
248
+ {
249
+ "expression" : "type == \" marketing\" " ,
250
+ "friendly_name" : "Marketing" ,
251
+ "targets" : [
252
+ {
253
+ "expression" : "task.language IN worker.languages" ,
254
+ "queue" : "WQ2acd4c1a41ffadce5d1bac9e1ce2fa9f"
255
+ }
256
+ ]
257
+ },
258
+ {
259
+ "expression" : "type == \" support\" " ,
260
+ "friendly_name" : "Support" ,
261
+ "targets" : [
262
+ {
263
+ "expression" : "task.language IN worker.languages" ,
264
+ "queue" : "WQe5eb317eb23500ade45087ea6522896c"
265
+ }
266
+ ]
267
+ }
268
+ ]
269
+ }
270
+ }
271
+
272
+ expected_config_json = json .dumps (expected_config_data ,
273
+ sort_keys = True ,
274
+ indent = 4 )
275
+ # check that marshaling back stays as "friendly_name"
276
+ self .assertEqual (config .to_json (), expected_config_json )
277
+
81
278
def is_json (self , myjson ):
82
279
try :
83
280
json .loads (myjson )
0 commit comments