/** * @dataProvider includeProvider * * @param array $toInclude * @param array $parentRelationships * @param array $expectedSequence */ public function testIncludes(array $toInclude, array $parentRelationships, array $expectedSequence) { $metadataMock = $this->createMetadataMock(["entity" => "one", "relationships" => $parentRelationships]); $sequencer = new TokenSequencer($this->tokenFactory, "find", $metadataMock); foreach ($toInclude as $include) { $includeMetadata = $this->createMetadataMock($include["metadata"]); $alias = isset($include["alias"]) ? $include["alias"] : ""; $parent = isset($include["parent"]) ? $include["parent"] : ""; $filters = null; if (!empty($include["filters"])) { $filters = \Mockery::mock("Silktide\\Reposition\\QueryBuilder\\TokenSequencerInterface"); $filters->shouldReceive("getSequence")->andReturn($include["filters"]); } $sequencer->includeEntity($includeMetadata, $alias, $parent, $filters); } $this->assertEquals($expectedSequence, $sequencer->getSequence()); }
public function keyword($keyword) { $sequencer = new TokenSequencer($this->tokenFactory); return $sequencer->keyword($keyword); }
/** * wraps the following expression in parentheses to isolate it * @param TokenSequencer|Token|mixed $content * @return $this */ public function closure($content = null) { $this->addNewToSequence("open"); if (!empty($content)) { if ($content instanceof TokenSequencer) { $this->mergeSequence($content->getSequence()); } elseif ($content instanceof Token) { $this->addToSequence($content); } elseif (is_array($content)) { foreach ($content as $subContent) { $this->addMixedContentToSequence($subContent); } } else { $this->val($content); } } $this->addNewToSequence("close"); return $this; }