trait MockSessionTrait

Same name and namespace in other branches
  1. 4.0.x modules/stream_wrapper_example/tests/src/Traits/MockSessionTrait.php \Drupal\Tests\stream_wrapper_example\Traits\MockSessionTrait

A trait to expose a mock session type to PHPUnit tests.

Hierarchy

  • trait \Drupal\Tests\stream_wrapper_example\Traits\MockSessionTrait uses \Prophecy\PhpUnit\ProphecyTrait
2 files declare their use of MockSessionTrait
SessionHelperTest.php in modules/stream_wrapper_example/tests/src/Unit/SessionHelperTest.php
StreamWrapperTest.php in modules/stream_wrapper_example/tests/src/Kernel/StreamWrapperTest.php

File

modules/stream_wrapper_example/tests/src/Traits/MockSessionTrait.php, line 15

Namespace

Drupal\Tests\stream_wrapper_example\Traits
View source
trait MockSessionTrait {
    use ProphecyTrait;
    
    /**
     * We'll use this array to back our mock session.
     *
     * @var array
     */
    protected $sessionStore;
    
    /**
     * A representation of the HTTP request.
     *
     * @var \Symfony\Component\HttpFoundation\RequestStack|\Prophecy\Prophecy\ProphecyInterface
     */
    protected $requestStack;
    
    /**
     * Create a mock session object.
     *
     * @return \Symfony\Component\HttpFoundation\RequestStack|\Prophecy\Prophecy\ProphecyInterface
     *   A test double, or mock, of a RequestStack object
     *   that can be used to return a mock Session object.
     */
    protected function createSessionMock() {
        $this->sessionStore = [];
        $session = $this->prophesize(SessionInterface::class);
        $test = $this;
        $session->get('stream_wrapper_example', [])
            ->will(function ($args) use ($test) {
            return $test->getSessionStore();
        });
        $session->set('stream_wrapper_example', Argument::any())
            ->will(function ($args) use ($test) {
            $test->setSessionStore($args[1]);
        });
        $session->remove('stream_wrapper_example')
            ->will(function ($args) use ($test) {
            $test->resetSessionStore();
        });
        $request = $this->prophesize(Request::class);
        $request->getSession()
            ->willReturn($session->reveal());
        $request_stack = $this->prophesize(RequestStack::class);
        $request_stack->getCurrentRequest()
            ->willReturn($request->reveal());
        return $this->requestStack = $request_stack->reveal();
    }
    
    /**
     * Get a session helper.
     */
    public function getSessionHelper() {
        return new SessionHelper($this->requestStack);
    }
    
    /**
     * Helper for mocks.
     */
    public function getSessionStore() {
        return $this->sessionStore;
    }
    
    /**
     * Helper for our mocks.
     */
    public function setSessionStore($data) {
        $this->sessionStore = $data;
    }
    
    /**
     * Helper for our mocks.
     */
    public function resetSessionStore() {
        $this->sessionStore = [];
    }

}

Members

Title Sort descending Modifiers Object type Summary
MockSessionTrait::$requestStack protected property A representation of the HTTP request.
MockSessionTrait::$sessionStore protected property We'll use this array to back our mock session.
MockSessionTrait::createSessionMock protected function Create a mock session object.
MockSessionTrait::getSessionHelper public function Get a session helper.
MockSessionTrait::getSessionStore public function Helper for mocks.
MockSessionTrait::resetSessionStore public function Helper for our mocks.
MockSessionTrait::setSessionStore public function Helper for our mocks.