codifico/phpspec-rest-view-extension

REST View 匹配器

安装: 767

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 3

开放问题: 0

类型:phpspec-extension

dev-master 2015-10-07 05:51 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:09:38 UTC


README

Build Status Scrutinizer Code Quality

Latest Stable Version Latest Unstable Version License Total Downloads

基于 FOSRestBundle 视图对象,提供了一种简单的方式来管理对 Rest View 对象的期望。

安装

php composer.phar require codifico/phpspec-rest-view-extension:dev-master --dev

通过在您的 phpspec.yml 中指定其类来激活扩展

# phpspec.yml
extensions:
    - Codifico\PhpSpec\RestViewExtension\Extension

使用

spec 文件的使用

# UserControllerSpec.php
<?php

namespace spec\AppBundle\Controller;

use AppBundle\Controller\UserController;
use FOS\RestBundle\Util\Codes;
use PhpSpec\ObjectBehavior;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * @mixin UserController
 *
 * @method beConstructedWith(UserInterface $user)
 */
class UserControllerSpec extends ObjectBehavior
{
    function let(UserInterface $user)
    {
        $this->beConstructedWith($user);
    }

    function it_show_the_current_user(UserInterface $user)
    {
        $this->getUser()->shouldBeRestViewWith([
            'data' => $user,
            'statusCode' => Codes::HTTP_OK,
            'serializationGroups' => ['user_profile'],
            'headers' => [
                'cache-control' => ['no-cache'],
                'date' => ["@string@.isDateTime()"],
            ]
        ]);
    }
}

以及相应的控制器文件

# UserController.php
<?php

namespace AppBundle\Controller;

use FOS\RestBundle\Util\Codes;
use Symfony\Component\Security\Core\User\UserInterface;
use FOS\RestBundle\View\View;
use JMS\Serializer\SerializationContext;

class UserController
{
    /**
     * @var UserInterface
     */
    private $user;

    /**
     * @param UserInterface $user
     */
    public function __construct(UserInterface $user)
    {
        $this->user = $user;
    }

    /**
     * @return \FOS\RestBundle\View\View|null
     */
    public function getUser()
    {
        $context = SerializationContext::create();
        $context->setGroups('user_profile');

        $view = View::create($this->user, Codes::HTTP_OK, []);
        $view->setSerializationContext($context);

        return $view;
    }
}

版权

版权(c)2015 Marcin Dryka(drymek)。有关详细信息,请参阅 LICENSE。

贡献者