/** * Test that running a factory build on a valid configuration returns a tree * @return void */ public function testValidFactory() { $context = new GenericContext(); $treeJson = array('segmentName' => 'Root', 'segmentId' => 1, 'children' => array(array('segmentName' => 'Child #1', 'segmentId' => 2, 'children' => array(), 'Condition' => array()), array('segmentName' => 'Default', 'segmentId' => 3, 'children' => array(), 'Condition' => null))); $factory = new JsonFactory($treeJson, $context); $tree = $factory->build(); $this->assertInstanceOf('Verdict\\Segment\\Tree', $tree); }
/** * Test validating an invalid tree setup - non truth condition on a default node * @expectedException RuntimeException */ public function testValidateInvalidTreeInvalidConditionType() { $context = new GenericContext(); $treeJson = array('segmentName' => 'Root', 'segmentId' => 1, 'children' => array(array('segmentName' => 'Child #1', 'segmentId' => 2, 'children' => array(), 'Condition' => array('nodeType' => 'thisisnotavalidnodetype', 'nodeDriver' => 'equals', 'contextKey' => 'Stuff', 'configValue' => 0)), array('segmentName' => 'Default', 'segmentId' => 3, 'children' => array(), 'Condition' => null))); $factory = new JsonFactory($treeJson, $context); $validateService = new Validator($factory->build()); $validateService->validate(); }
/** * Test running all leaf nodes, making sure we only match valid conditions * @return void */ public function testRunAllLeafNodes() { $factory = new SegmentFactory(array('segmentId' => '1', 'segmentName' => 'Root', 'Condition' => null, 'children' => array(array('segmentId' => '2', 'segmentName' => 'Def 1', 'Condition' => array('nodeType' => 'comparison', 'nodeDriver' => 'equals', 'contextKey' => 'Namespaced::Number', 'configValue' => 2), 'children' => array(array('segmentId' => '3', 'segmentName' => 'Def 2', 'Condition' => array('nodeType' => 'comparison', 'nodeDriver' => 'equals', 'contextKey' => 'Namespaced::Number', 'configValue' => 3), 'children' => array()))), array('segmentId' => '4', 'segmentName' => 'Def 3', 'Condition' => array('nodeType' => 'comparison', 'nodeDriver' => 'truth', 'contextKey' => null, 'configValue' => null), 'children' => array()), array('segmentId' => '5', 'segmentName' => 'Def 4', 'Condition' => array('nodeType' => 'comparison', 'nodeDriver' => 'truth', 'contextKey' => null, 'configValue' => null), 'children' => array(array('segmentId' => '6', 'segmentName' => 'Def 5', 'Condition' => array('nodeType' => 'comparison', 'nodeDriver' => 'truth', 'contextKey' => null, 'configValue' => null), 'children' => array()))))), $this->context); $tree = $factory->build(); $matchingNodes = $tree->runAllLeafNodes(); $this->assertEquals(count($matchingNodes), 2); foreach ($matchingNodes as $node) { $this->assertTrue($node->isLeafNode()); } }