3
3
* $RCSfile: CustomThumbnailOptionTest.class,v $
5
5
* Gallery - a web based photo album viewer and editor
6
* Copyright (C) 2000-2005 Bharat Mediratta
6
* Copyright (C) 2000-2006 Bharat Mediratta
8
8
* This program is free software; you can redistribute it and/or modify
9
9
* it under the terms of the GNU General Public License as published by
20
20
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
23
* @version $Revision: 1.13 $ $Date: 2005/08/23 03:49:56 $
23
* @version $Revision: 1.16 $ $Date: 2006/01/10 04:43:09 $
24
24
* @package Thumbnail
25
25
* @subpackage PHPUnit
26
26
* @author Alan Harder <alan.harder@sun.com>
30
30
* Load required classes
32
GalleryCoreApi::relativeRequireOnce('lib/tools/phpunit/ItemEditOptionTestCase.class');
33
GalleryCoreApi::relativeRequireOnce('modules/thumbnail/classes/ThumbnailHelper.class');
32
GalleryCoreApi::requireOnce('lib/tools/phpunit/ItemEditOptionTestCase.class');
33
GalleryCoreApi::requireOnce('modules/thumbnail/classes/ThumbnailHelper.class');
36
36
* CustomThumbnailOption tests
50
50
$ret = GalleryCoreApi::registerFactoryImplementation(
51
51
'GalleryToolkit', 'CustomThumbnailOptionTestToolkit', 'CustomThumbnailOptionTestToolkit',
52
'modules/thumbnail/test/phpunit/CustomThumbnailOptionTest.class', 'thumbnailTest', null);
53
if ($ret->isError()) {
52
'modules/thumbnail/test/phpunit/CustomThumbnailOptionTest.class', 'thumbnail', null);
54
54
print $ret->getAsHtml();
55
55
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
60
60
array('image/test'), 'thumbnail',
61
61
array(array('type' => 'int', 'description' => 'foo'),
62
62
array('type' => 'int', 'description' => 'foo')), 'test-description');
63
if ($ret->isError()) {
64
print $ret->getAsHtml();
65
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
67
$ret = GalleryCoreApi::registerToolkitOperation('CustomThumbnailOptionTestToolkit',
68
array('image/test'), 'composite',
69
array(array('type' => 'string', 'description' => 'foo'),
70
array('type' => 'string', 'description' => 'foo'),
71
array('type' => 'int', 'description' => 'foo'),
72
array('type' => 'int', 'description' => 'foo'),
73
array('type' => 'string', 'description' => 'foo'),
74
array('type' => 'int', 'description' => 'foo'),
75
array('type' => 'int', 'description' => 'foo')), 'test-description');
64
77
print $ret->getAsHtml();
65
78
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
68
81
list ($ret, $this->_album) = $this->_createRandomAlbum($this->_getRootId());
69
if ($ret->isError()) {
70
83
print $ret->getAsHtml();
71
84
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
75
88
list ($ret, $this->_item) = $this->_createRandomDataItem($this->_album->getId(),
76
89
'text/test', array(), __FILE__, 'GalleryUnknownItem');
77
if ($ret->isError()) {
78
91
print $ret->getAsHtml();
79
92
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
82
95
list ($ret, $this->_image) = $this->_createRandomDataItem($this->_album->getId(),
83
96
'image/test', array(), __FILE__, 'GalleryPhotoItem');
84
if ($ret->isError()) {
85
98
print $ret->getAsHtml();
86
99
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
89
102
list ($ret, $this->_derivative) =
90
103
$this->_createDerivative($this->_image, $this->_image->getId(),
91
DERIVATIVE_TYPE_IMAGE_THUMBNAIL, 'thumbnail|200', 'image/test');
92
if ($ret->isError()) {
104
DERIVATIVE_TYPE_IMAGE_THUMBNAIL, 'rotate|90;crop|20,20,50,50;thumbnail|200;' .
105
'composite|path/test.png,image/png,20,20,top-left,0,0;unknownop|10', 'image/test');
93
107
print $ret->getAsHtml();
94
108
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
99
113
$form = array('name' => array(1 => 'test.gif'),
100
114
'type' => array(1 => 'image/gif'),
101
115
'tmp_name' => array(1 =>
102
dirname(__FILE__) . '/../../../core/test/data/test1.gif'));
116
GalleryCoreApi::getPluginBaseDir('module', 'core')
117
. 'modules/core/test/data/test1.jpg'));
104
119
list ($error, $warning) = $this->_handleRequestAfterEdit($form, $this->_item);
105
120
$this->assertEquals(array('form[CustomThumbnailOption][error][imageMime]'), $error);
111
126
$form = array('name' => array(1 => 'test.jpg'),
112
127
'type' => array(1 => 'image/jpeg'),
113
128
'tmp_name' => array(1 =>
114
dirname(__FILE__) . '/../../../core/test/data/test1.jpg'));
129
GalleryCoreApi::getPluginBaseDir('module', 'core')
130
. 'modules/core/test/data/test1.jpg'));
116
132
$result = $this->_handleRequestAfterEdit($form, $this->_item);
117
133
$this->assertEquals(array(array(), array()), $result);
119
135
list ($ret, $thumbnailImage) = ThumbnailHelper::fetchThumbnail($this->_item->getId());
120
if ($ret->isError()) {
121
137
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
123
139
$this->assert(isset($thumbnailImage), 'thumbnailImage');
125
141
list ($ret, $thumbnails) =
126
142
GalleryCoreApi::fetchThumbnailsByItemIds(array($this->_item->getId()));
127
if ($ret->isError()) {
128
144
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
130
146
$this->assertEquals(array($this->_item->getId()), array_keys($thumbnails), 'derivative');
138
154
$this->assertEquals(array(array(), array()), $result);
140
156
list ($ret, $thumbnailImage) = ThumbnailHelper::fetchThumbnail($this->_item->getId());
141
if ($ret->isError()) {
142
158
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
144
160
$this->assert(!isset($thumbnailImage), 'removed thumbnailImage');
146
162
list ($ret, $thumbnails) =
147
163
GalleryCoreApi::fetchThumbnailsByItemIds(array($this->_item->getId()));
148
if ($ret->isError()) {
149
165
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
151
167
$this->assertEquals(array(), $thumbnails, 'removed derivative');
156
172
$form = array('name' => array(1 => 'test.jpg'),
157
173
'type' => array(1 => 'image/jpeg'),
158
174
'tmp_name' => array(1 =>
159
dirname(__FILE__) . '/../../../core/test/data/test1.jpg'));
175
GalleryCoreApi::getPluginBaseDir('module', 'core')
176
. 'modules/core/test/data/test1.jpg'));
161
178
$result = $this->_handleRequestAfterEdit($form, $this->_item);
162
179
$this->assertEquals(array(array(), array()), $result);
164
181
list ($ret, $thumbnailImage) = ThumbnailHelper::fetchThumbnail($this->_item->getId());
165
if ($ret->isError()) {
166
183
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
168
185
$this->assert(isset($thumbnailImage), 'thumbnailImage');
170
187
list ($ret, $thumbnails) =
171
188
GalleryCoreApi::fetchThumbnailsByItemIds(array($this->_item->getId()));
172
if ($ret->isError()) {
173
190
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
175
192
$this->assertEquals(array($this->_item->getId()), array_keys($thumbnails), 'derivative');
180
197
/* Delete thumbnail from item and ensure ThumbnailImage is deleted too */
181
198
$ret = GalleryCoreApi::deleteEntityById($thumbnail->getId());
182
if ($ret->isError()) {
183
200
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
186
203
list ($ret, $thumbnailImage) = ThumbnailHelper::fetchThumbnail($this->_item->getId());
187
if ($ret->isError()) {
188
205
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
190
207
$this->assert(!isset($thumbnailImage), 'thumbnailImage should have been deleted');
192
209
if (isset($thumbnailImage)) {
193
210
/* In case test failed, delete ThumbnailImage */
194
211
$ret = GalleryCoreApi::deleteEntityById($thumbnailImage->getId());
195
if ($ret->isError()) {
196
213
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
203
220
$form = array('name' => array(1 => 'test.jpg'),
204
221
'type' => array(1 => 'image/jpeg'),
205
222
'tmp_name' => array(1 =>
206
dirname(__FILE__) . '/../../../core/test/data/test1.jpg'));
223
GalleryCoreApi::getPluginBaseDir('module', 'core')
224
. 'modules/core/test/data/test1.jpg'));
208
226
$result = $this->_handleRequestAfterEdit($form, $this->_image);
209
227
$this->assertEquals(array(array(), array()), $result);
211
229
list ($ret, $thumbnailImage) = ThumbnailHelper::fetchThumbnail($this->_image->getId());
212
if ($ret->isError()) {
213
231
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
215
233
$this->assert(isset($thumbnailImage), 'thumbnailImage');
217
235
list ($ret, $thumbnails) =
218
236
GalleryCoreApi::fetchThumbnailsByItemIds(array($this->_image->getId()));
219
if ($ret->isError()) {
220
238
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
222
240
$this->assertEquals(array($this->_image->getId()), array_keys($thumbnails), 'derivative');
223
241
$thumbnail = array_shift($thumbnails);
224
242
$this->assertEquals($thumbnailImage->getId(),
225
243
$thumbnail->getDerivativeSourceId(), 'source');
244
$this->assertEquals('thumbnail|200;composite|path/test.png,image/png,20,20,top-left,0,0',
245
$thumbnail->getDerivativeOperations(),
246
'operations should keep thumbnail,composite and drop others');
227
248
/* Remove custom thumbnail.. */
228
249
$form = array('CustomThumbnailOption' => array('delete' => '1'));
230
251
$this->assertEquals(array(array(), array()), $result);
232
253
list ($ret, $thumbnailImage) = ThumbnailHelper::fetchThumbnail($this->_image->getId());
233
if ($ret->isError()) {
234
255
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
236
257
$this->assert(!isset($thumbnailImage), 'removed thumbnailImage');
238
259
list ($ret, $thumbnails) =
239
260
GalleryCoreApi::fetchThumbnailsByItemIds(array($this->_image->getId()));
240
if ($ret->isError()) {
241
262
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
243
264
$this->assertEquals(array($this->_image->getId()),
244
265
array_keys($thumbnails), 'got derivative');
245
$thumbnail = array_shift($thumbnails);
246
$this->assertEquals($this->_image->getId(),
247
$thumbnail->getDerivativeSourceId(), 'got source');
266
if (!empty($thumbnails)) {
267
$thumbnail = array_shift($thumbnails);
268
$this->assertEquals($this->_image->getId(),
269
$thumbnail->getDerivativeSourceId(), 'got source');
271
'thumbnail|200;composite|path/test.png,image/png,20,20,top-left,0,0',
272
$thumbnail->getDerivativeOperations(),
273
'operations should keep thumbnail,composite and drop others');
250
277
function testAlbumHighlight() {
252
279
$form = array('name' => array(1 => 'test.jpg'),
253
280
'type' => array(1 => 'application/unknown'),
254
281
'tmp_name' => array(1 =>
255
dirname(__FILE__) . '/../../../core/test/data/test1.jpg'));
282
GalleryCoreApi::getPluginBaseDir('module', 'core')
283
. 'modules/core/test/data/test1.jpg'));
257
285
$result = $this->_handleRequestAfterEdit($form, $this->_album);
258
286
$this->assertEquals(array(array(), array()), $result);
260
288
list ($ret, $thumbnailImage) = ThumbnailHelper::fetchThumbnail($this->_album->getId());
261
if ($ret->isError()) {
262
290
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
264
292
if (!isset($thumbnailImage)) {
269
297
list ($ret, $thumbnails) =
270
298
GalleryCoreApi::fetchThumbnailsByItemIds(array($this->_album->getId()));
271
if ($ret->isError()) {
272
300
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
274
302
$this->assertEquals(array($this->_album->getId()), array_keys($thumbnails), 'highlight');
282
310
$this->assertEquals(array(array(), array()), $result);
284
312
list ($ret, $thumbnailImage) = ThumbnailHelper::fetchThumbnail($this->_album->getId());
285
if ($ret->isError()) {
286
314
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
288
316
$this->assert(!isset($thumbnailImage), 'removed thumbnailImage');
290
318
list ($ret, $thumbnails) =
291
319
GalleryCoreApi::fetchThumbnailsByItemIds(array($this->_album->getId()));
292
if ($ret->isError()) {
293
321
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
295
323
$this->assertEquals(array($this->_album->getId()),
309
337
$form = array('name' => array(1 => 'test.jpg'),
310
338
'type' => array(1 => 'image/jpeg'),
311
339
'tmp_name' => array(1 =>
312
dirname(__FILE__) . '/../../../core/test/data/test1.jpg'));
340
GalleryCoreApi::getPluginBaseDir('module', 'core')
341
. 'modules/core/test/data/test1.jpg'));
314
343
$result = $this->_handleRequestAfterEdit($form, $album);
315
344
$this->assertEquals(array(array(), array()), $result);
317
346
list ($ret, $thumbnailImage) = ThumbnailHelper::fetchThumbnail($album->getId());
318
if ($ret->isError()) {
319
348
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
321
350
$this->assert(isset($thumbnailImage), 'thumbnailImage');
323
352
list ($ret, $thumbnails) = GalleryCoreApi::fetchThumbnailsByItemIds(array($album->getId()));
324
if ($ret->isError()) {
325
354
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
327
356
$this->assertEquals(array($album->getId()), array_keys($thumbnails), 'highlight');
335
364
$this->assertEquals(array(array(), array()), $result);
337
366
list ($ret, $thumbnailImage) = ThumbnailHelper::fetchThumbnail($album->getId());
338
if ($ret->isError()) {
339
368
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
341
370
$this->assert(!isset($thumbnailImage), 'removed thumbnailImage');
343
372
list ($ret, $thumbnails) = GalleryCoreApi::fetchThumbnailsByItemIds(array($album->getId()));
344
if ($ret->isError()) {
345
374
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
347
376
$this->assertEquals(array(), $thumbnails, 'no highlight');
353
382
$form = array('name' => array(1 => 'test.jpg'),
354
383
'type' => array(1 => 'image/jpeg'),
355
384
'tmp_name' => array(1 =>
356
dirname(__FILE__) . '/../../../core/test/data/test1.jpg'));
385
GalleryCoreApi::getPluginBaseDir('module', 'core')
386
. 'modules/core/test/data/test1.jpg'));
358
388
$result = $this->_handleRequestAfterEdit($form, $this->_album);
359
389
$this->assertEquals(array(array(), array()), $result);
361
391
/* Call GalleryCoreApi::guaranteeAlbumHasThumbnail */
362
392
list ($ret, $success) = GalleryCoreApi::guaranteeAlbumHasThumbnail($this->_album->getId());
363
if ($ret->isError()) {
364
394
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
366
396
$this->assert($success, 'guarantee');
368
398
list ($ret, $thumbnailImage) = ThumbnailHelper::fetchThumbnail($this->_album->getId());
369
if ($ret->isError()) {
370
400
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
372
402
$this->assert(isset($thumbnailImage), 'thumbnailImage');
374
404
list ($ret, $thumbnails) =
375
405
GalleryCoreApi::fetchThumbnailsByItemIds(array($this->_album->getId()));
376
if ($ret->isError()) {
377
407
return $this->failWithStatus($ret->wrap(__FILE__, __LINE__));
379
409
$this->assertEquals(array($this->_album->getId()), array_keys($thumbnails), 'highlight');