Skip to content
This repository was archived by the owner on Oct 31, 2020. It is now read-only.

Commit ce9ace8

Browse files
committed
Add test for save to DB
1 parent 7609a23 commit ce9ace8

7 files changed

+274
-39
lines changed

.travis.yml

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,60 +2,60 @@ language:
22
- php
33

44
env:
5-
- ILLUMINATE_VERSION=5.0.*
5+
- LARAVEL_VERSION=5.0.*
66

77
matrix:
88
include:
99
- php: 5.5
10-
env: ILLUMINATE_VERSION=5.0.*
10+
env: LARAVEL_VERSION=5.0.*
1111
- php: 5.5
12-
env: ILLUMINATE_VERSION=5.1.*
12+
env: LARAVEL_VERSION=5.1.*
1313
- php: 5.5
14-
env: ILLUMINATE_VERSION=5.2.*
14+
env: LARAVEL_VERSION=5.2.*
1515
- php: 5.6
16-
env: ILLUMINATE_VERSION=5.0.*
16+
env: LARAVEL_VERSION=5.0.*
1717
- php: 5.6
18-
env: ILLUMINATE_VERSION=5.1.*
18+
env: LARAVEL_VERSION=5.1.*
1919
- php: 5.6
20-
env: ILLUMINATE_VERSION=5.2.*
20+
env: LARAVEL_VERSION=5.2.*
2121
- php: 5.6
22-
env: ILLUMINATE_VERSION=5.3.*
22+
env: LARAVEL_VERSION=5.3.*
2323
- php: 5.6
24-
env: ILLUMINATE_VERSION=5.4.*
24+
env: LARAVEL_VERSION=5.4.*
2525
- php: 7.0
26-
env: ILLUMINATE_VERSION=5.0.*
26+
env: LARAVEL_VERSION=5.0.*
2727
- php: 7.0
28-
env: ILLUMINATE_VERSION=5.1.*
28+
env: LARAVEL_VERSION=5.1.*
2929
- php: 7.0
30-
env: ILLUMINATE_VERSION=5.2.*
30+
env: LARAVEL_VERSION=5.2.*
3131
- php: 7.0
32-
env: ILLUMINATE_VERSION=5.3.*
32+
env: LARAVEL_VERSION=5.3.*
3333
- php: 7.0
34-
env: ILLUMINATE_VERSION=5.4.*
34+
env: LARAVEL_VERSION=5.4.*
3535
- php: 7.1
36-
env: ILLUMINATE_VERSION=5.0.*
36+
env: LARAVEL_VERSION=5.0.*
3737
- php: 7.1
38-
env: ILLUMINATE_VERSION=5.1.*
38+
env: LARAVEL_VERSION=5.1.*
3939
- php: 7.1
40-
env: ILLUMINATE_VERSION=5.2.*
40+
env: LARAVEL_VERSION=5.2.*
4141
- php: 7.1
42-
env: ILLUMINATE_VERSION=5.3.*
42+
env: LARAVEL_VERSION=5.3.*
4343
- php: 7.1
44-
env: ILLUMINATE_VERSION=5.4.*
44+
env: LARAVEL_VERSION=5.4.*
4545
- php: hhvm
46-
env: ILLUMINATE_VERSION=5.0.*
46+
env: LARAVEL_VERSION=5.0.*
4747
- php: hhvm
48-
env: ILLUMINATE_VERSION=5.1.*
48+
env: LARAVEL_VERSION=5.1.*
4949
- php: hhvm
50-
env: ILLUMINATE_VERSION=5.2.*
50+
env: LARAVEL_VERSION=5.2.*
5151
- php: hhvm
52-
env: ILLUMINATE_VERSION=5.3.*
52+
env: LARAVEL_VERSION=5.3.*
5353
- php: hhvm
54-
env: ILLUMINATE_VERSION=5.4.*
54+
env: LARAVEL_VERSION=5.4.*
5555

5656
before_install:
5757
- travis_retry composer self-update
58-
- travis_retry composer require "laravel/framework:${ILLUMINATE_VERSION}" --no-interaction --no-update
58+
- travis_retry composer require "laravel/framework:${LARAVEL_VERSION}" --no-interaction --no-update
5959

6060
install:
6161
- travis_retry composer update --prefer-source --no-interaction

