Skip to content

Commit fdac1e7

Browse files
committed
[TEST] Add unit tests for filterFilesByMimeType to handle various scenarios
1 parent 39c27da commit fdac1e7

File tree

1 file changed

+227
-0
lines changed

1 file changed

+227
-0
lines changed

Tests/Unit/Common/HelperTest.php

Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,231 @@ public function validXmlIsAccepted(): void
5555
self::assertIsObject($node);
5656
self::assertEquals('root', $node->getName());
5757
}
58+
59+
60+
/**
61+
* @test
62+
* @group filterFilesByMimeType
63+
*/
64+
public function filterFilesByMimeTypeHandlesInvalidInput(): void
65+
{
66+
// Empty categories and types
67+
self::assertFalse(Helper::filterFilesByMimeType(
68+
['mimetype' => 'image/jpeg'],
69+
[],
70+
null
71+
));
72+
73+
// Invalid file input
74+
self::assertFalse(Helper::filterFilesByMimeType(
75+
null,
76+
['image'],
77+
null
78+
));
79+
80+
// Missing mime type key
81+
self::assertFalse(Helper::filterFilesByMimeType(
82+
['wrong_key' => 'image/jpeg'],
83+
['image'],
84+
null
85+
));
86+
}
87+
88+
/**
89+
* @test
90+
* @group filterFilesByMimeType
91+
*/
92+
public function filterFilesByMimeTypeAcceptsStandardMimeTypes(): void
93+
{
94+
$file = ['mimetype' => 'image/jpeg'];
95+
96+
self::assertTrue(Helper::filterFilesByMimeType(
97+
$file,
98+
['image']
99+
));
100+
101+
self::assertFalse(Helper::filterFilesByMimeType(
102+
$file,
103+
['video']
104+
));
105+
106+
// Test multiple categories
107+
self::assertTrue(Helper::filterFilesByMimeType(
108+
$file,
109+
['video', 'image']
110+
));
111+
}
112+
113+
/**
114+
* @test
115+
* @group filterFilesByMimeType
116+
*/
117+
public function filterFilesByMimeTypeHandlesCustomDlfTypes(): void
118+
{
119+
$testCases = [
120+
['mimetype' => 'application/vnd.kitodo.iiif'],
121+
['mimetype' => 'application/vnd.netfpx'],
122+
['mimetype' => 'application/vnd.kitodo.zoomify'],
123+
['mimetype' => 'image/jpg']
124+
];
125+
126+
foreach ($testCases as $file) {
127+
self::assertTrue(Helper::filterFilesByMimeType(
128+
$file,
129+
[],
130+
true
131+
));
132+
}
133+
134+
foreach ($testCases as $file) {
135+
self::assertTrue(Helper::filterFilesByMimeType(
136+
$file,
137+
[],
138+
['IIIF', 'IIP', 'ZOOMIFY', 'JPG']
139+
));
140+
}
141+
142+
// Test specific DLF type filtering
143+
$file = ['mimetype' => 'application/vnd.kitodo.iiif'];
144+
self::assertTrue(Helper::filterFilesByMimeType(
145+
$file,
146+
[],
147+
true
148+
));
149+
self::assertFalse(Helper::filterFilesByMimeType(
150+
$file,
151+
[],
152+
['IIP']
153+
));
154+
}
155+
156+
/**
157+
* @test
158+
* @group filterFilesByMimeType
159+
*/
160+
public function filterFilesByMimeTypeHandlesCustomMimeTypeKey(): void
161+
{
162+
$file = ['customKey' => 'image/jpeg'];
163+
164+
self::assertTrue(Helper::filterFilesByMimeType(
165+
$file,
166+
['image'],
167+
null,
168+
'customKey'
169+
));
170+
171+
self::assertFalse(Helper::filterFilesByMimeType(
172+
$file,
173+
['image']
174+
));
175+
}
176+
177+
/**
178+
* @test
179+
* @group filterFilesByMimeType
180+
*/
181+
public function filterFilesByMimeTypeHandlesMixedScenarios(): void
182+
{
183+
// Standard mime type with DLF types enabled
184+
self::assertTrue(Helper::filterFilesByMimeType(
185+
['mimetype' => 'image/jpeg'],
186+
['image'],
187+
['IIIF', 'IIP']
188+
));
189+
190+
// DLF mime type with matching category
191+
self::assertTrue(Helper::filterFilesByMimeType(
192+
['mimetype' => 'application/vnd.kitodo.iiif'],
193+
['application'],
194+
['IIIF']
195+
));
196+
197+
// DLF mime type with non-matching category but allowed DLF type
198+
self::assertTrue(Helper::filterFilesByMimeType(
199+
['mimetype' => 'application/vnd.kitodo.iiif'],
200+
['image'],
201+
['IIIF']
202+
));
203+
}
204+
205+
/**
206+
* @test
207+
* @group filterFilesByMimeType
208+
*/
209+
public function filterFilesByMimeTypeHandlesWrongJPG(): void
210+
{
211+
$wrongJpg = ['mimetype' => 'image/jpg'];
212+
213+
// file with wrong JPG mime type and no custom dlf mime type key
214+
self::assertFalse(Helper::filterFilesByMimeType(
215+
$wrongJpg,
216+
['image'],
217+
[]
218+
));
219+
220+
// file with wrong JPG mime type and custom dlf mime type key
221+
self::assertTrue(Helper::filterFilesByMimeType(
222+
$wrongJpg,
223+
[],
224+
['JPG']
225+
));
226+
227+
// file with wrong JPG mime type in allowed key and custom dlf mime type key
228+
self::assertTrue(Helper::filterFilesByMimeType(
229+
$wrongJpg,
230+
['image'],
231+
['JPG']
232+
));
233+
}
234+
235+
/**
236+
* @test
237+
* @group filterFilesByMimeType
238+
*/
239+
public function filterFilesByMimeTypeHandlesDifferentDlfModeTypes(): void
240+
{
241+
// Test-Setup
242+
$imageFile = ['mimetype' => 'image/jpeg'];
243+
$iiifFile = ['mimetype' => 'application/vnd.kitodo.iiif'];
244+
$iipFile = ['mimetype' => 'application/vnd.netfpx'];
245+
246+
// Test: No DLF MIME Types (only Standard-Types)
247+
self::assertTrue(Helper::filterFilesByMimeType(
248+
$imageFile,
249+
['image'],
250+
null
251+
), 'Standard image type should be accepted when DLF types are null');
252+
253+
self::assertFalse(Helper::filterFilesByMimeType(
254+
$iiifFile,
255+
['image'],
256+
null
257+
), 'DLF type should be rejected when DLF types are null');
258+
259+
// Test: All DLF MIME Types
260+
self::assertTrue(Helper::filterFilesByMimeType(
261+
$iiifFile,
262+
['image'],
263+
true
264+
), 'IIIF should be accepted when all DLF types are enabled');
265+
266+
self::assertTrue(Helper::filterFilesByMimeType(
267+
$iipFile,
268+
['image'],
269+
true
270+
), 'IIP should be accepted when all DLF types are enabled');
271+
272+
// Test: Spezific DLF MIME Types
273+
self::assertTrue(Helper::filterFilesByMimeType(
274+
$iiifFile,
275+
['image'],
276+
['IIIF']
277+
), 'IIIF should be accepted when specifically allowed');
278+
279+
self::assertFalse(Helper::filterFilesByMimeType(
280+
$iipFile,
281+
['image'],
282+
['IIIF']
283+
), 'IIP should be rejected when not in allowed DLF types');
284+
}
58285
}

0 commit comments

Comments
 (0)