1<?php declare(strict_types=1);
2/* Copyright (c) 1998-2018 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4use ILIAS\UI\Factory;
5use ILIAS\UI\Renderer;
6use PHPUnit\Framework\MockObject\MockObject;
7use Psr\Http\Message\ServerRequestInterface;
8
9/**
10 * Class ilTermsOfServiceAcceptanceHistoryGUITest
11 * @author Michael Jansen <mjansen@databay.de>
12 */
13class ilTermsOfServiceAcceptanceHistoryGUITest extends ilTermsOfServiceBaseTest
14{
15    /** @var MockObject|ilTermsOfServiceTableDataProviderFactory */
16    protected $tableDataProviderFactory;
17
18    /** @var MockObject|ilObjTermsOfService */
19    protected $tos;
20
21    /** @var MockObject|ilGlobalPageTemplate */
22    protected $tpl;
23
24    /** @var MockObject|ilCtrl */
25    protected $ctrl;
26
27    /** @var MockObject|ilLanguage */
28    protected $lng;
29
30    /** @var MockObject|ilRbacSystem */
31    protected $rbacsystem;
32
33    /** @var MockObject|ilErrorHandling */
34    protected $error;
35
36    /** @var MockObject|Factory */
37    protected $uiFactory;
38
39    /** @var MockObject|Renderer */
40    protected $uiRenderer;
41
42    /** @var MockObject|ServerRequestInterface */
43    protected $request;
44
45    /** @var MockObject|ilTermsOfServiceCriterionTypeFactoryInterface */
46    protected $criterionTypeFactory;
47
48    /**
49     * @throws ReflectionException
50     */
51    public function setUp() : void
52    {
53        parent::setUp();
54
55        $this->tos = $this->getMockBuilder(ilObjTermsOfService::class)->disableOriginalConstructor()->getMock();
56        $this->criterionTypeFactory = $this->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)->disableOriginalConstructor()->getMock();
57        $this->tpl = $this->getMockBuilder(ilGlobalPageTemplate::class)->disableOriginalConstructor()->getMock();
58        $this->ctrl = $this->getMockBuilder(ilCtrl::class)->disableOriginalConstructor()->getMock();
59        $this->lng = $this->getMockBuilder(ilLanguage::class)->disableOriginalConstructor()->getMock();
60        $this->rbacsystem = $this->getMockBuilder(ilRbacSystem::class)->disableOriginalConstructor()->getMock();
61        $this->error = $this->getMockBuilder(ilErrorHandling::class)->disableOriginalConstructor()->getMock();
62        $this->request = $this->getMockBuilder(ServerRequestInterface::class)->disableOriginalConstructor()->getMock();
63        $this->uiFactory = $this->getMockBuilder(Factory::class)->disableOriginalConstructor()->getMock();
64        $this->uiRenderer = $this->getMockBuilder(Renderer::class)->disableOriginalConstructor()->getMock();
65        $this->tableDataProviderFactory = $this->getMockBuilder(ilTermsOfServiceTableDataProviderFactory::class)->disableOriginalConstructor()->getMock();
66    }
67
68    /**
69     *
70     */
71    public function testAccessDeniedErrorIsRaisedWhenPermissionsAreMissing() : void
72    {
73        $this->ctrl
74            ->expects($this->any())
75            ->method('getCmd')
76            ->willReturnOnConsecutiveCalls(
77                'showAcceptanceHistory'
78            );
79
80        $this->rbacsystem
81            ->expects($this->any())
82            ->method('checkAccess')
83            ->willReturn(false);
84
85        $this->error
86            ->expects($this->any())
87            ->method('raiseError')
88            ->willThrowException(new ilException('no_permission'));
89
90        $gui = new ilTermsOfServiceAcceptanceHistoryGUI(
91            $this->tos,
92            $this->criterionTypeFactory,
93            $this->tpl,
94            $this->ctrl,
95            $this->lng,
96            $this->rbacsystem,
97            $this->error,
98            $this->request,
99            $this->uiFactory,
100            $this->uiRenderer,
101            $this->tableDataProviderFactory
102        );
103
104        $this->expectException(ilException::class);
105
106        $gui->executeCommand();
107    }
108}
109