ILIAS  trunk Revision v11.0_alpha-2662-g519ff7d528f
UploadLimitResolverTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
28 
32 class UploadLimitResolverTest extends TestCase
33 {
36 
37  protected function setUp(): void
38  {
39  $pseudo_upload_handler = $this->createMock(UploadHandler::class);
40  $pseudo_upload_handler->method('getFileIdentifierParameterName')->willReturn('');
41 
42  $this->upload_handler_with_chunks = clone $pseudo_upload_handler;
43  $this->upload_handler_with_chunks->method('supportsChunkedUploads')->willReturn(true);
44 
45  $this->upload_handler_without_chunks = clone $pseudo_upload_handler;
46  $this->upload_handler_without_chunks->method('supportsChunkedUploads')->willReturn(false);
47  }
48 
49  public static function provideUploadLimitResolutionDataSet(): array
50  {
51  return [
52  [
53  'php_ini_value' => 10,
54  'custom_global_value' => null,
55  'local_value' => null,
56  'upload_handler_supports_chunks' => true,
57  'expected_result' => 10
58  ],
59  [
60  'php_ini_value' => 10,
61  'custom_global_value' => null,
62  'local_value' => 20,
63  'upload_handler_supports_chunks' => true,
64  'expected_result' => 20
65  ],
66  [
67  'php_ini_value' => 10,
68  'custom_global_value' => null,
69  'local_value' => 20,
70  'upload_handler_supports_chunks' => true,
71  'expected_result' => 20
72  ],
73  [
74  'php_ini_value' => 10,
75  'custom_global_value' => 15,
76  'local_value' => 20,
77  'upload_handler_supports_chunks' => true,
78  'expected_result' => 20
79  ],
80  [
81  'php_ini_value' => 10,
82  'custom_global_value' => 20,
83  'local_value' => 15,
84  'upload_handler_supports_chunks' => true,
85  'expected_result' => 15
86  ],
87  [
88  'php_ini_value' => 10,
89  'custom_global_value' => null,
90  'local_value' => 20,
91  'upload_handler_supports_chunks' => false,
92  'expected_result' => 10
93  ],
94  [
95  'php_ini_value' => 10,
96  'custom_global_value' => 20,
97  'local_value' => null,
98  'upload_handler_supports_chunks' => false,
99  'expected_result' => 10
100  ],
101  [
102  'php_ini_value' => 10,
103  'custom_global_value' => 20,
104  'local_value' => 5,
105  'upload_handler_supports_chunks' => false,
106  'expected_result' => 5
107  ],
108  ];
109  }
110 
111  #[\PHPUnit\Framework\Attributes\DataProvider('provideUploadLimitResolutionDataSet')]
112  public function testUploadLimitResolution(
113  int $php_ini_value,
114  ?int $custom_global_value,
115  ?int $local_value,
116  bool $upload_handler_supports_chunks,
117  int $expected_result,
118  ): void {
120  $this->getPhpUploadLimitMock($php_ini_value),
121  $this->getGlobalUploadLimitMock($custom_global_value)
122  );
123 
124  if ($upload_handler_supports_chunks) {
125  $upload_handler = $this->upload_handler_with_chunks;
126  } else {
127  $upload_handler = $this->upload_handler_without_chunks;
128  }
129 
130  $actual_value = $resolver->getBestPossibleUploadLimitInBytes($upload_handler, $local_value);
131 
132  $this->assertEquals($expected_result, $actual_value);
133  }
134 
135  protected function getPhpUploadLimitMock(int $upload_limit): PhpUploadLimit
136  {
137  $mock = $this->createMock(PhpUploadLimit::class);
138  $mock->method('getPhpUploadLimitInBytes')->willReturn($upload_limit);
139  return $mock;
140  }
141 
142  protected function getGlobalUploadLimitMock(?int $upload_limit): GlobalUploadLimit
143  {
144  $mock = $this->createMock(GlobalUploadLimit::class);
145  $mock->method('getGlobalUploadLimitInBytes')->willReturn($upload_limit);
146  return $mock;
147  }
148 }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
testUploadLimitResolution(int $php_ini_value, ?int $custom_global_value, ?int $local_value, bool $upload_handler_supports_chunks, int $expected_result,)
foreach($components as $component) $resolver