/** * @since 2.2 * * @param QueryTestCaseInterpreter $queryTestCaseInterpreter */ public function processQueryCase(QueryTestCaseInterpreter $queryTestCaseInterpreter) { if (!$queryTestCaseInterpreter->hasCondition()) { $this->markTestSkipped('Found no condition for ' . $queryTestCaseInterpreter->isAbout()); } $description = $this->queryParser->getQueryDescription($queryTestCaseInterpreter->getCondition()); $this->printDescriptionToOutput($queryTestCaseInterpreter->isAbout(), $description); $query = new Query($description, false, false); $query->querymode = $queryTestCaseInterpreter->getQueryMode(); $query->setLimit($queryTestCaseInterpreter->getLimit()); $query->setOffset($queryTestCaseInterpreter->getOffset()); $query->setExtraPrintouts($queryTestCaseInterpreter->getExtraPrintouts()); $query->setSortKeys($queryTestCaseInterpreter->getSortKeys()); $query->setContextPage($queryTestCaseInterpreter->getSubject()); if ($queryTestCaseInterpreter->isRequiredToClearStoreCache()) { $this->getStore()->clear(); } $queryResult = $this->getStore()->getQueryResult($query); $this->printQueryResultToOutput($queryResult); if (is_string($queryResult)) { return; } $this->assertEquals($queryTestCaseInterpreter->getExpectedCount(), $queryResult->getCount(), 'Failed asserting query result count on ' . $queryTestCaseInterpreter->isAbout()); $this->assertCount($queryTestCaseInterpreter->getExpectedErrorCount(), $queryResult->getErrors(), 'Failed asserting error count ' . $queryTestCaseInterpreter->isAbout()); if ($queryTestCaseInterpreter->getExpectedErrorCount() > 0) { return null; } if ($queryTestCaseInterpreter->isFromCache() !== null) { $this->assertEquals($queryTestCaseInterpreter->isFromCache(), $queryResult->isFromCache(), 'Failed asserting isFromCache for ' . $queryTestCaseInterpreter->isAbout()); } $this->queryResultValidator->assertThatQueryResultHasSubjects($queryTestCaseInterpreter->getExpectedSubjects(), $queryResult, $queryTestCaseInterpreter->isAbout()); $this->queryResultValidator->assertThatDataItemIsSet($queryTestCaseInterpreter->getExpectedDataItems(), $queryResult, $queryTestCaseInterpreter->isAbout()); $this->queryResultValidator->assertThatDataValueIsSet($queryTestCaseInterpreter->getExpectedDataValues(), $queryResult, $queryTestCaseInterpreter->isAbout()); }