@@ -175,6 +175,106 @@ def test_from_json_with_filter_friendly_name(self):
175
175
# check that marshaling back stays as "friendly_name"
176
176
self .assertEqual (config .to_json (), expected_config_json )
177
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
<
8000
code class="diff-text syntax-highlighted-line addition">+ "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
+
178
278
def is_json (self , myjson ):
179
279
try :
180
280
json .loads (myjson )
0 commit comments