8000 Add missing Enqueue->Task Twiml generation · patrick91/twilio-python@92a549b · GitHub
[go: up one dir, main page]

Skip to content

Commit 92a549b

Browse files
committed
Add missing Enqueue->Task Twiml generation
1 parent 689562e commit 92a549b

File tree

2 files changed

+64
-18
lines changed

2 files changed

+64
-18
lines changed

tests/test_twiml.py

Lines changed: 49 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -367,16 +367,16 @@ def setUp(self):
367367
# parse twiml XML string with Element Tree and inspect
368368
# structure
369369
tree = ET.fromstring(xml)
370-
self.conf = tree.find(".//Queue")
370+
self.queue = tree.find(".//Queue")
371371

372-
def test_conf_text(self):
373-
self.assertEqual(self.conf.text.strip(), "TestQueueAttribute")
372+
def test_queue_text(self):
373+
self.assertEqual(self.queue.text.strip(), "TestQueueAttribute")
374374

375-
def test_conf_waiturl(self):
376-
self.assertEqual(self.conf.get('url'), "")
375+
def test_queue_waiturl(self):
376+
self.assertEqual(self.queue.get('url'), "")
377377

378-
def test_conf_method(self):
379-
self.assertEqual(self.conf.get('method'), "GET")
378+
def test_queue_method(self):
379+
self.assertEqual(self.queue.get('method'), "GET")
380380

381381

382382
class TestEnqueue(TwilioTest):
@@ -390,22 +390,53 @@ def setUp(self):
390390
# parse twiml XML string with Element Tree and inspect
391391
# structure
392392
tree = ET.fromstring(xml)
393-
self.conf = tree.find("./Enqueue")
393+
self.enqueue = tree.find("./Enqueue")
394394

395-
def test_conf_text(self):
396-
self.assertEqual(self.conf.text.strip(), "TestEnqueueAttribute")
395+
def test_enqueue_text(self):
396+
self.assertEqual(self.enqueue.text.strip(), "TestEnqueueAttribute")
397397

398-
def test_conf_waiturl(self):
399-
self.assertEqual(self.conf.get('waitUrl'), "wait")
398+
def test_enqueue_waiturl(self):
399+
self.assertEqual(self.enqueue.get('waitUrl'), "wait")
400+
401+
def test_enqueue_method(self):
402+
self.assertEqual(self.enqueue.get('method'), "GET")
403+
404+
def test_enqueue_action(self):
405+
self.assertEqual(self.enqueue.get('action'), "act")
406+
407+
def test_enqueue_waitmethod(self):
408+
self.assertEqual(self.enqueue.get('waitUrlMethod'), "POST")
409+
410+
411+
class TestEnqueueTask(TwilioTest):
412+
413+
def setUp(self):
414+
r = Response()
415+
with r.enqueue(None, workflowSid="Workflow1") as e:
416+
e.task('{"selected_language":"en"}', priority="10", timeout="50")
417+
418+
xml = r.toxml()
419+
420+
# parse twiml XML string with Element Tree and inspect
421+
# structure
422+
tree = ET.fromstring(xml)
423+
self.enqueue = tree.find("./Enqueue")
424+
self.task = self.enqueue.find("./Task")
425+
426+
def test_found_task(self):
427+
self.assertIsNotNone(self.task)
428+
429+
def test_enqueue_workflow_sid(self):
430+
self.assertEqual(self.enqueue.get('workflowSid'), "Workflow1")
400431

401-
def test_conf_method(self):
402-
self.assertEqual(self.conf.get('method'), "GET")
432+
def test_enqueue_task_attributes(self):
433+
self.assertEqual(self.task.text.strip(), '{"selected_language":"en"}')
403434

404-
def test_conf_action(self):
405-
self.assertEqual(self.conf.get('action'), "act")
435+
def test_enqueue_task_priority(self):
436+
self.assertEqual(self.task.get('priority'), "10")
406437

407-
def test_conf_waitmethod(self):
408-
self.assertEqual(self.conf.get('waitUrlMethod'), "POST")
438+
def test_enqueue_task_timeout(self):
439+
self.assertEqual(self.task.get('timeout'), "50")
409440

410441

411442
class TestDial(TwilioTest):

twilio/twiml.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,10 +524,25 @@ class Enqueue(Verb):
524524
GET = 'GET'
525525
POST = 'POST'
526526

527+
nestables = ['Task']
528+
527529
def __init__(self, name, **kwargs):
528530
super(Enqueue, self).__init__(**kwargs)
529531
self.body = name
530532

533+
def task(self, attributes, **kwargs):
534+
return self.append(Task(attributes, **kwargs))
535+
536+
537+
class Task(Verb):
538+
"""Specify the task attributes when enqueuing a call
539+
540+
:param attributes: Attributes for a task
541+
"""
542+
def __init__(self, attributes, **kwargs):
543+
super(Task, self).__init__(**kwargs)
544+
self.body = attributes
545+
531546

532547
class Leave(Verb):
533548
"""Signals the call to leave its queue

0 commit comments

Comments
 (0)
0