示例#1
0
 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;
 }
 /**
  * @dataProvider descriptionProvider
  */
 public function testinterpretDescription($description, $isFixedPropertyTable, $indexField, $sortKeys, $expected)
 {
     $dataItemHandler = $this->getMockBuilder('\\SMWDataItemHandler')->disableOriginalConstructor()->getMockForAbstractClass();
     $dataItemHandler->expects($this->any())->method('getIndexField')->will($this->returnValue($indexField));
     $dataItemHandler->expects($this->any())->method('getTableFields')->will($this->returnValue(array('one', 'two')));
     $dataItemHandler->expects($this->any())->method('getWhereConds')->will($this->returnValue(array($indexField => 'fixedFooWhereCond')));
     $objectIds = $this->getMockBuilder('\\stdClass')->setMethods(array('getSMWPropertyID', 'getSMWPageID'))->getMock();
     $objectIds->expects($this->any())->method('getSMWPropertyID')->will($this->returnValue(42));
     $objectIds->expects($this->any())->method('getSMWPageID')->will($this->returnValue(91));
     $connection = $this->getMockBuilder('\\SMW\\MediaWiki\\Database')->disableOriginalConstructor()->getMock();
     $connection->expects($this->any())->method('addQuotes')->will($this->returnArgument(0));
     $store = $this->getMockBuilder('\\SMW\\SQLStore\\SQLStore')->disableOriginalConstructor()->getMock();
     $proptable = $this->getMockBuilder('\\SMWSQLStore3Table')->disableOriginalConstructor()->getMock();
     $proptable->expects($this->any())->method('usesIdSubject')->will($this->returnValue(true));
     $proptable->expects($this->any())->method('getName')->will($this->returnValue('FooPropTable'));
     $proptable->expects($this->any())->method('isFixedPropertyTable')->will($this->returnValue($isFixedPropertyTable));
     $store = $this->getMockBuilder('\\SMW\\SQLStore\\SQLStore')->disableOriginalConstructor()->getMock();
     $store->expects($this->once())->method('findPropertyTableID')->will($this->returnValue('Foo'));
     $store->expects($this->once())->method('getPropertyTables')->will($this->returnValue(array('Foo' => $proptable)));
     $store->expects($this->any())->method('getConnection')->will($this->returnValue($connection));
     $store->expects($this->any())->method('getObjectIds')->will($this->returnValue($objectIds));
     $store->expects($this->any())->method('getDataItemHandlerForDIType')->will($this->returnValue($dataItemHandler));
     $querySegmentListBuilder = new QuerySegmentListBuilder($store);
     $querySegmentListBuilder->setSortKeys($sortKeys);
     $instance = new SomePropertyInterpreter($querySegmentListBuilder);
     $this->assertTrue($instance->canInterpretDescription($description));
     $this->querySegmentValidator->assertThatContainerHasProperties($expected, $instance->interpretDescription($description));
 }