/** @test */
 public function translateCriteriaTranslatesNotCriteriaToCorrectExtbaseCriteriaIfNoOtherCriteriaIsSetOnExtbaseQuery()
 {
     $this->markTestSkipped('It seems not possible to use a mock as constraint. We need a solution here');
     $operand1 = $this->getMock('\\TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Qom\\DynamicOperandInterface');
     $operand2 = $this->getMock('\\TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Qom\\DynamicOperandInterface');
     $extbaseQueryInnerConstraint = new \TYPO3\CMS\Extbase\Persistence\Generic\Qom\Comparison($operand1, 2, $operand2);
     $extbaseQueryMock = $this->getMock('\\TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Query', array('getConstraint', 'matching', 'logicalAnd', 'logicalNot'), array('any'));
     $extbaseQueryMock->expects($this->any())->method('getConstraint')->will($this->returnValue($extbaseQueryInnerConstraint));
     $tmpQueryMock = $this->getMock('\\TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Query', array('getConstraint'), array('any'), '', false);
     $tmpQueryMock->expects($this->at(0))->method('getConstraint')->will($this->returnValue(null));
     $extbaseRepositoryMock = $this->getMock('\\TYPO3\\CMS\\Extbase\\Persistence\\Repository', array('createQuery'), array(), '', false);
     $extbaseRepositoryMock->expects($this->once())->method('createQuery')->will($this->returnValue($tmpQueryMock));
     $notCriteriaInnerCriteria = Tx_PtExtlist_Domain_QueryObject_SimpleCriteria::equals('test', 1);
     $notCriteria = $this->getMock('Tx_PtExtlist_Domain_QueryObject_NotCriteria', array('getCriteria'), array(), '', false);
     $notCriteria->expects($this->any())->method('getCriteria')->will($this->returnValue($notCriteriaInnerCriteria));
     $translatedQuery = Tx_PtExtlist_Domain_DataBackend_ExtBaseDataBackend_ExtBaseInterpreter_NotCriteriaTranslator::translateCriteria($notCriteria, $extbaseQueryMock, $extbaseRepositoryMock);
     $this->assertTrue(is_a($translatedQuery->getConstraint(), '\\TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Qom\\Comparison'));
     $translatedConstraint = $translatedQuery->getConstraint();
     $this->assertEquals($translatedConstraint->getOperator(), 2);
 }
 /**
  * Translates given criteria and adds it to extbase query criterias
  *
  * @param Tx_PtExtlist_Domain_QueryObject_Criteria $criteria
  * @param \TYPO3\CMS\Extbase\Persistence\Generic\Query $extbaseQuery
  * @param \TYPO3\CMS\Extbase\Persistence\Repository $repository
  * @throws Exception
  * @return \TYPO3\CMS\Extbase\Persistence\Generic\Query
  */
 public static function setCriteriaOnExtBaseQueryByCriteria(Tx_PtExtlist_Domain_QueryObject_Criteria $criteria, \TYPO3\CMS\Extbase\Persistence\Generic\Query $extbaseQuery, \TYPO3\CMS\Extbase\Persistence\Repository $repository)
 {
     $criteriaClass = get_class($criteria);
     switch ($criteriaClass) {
         case 'Tx_PtExtlist_Domain_QueryObject_SimpleCriteria':
             $extbaseQuery = Tx_PtExtlist_Domain_DataBackend_ExtBaseDataBackend_ExtBaseInterpreter_SimpleCriteriaTranslator::translateCriteria($criteria, $extbaseQuery, $repository);
             break;
         case 'Tx_PtExtlist_Domain_QueryObject_AndCriteria':
             $extbaseQuery = Tx_PtExtlist_Domain_DataBackend_ExtBaseDataBackend_ExtBaseInterpreter_AndCriteriaTranslator::translateCriteria($criteria, $extbaseQuery, $repository);
             break;
         case 'Tx_PtExtlist_Domain_QueryObject_OrCriteria':
             $extbaseQuery = Tx_PtExtlist_Domain_DataBackend_ExtBaseDataBackend_ExtBaseInterpreter_OrCriteriaTranslator::translateCriteria($criteria, $extbaseQuery, $repository);
             break;
         case 'Tx_PtExtlist_Domain_QueryObject_NotCriteria':
             $extbaseQuery = Tx_PtExtlist_Domain_DataBackend_ExtBaseDataBackend_ExtBaseInterpreter_NotCriteriaTranslator::translateCriteria($criteria, $extbaseQuery, $repository);
             break;
         default:
             throw new Exception('Unkown criteria type ' . $criteriaClass . ' 1299224408');
             break;
     }
     return $extbaseQuery;
 }