/** * @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()); }