package com.twilio.taskrouter; import com.google.common.collect.Lists; import org.junit.Assert; import org.junit.Test; import java.io.IOException; import java.util.List; /** * Test class for {@link Workflow} */ public class WorkflowTest { @Test public void testToJson() throws IOException { List<WorkflowRuleTarget> targets = Lists.newArrayList( new WorkflowRuleTarget.Builder("WQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") .priority(54333) .timeout(30) .build() ); List<WorkflowRule> rules = Lists.newArrayList( new WorkflowRule.Builder("skill == \"HR\"", targets).friendlyName("4354").build() ); WorkflowRuleTarget defaultTarget = new WorkflowRuleTarget.Builder("WQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").build(); Workflow workflow = new Workflow(rules, defaultTarget); Assert.assertEquals("{\"task_routing\":{\"filters\":[{\"expression\":\"skill == \\\"HR\\\"\",\"targets\":[{\"queue\":\"WQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"priority\":54333,\"timeout\":30}],\"friendlyName\":\"4354\"}],\"default_filter\":{\"queue\":\"WQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}}}", workflow.toJson()); } @Test public void testFromJson() throws IOException { String json = "{\n" + " \"task_routing\": {\n" + " \"filters\": [{\n" + " \"expression\": \"skill == \\\"HR\\\"\",\n" + " \"friendlyName\": \"4354\",\n" + " \"targets\": [{\n" + " \"queue\": \"WQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n" + " \"priority\": 54333,\n" + " \"timeout\": 30\n" + " }]\n" + " }],\n" + " \"default_filter\": {\n" + " \"queue\": \"WQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n" + " }\n" + " }\n" + "}"; Workflow workflow = Workflow.fromJson(json); WorkflowRuleTarget defaultTarget = workflow.getDefaultTarget(); Assert.assertEquals("WQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", defaultTarget.getQueue()); List<WorkflowRule> rules = workflow.getWorkflowRules(); Assert.assertEquals(1, rules.size()); WorkflowRule rule = rules.get(0); Assert.assertEquals("skill == \"HR\"", rule.getExpression()); Assert.assertEquals("4354", rule.getFriendlyName()); List<WorkflowRuleTarget> targets = rule.getWorkflowRuleTargets(); Assert.assertEquals(1, targets.size()); WorkflowRuleTarget target = targets.get(0); Assert.assertEquals("WQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", target.getQueue()); Assert.assertEquals(54333, (int)target.getPriority()); Assert.assertEquals(30, (int)target.getTimeout()); } }