ILIAS  trunk Revision v12.0_alpha-1227-g7ff6d300864
ConsumerTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
23use ilCtrl;
25use ilSetting;
28use ILIAS\LegalDocuments\test\ContainerMock;
29use PHPUnit\Framework\TestCase;
33
34require_once __DIR__ . '/bootstrap.php';
35
36class ConsumerTest extends TestCase
37{
38 use ContainerMock;
39
40 public function testConstruct(): void
41 {
42 $this->assertInstanceOf(Consumer::class, new Consumer($this->mock(Container::class)));
43 }
44
45 public function testId(): void
46 {
47 $this->assertSame(Consumer::ID, (new Consumer($this->mock(Container::class)))->id());
48 }
49
50 public function testDisabledUses(): void
51 {
52 $by_trying = $this->mockTree(ByTrying::class, ['transform' => false]);
53 $settings = $this->mockMethod(ilSetting::class, 'get', ['dpro_enabled', ''], 'false');
54
55 $container = $this->mockTree(Container::class, [
56 'settings' => $settings,
57 'refinery' => ['byTrying' => $by_trying],
58 ]);
59 $container->method('offsetGet')->with('ilObjDataCache')->willReturn($this->mock(ilObjectDataCache::class));
60
61 $slot = $this->mock(UseSlot::class);
62 $slot->expects(self::once())->method('hasDocuments')->willReturn($slot);
63 $slot->expects(self::once())->method('hasHistory')->willReturn($slot);
64 $slot->expects(self::once())->method('hasPublicApi')->willReturn($slot);
65 $slot->expects(self::once())->method('hasPublicPage')->willReturn($slot);
66 $slot->expects(self::once())->method('showInFooter')->willReturn($slot);
67
68 $instance = new Consumer($container);
69
70 $this->assertSame($slot, $instance->uses($slot, $this->mock(LazyProvide::class)));
71 }
72
73 public function testUsesWithoutAcceptance(): void
74 {
75 $by_trying = $this->mockTree(ByTrying::class, ['transform' => true]);
76 $settings = $this->mock(ilSetting::class);
77 $consecutive = ['dpro_enabled', 'dpro_no_acceptance'];
78 $settings->method('get')->with(
79 $this->callback(function ($value) use (&$consecutive) {
80 $this->assertSame(array_shift($consecutive), $value);
81 return true;
82 }),
83 $this->identicalTo('')
84 )->willReturn('true');
85
86 $container = $this->mockTree(Container::class, [
87 'settings' => $settings,
88 'refinery' => ['byTrying' => $by_trying],
89 'ctrl' => $this->mock(ilCtrl::class),
90 ]);
91 $container->method('offsetGet')->with('ilObjDataCache')->willReturn($this->mock(ilObjectDataCache::class));
92
93 $slot = $this->mock(UseSlot::class);
94 $slot->expects(self::once())->method('hasDocuments')->willReturn($slot);
95 $slot->expects(self::once())->method('hasHistory')->willReturn($slot);
96 $slot->expects(self::once())->method('showOnLoginPage')->willReturn($slot);
97 $slot->expects(self::once())->method('showInFooter')->willReturn($slot);
98 $slot->expects(self::once())->method('hasPublicPage')->willReturn($slot);
99 $slot->expects(self::once())->method('hasPublicApi')->willReturn($slot);
100
101 $instance = new Consumer($container);
102
103 $this->assertSame($slot, $instance->uses($slot, $this->mock(LazyProvide::class)));
104 }
105
106 public function testUses(): void
107 {
108 $by_trying = $this->mock(ByTrying::class);
109 $by_trying->method('transform')->willReturnOnConsecutiveCalls(true, false);
110
111 $settings = $this->mock(ilSetting::class);
112 $consecutive = ['dpro_enabled', 'dpro_no_acceptance'];
113 $settings->method('get')->with(
114 $this->callback(function ($value) use (&$consecutive) {
115 $this->assertSame(array_shift($consecutive), $value);
116 return true;
117 }),
118 $this->identicalTo('')
119 )->willReturnOnConsecutiveCalls('true', 'false');
120
121 $container = $this->mockTree(Container::class, [
122 'settings' => $settings,
123 'refinery' => ['byTrying' => $by_trying],
124 'ctrl' => $this->mock(ilCtrl::class),
125 ]);
126 $container->method('offsetGet')->with('ilObjDataCache')->willReturn($this->mock(ilObjectDataCache::class));
127
128 $slot = $this->mock(UseSlot::class);
129 $slot->expects(self::once())->method('hasDocuments')->willReturn($slot);
130 $slot->expects(self::once())->method('hasHistory')->willReturn($slot);
131 $slot->expects(self::once())->method('showOnLoginPage')->willReturn($slot);
132 $slot->expects(self::once())->method('canWithdraw')->willReturn($slot);
133 $slot->expects(self::once())->method('hasAgreement')->willReturn($slot);
134 $slot->expects(self::once())->method('showInFooter')->willReturn($slot);
135 $slot->expects(self::once())->method('onSelfRegistration')->willReturn($slot);
136 $slot->expects(self::once())->method('hasOnlineStatusFilter')->willReturn($slot);
137 $slot->expects(self::once())->method('hasUserManagementFields')->willReturn($slot);
138 $slot->expects(self::once())->method('hasPublicApi')->willReturn($slot);
139 $slot->expects(self::once())->method('canReadInternalMails')->willReturn($slot);
140 $slot->expects(self::once())->method('canUseSoapApi')->willReturn($slot);
141
142 $instance = new Consumer($container);
143
144 $this->assertSame($slot, $instance->uses($slot, $this->mock(LazyProvide::class)));
145 }
146}
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:36
Class ilCtrl provides processing control methods.
class ilObjectDataCache
ILIAS Setting Class.
$container
@noRector
Definition: wac.php:37