Example #1
0
 function it_returns_the_latest_version_if_the_requested_version_is_invalid(Request $request, \LaraPackage\Api\Contracts\Config\ApiVersion $version)
 {
     $this->requestHeaderExpectation($request, 'application/vnd.wps_api.v500012+json');
     $version->isValid(500012)->shouldBeCalledTimes(1)->willReturn(false);
     $version->latest()->shouldBeCalledTimes(1)->willReturn(4);
     $this->version()->shouldReturn(4);
 }
Example #2
0
 /**
  * @param App                                               $app
  * @param \LaraPackage\Api\Contracts\Request\Parser         $requestParser
  * @param \LaraPackage\Api\Contracts\Factory\VersionFactory $versionFactory
  */
 protected function versionFactoryExpectations(App $app, \LaraPackage\Api\Contracts\Request\Parser $requestParser, \LaraPackage\Api\Contracts\Factory\VersionFactory $versionFactory, ApiVersion $apiVersion)
 {
     $requestParser->version()->shouldBeCalled()->willReturn($this->version);
     $apiVersion->factory($this->version)->shouldBeCalled()->willReturn(VersionFactory::class);
     $app->instance(\LaraPackage\Api\Contracts\Factory\VersionFactory::class, $versionFactory)->shouldBeCalled();
     $app->make(VersionFactory::class)->shouldBeCalledTimes(1)->willReturn($versionFactory);
 }
Example #3
0
 /**
  * Create the VersionFactory for the Version
  *
  * @return \LaraPackage\Api\Contracts\Factory\VersionFactory
  * @internal param $version
  *
  */
 protected function createVersionFactory()
 {
     $version = $this->requestParser->version();
     $factory = $this->apiVersion->factory($version);
     $instance = $this->app->make($factory);
     $this->app->instance(\LaraPackage\Api\Contracts\Factory\VersionFactory::class, $instance);
     return $instance;
 }
Example #4
0
 function it_returns_the_current_position_even_if_it_is_null(Parser $parser, ApiVersion $apiVersion)
 {
     $version = 4;
     $postionString = 'current';
     $parser->version()->shouldBeCalled()->willReturn($version);
     $apiVersion->collectionCurrentPositionString($version)->shouldBeCalled()->willReturn($postionString);
     $parser->query($postionString)->shouldBeCalled()->willReturn(null);
     $this->currentPosition()->shouldReturn(0);
 }
 function it_makes_a_response(\LaraPackage\Api\Contracts\Request\Parser $requestParser, ResponseFactory $response, \LaraPackage\Api\Contracts\Factory\VersionFactory $versionFactory, \LaraPackage\Api\Contracts\MediaType\Json $media, \Illuminate\Http\Response $illuminateResponse, \LaraPackage\Api\Contracts\Config\ApiVersion $versionInfoRetriever)
 {
     $mediaType = 'json';
     $version = 4;
     $vendor = 'vnd.wps_api.';
     $versionDesignator = 'v4';
     $dataArray = ['data' => 'array'];
     $jsonData = json_encode($dataArray);
     $requestParser->acceptedMediaType()->shouldBeCalled()->willReturn($mediaType);
     $versionInfoRetriever->vendor($version)->shouldBeCalled()->willReturn($vendor);
     $versionInfoRetriever->versionDesignator($version)->shouldBeCalled()->willReturn($versionDesignator);
     $versionFactory->makeMediaType($mediaType)->shouldBeCalled()->willReturn($media);
     $media->format($dataArray)->shouldBeCalled()->willReturn($jsonData);
     $response->make($jsonData, 200, ['Content-Type' => 'application/' . $vendor . $versionDesignator . '+' . $mediaType])->shouldBeCalled()->willReturn($illuminateResponse);
     $this->make($dataArray)->shouldReturn($illuminateResponse);
 }
Example #6
0
 /**
  * @param string $string
  *
  * @return int
  */
 protected function parseVersion($string)
 {
     $version = \preg_replace('/[^0-9]/', '', $string);
     if (!is_numeric($version)) {
         return (int) $this->version->latest();
     }
     return (int) $version;
 }
Example #7
0
 /**
  * @inheritdoc
  */
 public function pageSize()
 {
     return $this->version->collectionPageSize($this->requestParser->version());
 }
 /**
  * @param array $headers
  * @param       $mediaType
  *
  * @return array
  */
 protected function setContentTypeHeader(array $headers, $mediaType)
 {
     $headers['Content-Type'] = 'application/' . $this->versionInfoRetriever->vendor($this->version) . $this->versionInfoRetriever->versionDesignator($this->version) . '+' . $mediaType;
     return $headers;
 }