晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/rainic/www/oldTZh/wp-content/plugins/digits/Twilio/Tests/Unit/ |
Upload File : |
<?php
namespace Twilio\Tests\Unit;
use Twilio\TaskRouter\WorkflowConfiguration;
use Twilio\TaskRouter\WorkflowRule;
use Twilio\TaskRouter\WorkflowRuleTarget;
use Twilio\Tests\Unit\UnitTest;
class WorkflowTest extends UnitTest {
public function testDefaultRuleTarget() {
$everyoneQueue = "WQf6724bd5005b30eeb6ea990c3e59e536";
$defaultTarget = new WorkflowRuleTarget($everyoneQueue);
$this->assertEquals($defaultTarget->queue, "WQf6724bd5005b30eeb6ea990c3e59e536");
$this->assertEquals($defaultTarget->priority, null);
$this->assertEquals($defaultTarget->timeout, null);
$this->assertEquals($defaultTarget->expression, null);
}
public function testSimpleRuleTarget() {
$everyoneQueue = "WQf6724bd5005b30eeb6ea990c3e59e536";
$priority = 10;
$timeout = 60;
$filterWorkerExpression = null;
$ruleTarget = new WorkflowRuleTarget($everyoneQueue, $priority, $timeout, $filterWorkerExpression);
$this->assertEquals($ruleTarget->queue, "WQf6724bd5005b30eeb6ea990c3e59e536");
$this->assertEquals($ruleTarget->priority, $priority);
$this->assertEquals($ruleTarget->timeout, $timeout);
$this->assertEquals($ruleTarget->expression, $filterWorkerExpression);
}
public function testFilterWorkerRuleTarget() {
$everyoneQueue = "WQf6724bd5005b30eeb6ea990c3e59e536";
$priority = 10;
$timeout = 60;
$filterWorkerExpression = "task.language IN worker.languages";
$ruleTarget = new WorkflowRuleTarget($everyoneQueue, $priority, $timeout, $filterWorkerExpression);
$this->assertEquals($ruleTarget->queue, "WQf6724bd5005b30eeb6ea990c3e59e536");
$this->assertEquals($ruleTarget->priority, $priority);
$this->assertEquals($ruleTarget->timeout, $timeout);
$this->assertEquals($ruleTarget->expression, $filterWorkerExpression);
}
public function testSimpleRule() {
$salesQueue = "WQf6724bd5005b30eeb6ea990c3e59e536";
$salesTarget = new WorkflowRuleTarget($salesQueue);
$expression = "type=='sales'";
$friendlyName = "Sales";
$salesTargets[] = $salesTarget;
$salesRule = new WorkflowRule($expression, $salesTargets, $friendlyName);
$this->assertEquals($salesRule->expression, $expression);
$this->assertEquals($salesRule->friendly_name, $friendlyName);
$this->assertEquals($salesRule->targets[0], $salesTarget);
}
public function testFullWorkflow() {
$salesQueue = "WQf6724bd5005b30eeb6ea990c3e59e536";
$marketingQueue = "WQ8c62f84b61ccfa6a333757cd508f0aae";
$supportQueue = "WQ5940dc0da87eaf6e3321d62041d4403b";
$everyoneQueue = "WQ6d29383312b24bd898a8df32779fc043";
$defaultTarget = new WorkflowRuleTarget($everyoneQueue);
$salesTargets = array();
$salesTarget = new WorkflowRuleTarget($salesQueue);
$salesTargets[] = $salesTarget;
$salesRule = new WorkflowRule("type=='sales'", $salesTargets, 'Sales');
$marketingTargets = array();
$marketingTarget = new WorkflowRuleTarget($marketingQueue);
$marketingTargets[] = $marketingTarget;
$marketingRule = new WorkflowRule("type=='marketing'", $marketingTargets, 'Marketing');
$supportTargets = array();
$supportTarget = new WorkflowRuleTarget($supportQueue);
$supportTargets[] = $supportTarget;
$supportRule = new WorkflowRule("type=='support'", $supportTargets, 'Support');
$rules[] = $salesRule;
$rules[] = $marketingRule;
$rules[] = $supportRule;
$configuration = new WorkflowConfiguration($rules, $defaultTarget);
$json = $configuration->toJSON();
$expectedJsonString = "{
\"task_routing\":{
\"filters\":[
{
\"expression\":\"type=='sales'\",
\"targets\":[
{
\"queue\":\"WQf6724bd5005b30eeb6ea990c3e59e536\"
}
],
\"friendly_name\":\"Sales\"
},
{
\"expression\":\"type=='marketing'\",
\"targets\":[
{
\"queue\":\"WQ8c62f84b61ccfa6a333757cd508f0aae\"
}
],
\"friendly_name\":\"Marketing\"
},
{
\"expression\":\"type=='support'\",
\"targets\":[
{
\"queue\":\"WQ5940dc0da87eaf6e3321d62041d4403b\"
}
],
\"friendly_name\":\"Support\"
}
],
\"default_filter\":{
\"queue\":\"WQ6d29383312b24bd898a8df32779fc043\"
}
}
}";
// getting a trimmed, simple string
$jsonObject = json_decode($expectedJsonString);
$expectedJson = json_encode($jsonObject);
$this->assertEquals($json, $expectedJson);
}
public function testFullWorkflowWithTimeouts() {
$salesQueue = "WQf6724bd5005b30eeb6ea990c3e59e536";
$marketingQueue = "WQ8c62f84b61ccfa6a333757cd508f0aae";
$supportQueue = "WQ5940dc0da87eaf6e3321d62041d4403b";
$everyoneQueue = "WQ6d29383312b24bd898a8df32779fc043";
$defaultTarget = new WorkflowRuleTarget($everyoneQueue);
$salesTargets = array();
$salesTarget1 = new WorkflowRuleTarget($salesQueue, 5, 30);
$salesTarget2 = new WorkflowRuleTarget($salesQueue, 10);
$salesTargets[] = $salesTarget1;
$salesTargets[] = $salesTarget2;
$salesRule = new WorkflowRule("type=='sales'", $salesTargets, 'Sales');
$marketingTargets = array();
$marketingTarget1 = new WorkflowRuleTarget($marketingQueue, 1, 120);
$marketingTarget2 = new WorkflowRuleTarget($marketingQueue, 3);
$marketingTargets[] = $marketingTarget1;
$marketingTargets[] = $marketingTarget2;
$marketingRule = new WorkflowRule("type=='marketing'", $marketingTargets, 'Marketing');
$supportTargets = array();
$supportTarget1 = new WorkflowRuleTarget($supportQueue, 10, 30);
$supportTarget2 = new WorkflowRuleTarget($supportQueue, 15);
$supportTargets[] = $supportTarget1;
$supportTargets[] = $supportTarget2;
$supportRule = new WorkflowRule("type=='support'", $supportTargets, 'Support');
$rules[] = $salesRule;
$rules[] = $marketingRule;
$rules[] = $supportRule;
$configuration = new WorkflowConfiguration($rules, $defaultTarget);
$json = $configuration->toJSON();
$expectedJsonString = "{
\"task_routing\":{
\"filters\":[
{
\"expression\":\"type=='sales'\",
\"targets\":[
{
\"queue\":\"WQf6724bd5005b30eeb6ea990c3e59e536\",
\"priority\": 5,
\"timeout\": 30
},
{
\"queue\":\"WQf6724bd5005b30eeb6ea990c3e59e536\",
\"priority\": 10
}
],
\"friendly_name\":\"Sales\"
},
{
\"expression\":\"type=='marketing'\",
\"targets\":[
{
\"queue\":\"WQ8c62f84b61ccfa6a333757cd508f0aae\",
\"priority\": 1,
\"timeout\": 120
},
{
\"queue\":\"WQ8c62f84b61ccfa6a333757cd508f0aae\",
\"priority\": 3
}
],
\"friendly_name\":\"Marketing\"
},
{
\"expression\":\"type=='support'\",
\"targets\":[
{
\"queue\":\"WQ5940dc0da87eaf6e3321d62041d4403b\",
\"priority\": 10,
\"timeout\": 30
},
{
\"queue\":\"WQ5940dc0da87eaf6e3321d62041d4403b\",
\"priority\": 15
}
],
\"friendly_name\":\"Support\"
}
],
\"default_filter\":{
\"queue\":\"WQ6d29383312b24bd898a8df32779fc043\"
}
}
}";
// getting a trimmed, simple string
$jsonObject = json_decode($expectedJsonString);
$expectedJson = json_encode($jsonObject);
$this->assertEquals($json, $expectedJson);
}
public function testParseWorkflow() {
$json = "{
\"task_routing\":{
\"filters\":[
{
\"expression\":\"type=='sales'\",
\"targets\":[
{
\"queue\":\"WQf6724bd5005b30eeb6ea990c3e59e536\",
\"priority\": 5,
\"timeout\": 30
},
{
\"queue\":\"WQf6724bd5005b30eeb6ea990c3e59e536\",
\"priority\": 10
}
],
\"friendly_name\":\"Sales\"
},
{
\"expression\":\"type=='marketing'\",
\"targets\":[
{
\"queue\":\"WQ8c62f84b61ccfa6a333757cd508f0aae\",
\"priority\": 1,
\"timeout\": 120
},
{
\"queue\":\"WQ8c62f84b61ccfa6a333757cd508f0aae\",
\"priority\": 3
}
],
\"friendly_name\":\"Marketing\"
},
{
\"expression\":\"type=='support'\",
\"targets\":[
{
\"queue\":\"WQ5940dc0da87eaf6e3321d62041d4403b\",
\"priority\": 10,
\"timeout\": 30
},
{
\"queue\":\"WQ5940dc0da87eaf6e3321d62041d4403b\",
\"priority\": 15
}
],
\"friendly_name\":\"Support\"
}
],
\"default_filter\":{
\"queue\":\"WQ6d29383312b24bd898a8df32779fc043\"
}
}
}";
$config = WorkflowConfiguration::fromJson($json);
$taskRoutingConfig = WorkflowConfiguration::parse($json)->task_routing;
$this->assertEquals(3, count($taskRoutingConfig->filters));
$this->assertEquals(3, count($config->filters));
$this->assertEquals(1, count($config->default_filter));
// sales assertions
$this->assertEquals("type=='sales'", $config->filters[0]->expression);
$this->assertEquals("Sales", $config->filters[0]->friendly_name);
$this->assertEquals(2, count($config->filters[0]->targets));
$this->assertEquals("WQf6724bd5005b30eeb6ea990c3e59e536", $config->filters[0]->targets[0]->queue);
$this->assertEquals(5, $config->filters[0]->targets[0]->priority);
$this->assertEquals(30, $config->filters[0]->targets[0]->timeout);
$this->assertEquals("WQf6724bd5005b30eeb6ea990c3e59e536", $config->filters[0]->targets[1]->queue);
$this->assertEquals(10, $config->filters[0]->targets[1]->priority);
// marketing assertions
$this->assertEquals("type=='marketing'", $config->filters[1]->expression);
$this->assertEquals("Marketing", $config->filters[1]->friendly_name);
$this->assertEquals(2, count($config->filters[1]->targets));
$this->assertEquals("WQ8c62f84b61ccfa6a333757cd508f0aae", $config->filters[1]->targets[0]->queue);
$this->assertEquals(1, $config->filters[1]->targets[0]->priority);
$this->assertEquals(120, $config->filters[1]->targets[0]->timeout);
$this->assertEquals("WQ8c62f84b61ccfa6a333757cd508f0aae", $config->filters[1]->targets[1]->queue);
$this->assertEquals(3, $config->filters[1]->targets[1]->priority);
// support assertions
$this->assertEquals("type=='support'", $config->filters[2]->expression);
$this->assertEquals("Support", $config->filters[2]->friendly_name);
$this->assertEquals(2, count($config->filters[2]->targets));
$this->assertEquals("WQ5940dc0da87eaf6e3321d62041d4403b", $config->filters[2]->targets[0]->queue);
$this->assertEquals(10, $config->filters[2]->targets[0]->priority);
$this->assertEquals(30, $config->filters[2]->targets[0]->timeout);
$this->assertEquals("WQ5940dc0da87eaf6e3321d62041d4403b", $config->filters[2]->targets[1]->queue);
$this->assertEquals(15, $config->filters[2]->targets[1]->priority);
// default filter
$this->assertEquals("WQ6d29383312b24bd898a8df32779fc043", $config->default_filter->queue);
}
public function testParseWorkflowFilterFriendlyName() {
$json = "{
\"task_routing\":{
\"filters\":[
{
\"expression\":\"type=='sales'\",
\"targets\":[
{
\"queue\":\"WQf6724bd5005b30eeb6ea990c3e59e536\",
\"priority\": 5,
\"timeout\": 30
},
{
\"queue\":\"WQf6724bd5005b30eeb6ea990c3e59e536\",
\"priority\": 10
}
],
\"filter_friendly_name\":\"Sales\"
},
{
\"expression\":\"type=='marketing'\",
\"targets\":[
{
\"queue\":\"WQ8c62f84b61ccfa6a333757cd508f0aae\",
\"priority\": 1,
\"timeout\": 120
},
{
\"queue\":\"WQ8c62f84b61ccfa6a333757cd508f0aae\",
\"priority\": 3
}
],
\"filter_friendly_name\":\"Marketing\"
},
{
\"expression\":\"type=='support'\",
\"targets\":[
{
\"queue\":\"WQ5940dc0da87eaf6e3321d62041d4403b\",
\"priority\": 10,
\"timeout\": 30
},
{
\"queue\":\"WQ5940dc0da87eaf6e3321d62041d4403b\",
\"priority\": 15
}
],
\"filter_friendly_name\":\"Support\"
}
],
\"default_filter\":{
\"queue\":\"WQ6d29383312b24bd898a8df32779fc043\"
}
}
}";
$config = WorkflowConfiguration::fromJson($json);
$taskRoutingConfig = WorkflowConfiguration::parse($json)->task_routing;
$this->assertEquals(3, count($taskRoutingConfig->filters));
$this->assertEquals(3, count($config->filters));
$this->assertEquals(1, count($config->default_filter));
// sales assertions
$this->assertEquals("type=='sales'", $config->filters[0]->expression);
$this->assertEquals("Sales", $config->filters[0]->friendly_name);
$this->assertEquals(2, count($config->filters[0]->targets));
$this->assertEquals("WQf6724bd5005b30eeb6ea990c3e59e536", $config->filters[0]->targets[0]->queue);
$this->assertEquals(5, $config->filters[0]->targets[0]->priority);
$this->assertEquals(30, $config->filters[0]->targets[0]->timeout);
$this->assertEquals("WQf6724bd5005b30eeb6ea990c3e59e536", $config->filters[0]->targets[1]->queue);
$this->assertEquals(10, $config->filters[0]->targets[1]->priority);
// marketing assertions
$this->assertEquals("type=='marketing'", $config->filters[1]->expression);
$this->assertEquals("Marketing", $config->filters[1]->friendly_name);
$this->assertEquals(2, count($config->filters[1]->targets));
$this->assertEquals("WQ8c62f84b61ccfa6a333757cd508f0aae", $config->filters[1]->targets[0]->queue);
$this->assertEquals(1, $config->filters[1]->targets[0]->priority);
$this->assertEquals(120, $config->filters[1]->targets[0]->timeout);
$this->assertEquals("WQ8c62f84b61ccfa6a333757cd508f0aae", $config->filters[1]->targets[1]->queue);
$this->assertEquals(3, $config->filters[1]->targets[1]->priority);
// support assertions
$this->assertEquals("type=='support'", $config->filters[2]->expression);
$this->assertEquals("Support", $config->filters[2]->friendly_name);
$this->assertEquals(2, count($config->filters[2]->targets));
$this->assertEquals("WQ5940dc0da87eaf6e3321d62041d4403b", $config->filters[2]->targets[0]->queue);
$this->assertEquals(10, $config->filters[2]->targets[0]->priority);
$this->assertEquals(30, $config->filters[2]->targets[0]->timeout);
$this->assertEquals("WQ5940dc0da87eaf6e3321d62041d4403b", $config->filters[2]->targets[1]->queue);
$this->assertEquals(15, $config->filters[2]->targets[1]->priority);
// default filter
$this->assertEquals("WQ6d29383312b24bd898a8df32779fc043", $config->default_filter->queue);
}
}