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); }
/** * @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); }
/** * 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; }
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); }
/** * @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; }
/** * @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; }