README.md

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,135 @@ Illuminate\Support\Collection Object
800800
)
801801
```
802802

803+
#### ImageuploadModel
804+
805+
```php
806+
Matriphe\Imageupload\ImageuploadModel Object
807+
(
808+
[thumbnailKeys:protected] => Array
809+
(
810+
[0] => path
811+
[1] => dir
812+
[2] => filename
813+
[3] => filepath
814+
[4] => filedir
815+
[5] => width
816+
[6] => height
817+
[7] => filesize
818+
)
819+
820+
[fillable:protected] => Array
821+
(
822+
[0] => original_filename
823+
[1] => original_filepath
824+
[2] => original_filedir
825+
[3] => original_extension
826+
[4] => original_mime
827+
[5] => original_filesize
828+
[6] => original_width
829+
[7] => original_height
830+
[8] => path
831+
[9] => dir
832+
[10] => filename
833+
[11] => basename
834+
[12] => exif
835+
)
836+
837+
[connection:protected] =>
838+
[table:protected] => image_uploads
839+
[primaryKey:protected] => id
840+
[perPage:protected] => 15
841+
[incrementing] => 1
842+
[timestamps] => 1
843+
[attributes:protected] => Array
844+
(
845+
[original_filename] => IMG_20170619_195131.jpg
846+
[original_filepath] => /Volumes/data/Development/php/laravel/51/public/uploads/images/IMG_20170619_195131.jpg
847+
[original_filedir] => uploads/images/IMG_20170619_195131.jpg
848+
[original_extension] => jpg
849+
[original_mime] => image/jpeg
850+
[original_filesize] => 1379716
851+
[original_width] => 2592
852+
[original_height] => 4608
853+
[exif] => {"FileName":"php19qj3X","FileDateTime":1500906046,"FileSize":1379716,"FileType":2,"MimeType":"image\/jpeg","SectionsFound":"ANY_TAG, IFD0, THUMBNAIL, EXIF, GPS, INTEROP","COMPUTED":{"html":"width=\"2592\" height=\"4608\"","Height":4608,"Width":2592,"IsColor":1,"ByteOrderMotorola":1,"ApertureFNumber":"f\/2.0","Thumbnail.FileType":2,"Thumbnail.MimeType":"image\/jpeg"},"Make":"Xiaomi","Model":"Redmi Note3","XResolution":"72\/1","YResolution":"72\/1","ResolutionUnit":2,"Software":"kenzo-user 6.0.1 MMB29M 7.6.7 release-keys","DateTime":"2017:06:19 19:51:31","YCbCrPositioning":1,"Exif_IFD_Pointer":234,"GPS_IFD_Pointer":718,"THUMBNAIL":{"Compression":6,"XResolution":"72\/1","YResolution":"72\/1","ResolutionUnit":2,"JPEGInterchangeFormat":898,"JPEGInterchangeFormatLength":15696},"ExposureTime":"1\/33","FNumber":"200\/100","ExposureProgram":0,"ISOSpeedRatings":854,"ExifVersion":"0220","DateTimeOriginal":"2017:06:19 19:51:31","DateTimeDigitized":"2017:06:19 19:51:31","ComponentsConfiguration":"\u0001\u0002\u0003\u0000","ShutterSpeedValue":"5058\/1000","ApertureValue":"200\/100","BrightnessValue":"300\/100","MeteringMode":1,"Flash":16,"FocalLength":"357\/100","SubSecTime":"123298","SubSecTimeOriginal":"123298","SubSecTimeDigitized":"123298","FlashPixVersion":"0100","ColorSpace":1,"ExifImageWidth":2592,"ExifImageLength":4608,"InteroperabilityOffset":687,"SensingMethod":2,"SceneType":"\u0001","ExposureMode":0,"WhiteBalance":0,"FocalLengthIn35mmFilm":4,"SceneCaptureType":0,"GPSAltitudeRef":"200\/100","GPSTimeStamp":["12\/1","51\/1","30\/1"],"GPSDateStamp":"2017:06:19","InterOperabilityIndex":"R98","InterOperabilityVersion":"0100"}
854+
[path] => /Volumes/data/Development/php/laravel/51/public/uploads/images
855+
[dir] => uploads/images
856+
[filename] => IMG_20170619_195131.jpg
857+
[basename] => IMG_20170619_195131
858+
[updated_at] => 2017-07-24 21:20:53
859+
[created_at] => 2017-07-24 21:20:53
860+
[id] => 1
861+
)
862+
863+
[original:protected] => Array
864+
(
865+
[original_filename] => IMG_20170619_195131.jpg
866+
[original_filepath] => /Volumes/data/Development/php/laravel/51/public/uploads/images/IMG_20170619_195131.jpg
867+
[original_filedir] => uploads/images/IMG_20170619_195131.jpg
868+
[original_extension] => jpg
869+
[original_mime] => image/jpeg
870+
[original_filesize] => 1379716
871+
[original_width] => 2592
872+
[original_height] => 4608
873+
[exif] => {"FileName":"php19qj3X","FileDateTime":1500906046,"FileSize":1379716,"FileType":2,"MimeType":"image\/jpeg","SectionsFound":"ANY_TAG, IFD0, THUMBNAIL, EXIF, GPS, INTEROP","COMPUTED":{"html":"width=\"2592\" height=\"4608\"","Height":4608,"Width":2592,"IsColor":1,"ByteOrderMotorola":1,"ApertureFNumber":"f\/2.0","Thumbnail.FileType":2,"Thumbnail.MimeType":"image\/jpeg"},"Make":"Xiaomi","Model":"Redmi Note3","XResolution":"72\/1","YResolution":"72\/1","ResolutionUnit":2,"Software":"kenzo-user 6.0.1 MMB29M 7.6.7 release-keys","DateTime":"2017:06:19 19:51:31","YCbCrPositioning":1,"Exif_IFD_Pointer":234,"GPS_IFD_Pointer":718,"THUMBNAIL":{"Compression":6,"XResolution":"72\/1","YResolution":"72\/1","ResolutionUnit":2,"JPEGInterchangeFormat":898,"JPEGInterchangeFormatLength":15696},"ExposureTime":"1\/33","FNumber":"200\/100","ExposureProgram":0,"ISOSpeedRatings":854,"ExifVersion":"0220","DateTimeOriginal":"2017:06:19 19:51:31","DateTimeDigitized":"2017:06:19 19:51:31","ComponentsConfiguration":"\u0001\u0002\u0003\u0000","ShutterSpeedValue":"5058\/1000","ApertureValue":"200\/100","BrightnessValue":"300\/100","MeteringMode":1,"Flash":16,"FocalLength":"357\/100","SubSecTime":"123298","SubSecTimeOriginal":"123298","SubSecTimeDigitized":"123298","FlashPixVersion":"0100","ColorSpace":1,"ExifImageWidth":2592,"ExifImageLength":4608,"InteroperabilityOffset":687,"SensingMethod":2,"SceneType":"\u0001","ExposureMode":0,"WhiteBalance":0,"FocalLengthIn35mmFilm":4,"SceneCaptureType":0,"GPSAltitudeRef":"200\/100","GPSTimeStamp":["12\/1","51\/1","30\/1"],"GPSDateStamp":"2017:06:19","InterOperabilityIndex":"R98","InterOperabilityVersion":"0100"}
874+
[path] => /Volumes/data/Development/php/laravel/51/public/uploads/images
875+
[dir] => uploads/images
876+
[filename] => IMG_20170619_195131.jpg
877+
[basename] => IMG_20170619_195131
878+
[updated_at] => 2017-07-24 21:20:53
879+
[created_at] => 2017-07-24 21:20:53
880+
[id] => 1
881+
)
882+
883+
[relations:protected] => Array
884+
(
885+
)
886+
887+
[hidden:protected] => Array
888+
(
889+
)
890+
891+
[visible:protected] => Array
892+
(
893+
)
894+
895+
[appends:protected] => Array
896+
(
897+
)
898+
899+
[guarded:protected] => Array
900+
(
901+
[0] => *
902+
)
903+
904+
[dates:protected] => Array
905+
(
906+
)
907+
908+
[dateFormat:protected] =>
909+
[casts:protected] => Array
910+
(
911+
)
912+
913+
[touches:protected] => Array
914+
(
915+
)
916+
917+
[observables:protected] => Array
918+
(
919+
)
920+
921+
[with:protected] => Array
922+
(
923+
)
924+
925+
[morphClass:protected] =>
926+
[exists] => 1
927+
[wasRecentlyCreated] => 1
928+
)
929+
```
930+
931+
803932
## Changelog
804933

805934
### Version 6.x

composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
],
1616
"require": {
1717
"php": ">=5.5.9",
18-
"laravel/framework": "5.*",
1918
"intervention/image": "^2.4",
20-
"nesbot/carbon": "^1.22"
19+
"laravel/framework": "5.*"
2120
},
2221
"require-dev": {
2322
"phpunit/phpunit": "~4.0",
2423
"mockery/mockery": "^0.9.9",
25-
"orchestra/testbench": "~3.0"
24+
"orchestra/testbench": "~3.0",
25+
"orchestra/database": "~3.0"
2626
},
2727
"suggest": {},
2828
"autoload": {

phpunit.xml.dist

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,12 @@
1515
<directory suffix=".php">./tests/</directory>
1616
</testsuite>
1717
</testsuites>
18+
<php>
19+
<env name="APP_ENV" value="testing"/>
20+
</php>
21+
<filter>
22+
<whitelist addUncoveredFilesFromWhitelist="false">
23+
<directory suffix=".php">src/</directory>
24+
</whitelist>
25+
</filter>
1826
</phpunit>

src/Imageupload.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ private function setNewFilename($newfilename = null)
223223
$newfilename = pathinfo($originalFilename, PATHINFO_FILENAME);
224224
}
225225

226-
$this->results['basename'] = $newfilename;
226+
$this->results['basename'] = (string) $newfilename;
227227
$this->results['filename'] = $newfilename.'.'.$extension;
228228

229229
return $this;
@@ -250,8 +250,8 @@ private function saveOriginalFile(UploadedFile $uploadedFile)
250250

251251
$image->save($targetFilepath, $this->quality);
252252

253-
$this->results['original_width'] = $image->width();
254-
$this->results['original_height'] = $image->height();
253+
$this->results['original_width'] = (int) $image->width();
254+
$this->results['original_height'] = (int) $image->height();
255255
$this->results['original_filepath'] = $targetFilepath;
256256
$this->results['original_filedir'] = $this->getRelativePath($targetFilepath);
257257
} catch (Exception $e) {
@@ -273,7 +273,7 @@ private function getUploadedOriginalFileProperties(UploadedFile $uploadedFile)
273273
$this->results['original_filepath'] = $this->getRelativePath($uploadedFile->getRealPath());
274274
$this->results['original_filedir'] = $uploadedFile->getRealPath();
275275
$this->results['original_extension'] = $uploadedFile->getClientOriginalExtension();
276-
$this->results['original_filesize'] = $uploadedFile->getSize();
276+
$this->results['original_filesize'] = (int) $uploadedFile->getSize();
277277
$this->results['original_mime'] = $uploadedFile->getMimeType();
278278

279279
return $this;
@@ -317,10 +317,10 @@ private function resizeCropImage(UploadedFile $uploadedFile, $targetFilepath, $w
317317
'filename' => pathinfo($targetFilepath, PATHINFO_BASENAME),
318318
'filepath' => $targetFilepath,
319319
'filedir' => $this->getRelativePath($targetFilepath),
320-
'width' => $image->width(),
321-
'height' => $image->height(),
322-
'filesize' => $image->filesize(),
323-
'is_squared' => $squared,
320+
'width' => (int) $image->width(),
321+
'height' => (int) $image->height(),
322+
'filesize' => (int) $image->filesize(),
323+
'is_squared' => (bool) $squared,
324324
];
325325
} catch (Exception $e) {
326326
throw new ImageuploadException($e->getMessage());

src/ImageuploadModel.php

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,43 @@ public function __construct(array $attributes = [])
2121

2222
$this->setTable($tableName);
2323
}
24+
25+
/**
26+
* The attributes that should be cast to native types.
27+
*
28+
* @var array
29+
*/
30+
protected $casts = [
31+
'original_filename' => 'string',
32+
'original_filepath' => 'string',
33+
'original_filedir' => 'string',
34+
'original_extension' => 'string',
35+
'original_mime' => 'string',
36+
'original_filesize' => 'integer',
37+
'original_width' => 'integer',
38+
'original_height' => 'integer',
39+
'path' => 'string',
40+
'dir' => 'string',
41+
'filename' => 'string',
42+
'basename' => 'string',
43+
'exif' => 'array',
44+
];
2445

2546
/**
2647
* The keys used in thumbnail.
2748
*
2849
* @var array
2950
*/
3051
protected $thumbnailKeys = [
31-
'path', 'dir', 'filename', 'filepath', 'filedir', 'width', 'height',
32-
'filesize',
52+
'path' => 'string',
53+
'dir' => 'string',
54+
'filename' => 'string',
55+
'filepath' => 'string',
56+
'filedir' => 'string',
57+
'width' => 'integer',
58+
'height' => 'integer',
59+
'filesize' => 'integer',
60+
'is_squared' => 'boolean',
3361
];
3462

3563
/**
@@ -61,13 +89,37 @@ public function getDimensionKeys()
6189
}
6290

6391
foreach ($dimensions as $name => $dimension) {
64-
foreach ($this->thumbnailKeys as $key) {
92+
foreach ($this->thumbnailKeys as $key => $cast) {
6593
array_push($fillable, $name.'_'.$key);
6694
}
6795
}
6896

6997
return $fillable;
7098
}
99+
100+
/**
101+
* Get the casts array.
102+
*
103+
* @return array
104+
*/
105+
public function getCasts()
106+
{
107+
$this->casts = parent::getCasts();
108+
109+
$dimensions = Config::get('imageupload.dimensions');
110+
111+
if (empty($dimensions) || ! is_array($dimensions)) {
112+
return $this->casts;
113+
}
114+
115+
foreach ($dimensions as $name => $dimension) {
116+
foreach ($this->thumbnailKeys as $key => $cast) {
117+
$this->casts[$name.'_'.$key] = $cast;
118+
}
119+
}
120+
121+
return $this->casts;
122+
}
71123

72124
/**
73125
* Get the fillable attributes for the model.

0 commit comments

Comments
 (0)