/**
  * @test
  */
 public function shouldValidateSortingParameters()
 {
     $violation = $this->getMockBuilder(ConstraintViolationBuilderInterface::class)->getMock();
     $violation->expects($this->once())->method('setParameters')->with(['%fields%' => "'store.name', 'name'"])->willReturnSelf();
     $violation->expects($this->once())->method('setPlural')->with(2)->willReturnSelf();
     $violation->expects($this->once())->method('setInvalidValue')->with(['store.name', 'name'])->willReturnSelf();
     $violation->expects($this->once())->method('setCode')->with(ListQueryParameters::INVALID_SORTING)->willReturnSelf();
     $violation->expects($this->once())->method('atPath')->with('sortParameters')->willReturnSelf();
     $violation->expects($this->once())->method('addViolation');
     $context = $this->getMockBuilder(ExecutionContextInterface::class)->getMock();
     $context->expects($this->once())->method('buildViolation')->with('Sorting by following fields is not supported: %fields%')->willReturn($violation);
     $query = new ListQueryParameters();
     $query->validateSortParameters($context);
     $query->setSortParameters($query->parseSortingParameters('-store.name,name'))->validateSortParameters($context);
 }
Example #2
0
 /**
  * @inheritdoc
  */
 protected function getAllowedFields($resource)
 {
     switch ($resource) {
         case 'pets':
             return ['name', 'family', 'store'];
         case 'stores':
             return ['name'];
         default:
             return parent::getAllowedFields($resource);
     }
 }