8
8
use tests \data \model ;
9
9
use tests \data \model \Article ;
10
10
use coderius \yii2UploadFileBehavior \UploadFileBehavior ;
11
+ use yii \helpers \FileHelper ;
12
+ use yii \base \InvalidConfigException ;
11
13
12
14
class UploadFileBehaviorTest extends \tests \TestCase
13
15
{
14
16
15
17
/**
16
- * @inheritdoc
17
- */
18
- public static function setUpBeforeClass ()
19
- {
20
- parent ::setUpBeforeClass ();
21
-
22
- $ _FILES = [
23
- 'User[image] ' => [
24
- 'name ' => 'test-image.jpg ' ,
25
- 'type ' => 'image/jpeg ' ,
26
- 'size ' => 74463 ,
27
- 'tmp_name ' => __DIR__ . '/data/test-image.jpg ' ,
28
- 'error ' => 0 ,
29
- ],
30
- ];
31
- }
18
+ * @inheritdoc
19
+ */
20
+ public static function setUpBeforeClass ()
21
+ {
22
+ parent ::setUpBeforeClass ();
32
23
33
- public function testGetFileInstance ()
24
+ $ _FILES = [
25
+ 'Article[file] ' => [
26
+ 'name ' => 'test-image.jpg ' ,
27
+ 'type ' => 'image/jpeg ' ,
28
+ 'size ' => 74463 ,
29
+ 'tmp_name ' => __DIR__ . '/../data/test-image.jpg ' ,
30
+ 'error ' => 0 ,
31
+ ],
32
+ ];
33
+ }
34
+
35
+ /**
36
+ * Undocumented function
37
+ *
38
+ * @return void
39
+ */
40
+ public static function tearDownAfterClass ()
34
41
{
35
- $ file = UploadedFile:: getInstanceByName ( ' User[image] ' );
36
- $ this -> assertTrue ( $ file instanceof UploadedFile );
42
+ fwrite ( STDOUT , __METHOD__ . "\n" );
43
+ FileHelper:: removeDirectory (Yii:: getAlias ( ' @uploadsPath ' ) );
37
44
}
38
45
39
46
public function testIsFile ()
40
47
{
41
- $ file = UploadedFile::getInstanceByName ('User[image ] ' );
48
+ $ file = UploadedFile::getInstanceByName ('Article[file ] ' );
42
49
$ this ->assertTrue ($ file && $ file ->tempName );
43
50
}
44
51
52
+ public function testGetFileInstance ()
53
+ {
54
+ $ file = UploadedFile::getInstanceByName ('Article[file] ' );
55
+ $ this ->assertTrue ($ file instanceof UploadedFile);
56
+ }
57
+
45
58
/**
46
59
* @dataProvider additionProvider
47
60
*/
48
61
public function testGetNewFileName ($ name , $ filename , $ time )
49
62
{
50
63
$ newFileName = "name " ;
51
- $ file = UploadedFile::getInstanceByName ('User[image ] ' );
64
+ $ file = UploadedFile::getInstanceByName ('Article[file ] ' );
52
65
$ baseName = $ file ->baseName ;
53
66
$ ext = $ file ->extension ;
54
67
@@ -58,7 +71,15 @@ public function testGetNewFileName($name, $filename, $time)
58
71
59
72
$ this ->assertEquals ($ filename , $ result );
60
73
}
61
-
74
+
75
+ // /**
76
+ // * @dataProvider additionProvider
77
+ // */
78
+ // public static function testClasst($name, $filename, $time)
79
+ // {
80
+ // fwrite(STDOUT, $filename . "\n");
81
+ // }
82
+
62
83
public function additionProvider ()
63
84
{
64
85
$ time = time ();
@@ -70,22 +91,80 @@ public function additionProvider()
70
91
];
71
92
}
72
93
73
- public function testUploadImageSaveTrue ()
94
+ public function testUploadImageSaveRecord ()
74
95
{
75
96
$ article = new Article ();
97
+ $ article ->text = 'some text ' ;
98
+ $ article ->file = UploadedFile::getInstanceByName ('Article[file] ' );
99
+ $ res = $ article ->save ();
100
+
101
+ $ this ->assertTrue ($ res );
102
+ $ lastRecord = Article::findOne ($ article ->id );
103
+
104
+ $ this ->assertTrue ($ lastRecord !== null );
105
+
76
106
77
- // $data = [
78
- // 'text' => 'some text',
79
- // 'img_src' => UploadedFile::getInstanceByName('User[image]')
80
- // ];
107
+ }
81
108
109
+ public function testUploadImageFindSavedFile ()
110
+ {
111
+ $ article = new Article ();
82
112
$ article ->text = 'some text ' ;
83
- $ article ->file = UploadedFile::getInstanceByName ('User[image ] ' );
113
+ $ article ->file = UploadedFile::getInstanceByName ('Article[file ] ' );
84
114
$ res = $ article ->save ();
115
+ $ path = Yii::getAlias ('@uploadsPath/ ' . $ article ->id . '/ ' . Article::BIG_SIZE_DIR . '/ ' . $ article ->img_src );
116
+
117
+ $ this ->assertTrue (is_file ($ path ));
118
+ }
85
119
86
- // $this->assertEquals($article->img_src, 'test-image.jpg');
87
- $ this ->assertTrue ($ res );
120
+ /**
121
+ * @dataProvider directoriesProvider
122
+ */
123
+ public function testExceptionNotSetDirectoryConfigNotSet ($ targets , $ ex , $ mes )
124
+ {
125
+ $ this ->expectException ($ ex );
126
+ $ this ->expectExceptionMessage ($ mes );
127
+ $ article = new Article ();
128
+ $ article ->detachBehaviors ();
129
+ $ article ->attachBehavior ('myBehavior ' , [
130
+ 'class ' => UploadFileBehavior::className (),
131
+ 'nameOfAttributeStorage ' => 'img_src ' ,
132
+ 'targets ' => $ targets
133
+ ]);
88
134
}
89
135
136
+ public function directoriesProvider ()
137
+ {
138
+ $ time = time ();
139
+
140
+ return [
141
+ [null , InvalidConfigException::class, 'The "targets" property must be set. ' ],
142
+ [false ,InvalidConfigException::class, 'The "targets" property must be set. ' ],
143
+ ['' , InvalidConfigException::class, 'The "targets" property must be set. ' ],
144
+ ['123 ' ,InvalidConfigException::class, 'The "targets" property must be an array. ' ],
145
+ ];
146
+ }
147
+
148
+ public function testDefaultDeleteImageWithRecord ()
149
+ {
150
+ $ article = new Article ();
151
+ $ article ->text = 'some text ' ;
152
+ $ article ->file = UploadedFile::getInstanceByName ('Article[file] ' );
153
+ $ res = $ article ->save ();
154
+ $ lastRecord = Article::findOne ($ article ->id );
155
+ $ path = Yii::getAlias ('@uploadsPath/ ' . $ article ->id . '/ ' . Article::BIG_SIZE_DIR . '/ ' . $ article ->img_src );
156
+ $ this ->assertTrue (is_file ($ path ));
157
+ $ article ->delete ();
158
+ $ this ->assertTrue (!is_file ($ path ));
159
+ }
160
+
161
+ public function testDefaultBehavior ()
162
+ {
163
+ $ defaultScenario = 'default ' ;
164
+ $ article = new Article ();
165
+ $ behavior = $ article ->getBehavior ('uploadFileBehavior ' );
166
+
167
+ $ this ->assertEquals ($ defaultScenario , $ behavior ->scenarios [0 ]);
168
+ }
90
169
91
170
}
0 commit comments