private function compileAccordingConditionsAndHackThemIntoQobj(array $extraProperties, $qobj, $qid) { $this->querySegmentListBuilder->setSortKeys($this->sortKeys); $this->querySegmentListBuilder->buildQuerySegmentFor(new Conjunction($extraProperties)); $newQuerySegmentId = $this->querySegmentListBuilder->getLastQuerySegmentId(); $this->querySegmentList = $this->querySegmentListBuilder->getQuerySegmentList(); $this->errors = $this->querySegmentListBuilder->getErrors(); $newQuerySegment = $this->querySegmentList[$newQuerySegmentId]; // This is always an QuerySegment::Q_CONJUNCTION ... foreach ($newQuerySegment->components as $cid => $field) { // ... so just re-wire its dependencies $qobj->components[$cid] = $qobj->joinfield; $qobj->sortfields = array_merge($qobj->sortfields, $this->querySegmentList[$cid]->sortfields); } $this->querySegmentList[$qid] = $qobj; }
public function testWhenSomeQuerySegments_getQuerySegmentListReturnsThemAll() { $instance = new QuerySegmentListBuilder($this->store); $firstQuerySegment = new QuerySegment(); $firstQuerySegment->segmentNumber = 42; $instance->addQuerySegment($firstQuerySegment); $secondQuerySegment = new QuerySegment(); $secondQuerySegment->segmentNumber = 23; $instance->addQuerySegment($secondQuerySegment); $expected = array(42 => $firstQuerySegment, 23 => $secondQuerySegment); $this->assertSame($expected, $instance->getQuerySegmentList()); }
public function testWhenSomeQuerySegments_getQuerySegmentListReturnsThemAll() { $instance = new QuerySegmentListBuilder($this->store, $this->descriptionInterpreterFactory); $firstQuerySegment = new QuerySegment(); $instance->addQuerySegment($firstQuerySegment); $secondQuerySegment = new QuerySegment(); $instance->addQuerySegment($secondQuerySegment); $expected = array(0 => $firstQuerySegment, 1 => $secondQuerySegment); $this->assertSame($expected, $instance->getQuerySegmentList()); }