ILIAS  trunk Revision v11.0_alpha-1723-g8e69f309bab
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
FileUploadImplTestTBD.php
Go to the documentation of this file.
1 <?php
2 
19 namespace ILIAS\FileUpload;
20 
27 
28 require_once('./vendor/composer/vendor/autoload.php');
29 
37 use Mockery;
42 
48 #[BackupGlobals(false)]
49 #[BackupStaticProperties(false)]
50 #[PreserveGlobalState(false)]
51 #[RunTestsInSeparateProcesses]
52 class FileUploadImplTest extends TestCase
53 {
55 
72 
73 
74  #[Test]
75 
76  public function testRegisterWhichShouldSucceed(): void
77  {
78  $processorMock = \Mockery::mock(PreProcessor::class);
79  $this->prePorcessorManagerMock->shouldReceive('with')
80  ->once()
81  ->with($processorMock);
82 
83  $this->subject->register($processorMock);
84  }
85 
86  #[Test]
87 
89  {
90  $processorMock = \Mockery::mock(PreProcessor::class);
91 
92  $this->globalHttpStateMock->shouldReceive('request->getUploadedFiles')
93  ->once()
94  ->andReturn([]);
95 
96  $this->expectException(IllegalStateException::class);
97  $this->expectExceptionMessage('Can not register processor after the upload was processed.');
98 
99  $this->subject->process();
100  $this->subject->register($processorMock);
101  }
102 
103  #[Test]
104 
105  public function testProcessWhichShouldSucceed(): void
106  {
107  $processingResult = new ProcessingStatus(ProcessingStatus::OK, 'All green!');
108  $uploadedFile = Mockery::mock(UploadedFileInterface::class);
109  $uploadedFile
110  ->shouldReceive('getClientFilename')
111  ->once()
112  ->andReturn('hello.txt')
113  ->getMock()
114  ->shouldReceive('getSize')
115  ->once()
116  ->andReturn(10)
117  ->getMock()
118  ->shouldReceive('getClientMediaType')
119  ->once()
120  ->andReturn('text/plain')
121  ->getMock()
122  ->shouldReceive('getError')
123  ->once()
124  ->andReturn(UPLOAD_ERR_OK)
125  ->getMock()
126  ->shouldReceive('getStream')
127  ->twice()
128  ->andReturn(Streams::ofString("Text file content."));
129 
130  $uploadedFiles = [
131  $uploadedFile
132  ];
133 
134  $this->prePorcessorManagerMock->shouldReceive('process')
135  ->withAnyArgs()
136  ->once()
137  ->andReturn($processingResult);
138 
139  $this->globalHttpStateMock->shouldReceive('request->getUploadedFiles')
140  ->once()
141  ->andReturn($uploadedFiles);
142 
143  $this->subject->process();
144  }
145 
146  #[Test]
147 
149  {
150  $uploadedFile = Mockery::mock(UploadedFileInterface::class);
151  $uploadedFile
152  ->shouldReceive('getClientFilename')
153  ->once()
154  ->andReturn('hello.txt')
155  ->getMock()
156  ->shouldReceive('getSize')
157  ->once()
158  ->andReturn(10)
159  ->getMock()
160  ->shouldReceive('getClientMediaType')
161  ->once()
162  ->andReturn('text/plain')
163  ->getMock()
164  ->shouldReceive('getError')
165  ->once()
166  ->andReturn(UPLOAD_ERR_PARTIAL)
167  ->getMock()
168  ->shouldReceive('getStream')
169  ->twice()
170  ->andReturn(Streams::ofString("Text file content."));
171 
172  $uploadedFiles = [
173  $uploadedFile
174  ];
175 
176  $this->globalHttpStateMock->shouldReceive('request->getUploadedFiles')
177  ->once()
178  ->andReturn($uploadedFiles);
179 
180  $this->subject->process();
181 
182  $result = $this->subject->getResults()[0];
183  $this->assertSame(ProcessingStatus::REJECTED, $result->getStatus()->getCode());
184  }
185 
186 
187  #[Test]
188 
189  public function testHasUploadsWithoutUploadedFiles(): void
190  {
191  // No File-Upload Element
192  $this->globalHttpStateMock->shouldReceive('request->getUploadedFiles')
193  ->once()
194  ->andReturn([]);
195  $this->assertFalse($this->subject->hasUploads());
196  }
197 
198  #[Test]
199 
200  public function testHasUploadsWithSingleUploadedFile(): void
201  {
202  $uploadedFile = Mockery::mock(UploadedFileInterface::class);
203 
204  $this->globalHttpStateMock->shouldReceive('request->getUploadedFiles')
205  ->once()
206  ->andReturn([ $uploadedFile ]);
207 
208  $this->assertTrue($this->subject->hasUploads());
209  }
210 
211  #[Test]
212 
214  {
215  $files = [];
216  for ($i = 0; $i < 10; $i++) {
217  $files[] = Mockery::mock(UploadedFileInterface::class);
218  }
219 
220  $this->globalHttpStateMock->shouldReceive('request->getUploadedFiles')
221  ->once()
222  ->andReturn($files);
223 
224  $this->assertTrue($this->subject->hasUploads());
225  }
226 
227 
231  protected function setUp(): void
232  {
233  parent::setUp();
234 
235  $this->prePorcessorManagerMock = \Mockery::mock(PreProcessorManager::class);
236  $this->filesystemsMock = \Mockery::mock(Filesystems::class);
237  $this->globalHttpStateMock = \Mockery::mock(GlobalHttpState::class);
238 
239  $this->subject = new FileUploadImpl($this->prePorcessorManagerMock, $this->filesystemsMock, $this->globalHttpStateMock);
240  }
241 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static ofString(string $string)
Creates a new stream with an initial value.
Definition: Streams.php:41
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...