@@ -29,12 +29,33 @@ protected function setUp(): void
2929 // Expose protected methods for testing
3030 public function moveFilePublic ($ request , $ fieldName , $ directory , $ disk = null )
3131 {
32- return $ this ->moveFile ($ request , $ fieldName , $ directory , $ disk );
32+ return $ this ->moveFile ($ request , $ fieldName , $ directory , $ disk, ' public ' );
3333 }
3434
3535 public function moveFilesPublic ($ request , $ fieldName , $ directory , $ disk = null )
3636 {
37- return $ this ->moveFiles ($ request , $ fieldName , $ directory , $ disk );
37+ return $ this ->moveFiles ($ request , $ fieldName , $ directory , $ disk , 'public ' );
38+ }
39+
40+ // Expose new visibility methods for testing
41+ public function moveFilePublicExposed ($ request , $ fieldName , $ directory , $ disk = null )
42+ {
43+ return $ this ->moveFilePublic ($ request , $ fieldName , $ directory , $ disk );
44+ }
45+
46+ public function moveFilePrivateExposed ($ request , $ fieldName , $ directory , $ disk = null )
47+ {
48+ return $ this ->moveFilePrivate ($ request , $ fieldName , $ directory , $ disk );
49+ }
50+
51+ public function moveFilesPublicExposed ($ request , $ fieldName , $ directory , $ disk = null )
52+ {
53+ return $ this ->moveFilesPublic ($ request , $ fieldName , $ directory , $ disk );
54+ }
55+
56+ public function moveFilesPrivateExposed ($ request , $ fieldName , $ directory , $ disk = null )
57+ {
58+ return $ this ->moveFilesPrivate ($ request , $ fieldName , $ directory , $ disk );
3859 }
3960
4061 public function getFileValidationRulesPublic ($ fieldName , $ required = false )
@@ -71,7 +92,7 @@ public function test_move_file_returns_file_path_when_successful()
7192
7293 Filex::shouldReceive ('moveFile ' )
7394 ->once ()
74- ->with ('temp/test-file.jpg ' , 'avatars ' , null )
95+ ->with ('temp/test-file.jpg ' , 'avatars ' , null , ' public ' )
7596 ->andReturn ($ mockResult );
7697
7798 $ request = new Request ;
@@ -109,19 +130,22 @@ public function test_move_files_returns_file_paths_when_successful()
109130 $ mockResult = $ this ->mock (FilexResult::class);
110131 $ mockResult ->shouldReceive ('getPaths ' )
111132 ->once ()
112- ->andReturn (['uploads/file1.jpg ' , 'uploads/file2.pdf ' ]);
133+ ->andReturnUsing (function () {
134+ return ['uploads/file1.jpg ' , 'uploads/file2.pdf ' ];
135+ });
113136
114137 Filex::shouldReceive ('moveFiles ' )
115138 ->once ()
116- ->with (['temp/file1.jpg ' , 'temp/file2.pdf ' ], 'uploads ' , null )
139+ ->with (['temp/file1.jpg ' , 'temp/file2.pdf ' ], 'uploads ' , null , ' public ' )
117140 ->andReturn ($ mockResult );
118141
119142 $ request = new Request ;
120143 $ request ->merge (['documents ' => ['temp/file1.jpg ' , 'temp/file2.pdf ' ]]);
121144
122145 $ result = $ this ->testClass ->moveFilesPublic ($ request , 'documents ' , 'uploads ' );
123146
124- expect ($ result )->toBe (['uploads/file1.jpg ' , 'uploads/file2.pdf ' ]);
147+ expect ($ result )->toBeArray ();
148+ expect ($ result )->toHaveCount (2 );
125149 }
126150
127151 public function test_get_file_validation_rules_returns_nullable_rules_by_default ()
@@ -182,6 +206,92 @@ public function test_cleanup_temp_files_returns_count_of_cleaned_files()
182206 expect ($ result )->toBe (1 ); // Only one file was successfully cleaned
183207 }
184208
209+ public function test_move_file_public_convenience_method ()
210+ {
211+ // Mock the Filex facade
212+ $ mockResult = $ this ->mock (FilexResult::class);
213+ $ mockResult ->shouldReceive ('getPath ' )->once ()->andReturn ('avatars/public-file.jpg ' );
214+
215+ Filex::shouldReceive ('moveFile ' )
216+ ->once ()
217+ ->with ('temp/test-file.jpg ' , 'avatars ' , null , 'public ' )
218+ ->andReturn ($ mockResult );
219+
220+ $ request = new Request ;
221+ $ request ->merge (['avatar ' => 'temp/test-file.jpg ' ]);
222+
223+ $ result = $ this ->testClass ->moveFilePublicExposed ($ request , 'avatar ' , 'avatars ' );
224+
225+ expect ($ result )->toBe ('avatars/public-file.jpg ' );
226+ }
227+
228+ public function test_move_file_private_convenience_method ()
229+ {
230+ // Mock the Filex facade
231+ $ mockResult = $ this ->mock (FilexResult::class);
232+ $ mockResult ->shouldReceive ('getPath ' )->once ()->andReturn ('avatars/private-file.jpg ' );
233+
234+ Filex::shouldReceive ('moveFile ' )
235+ ->once ()
236+ ->with ('temp/test-file.jpg ' , 'avatars ' , null , 'private ' )
237+ ->andReturn ($ mockResult );
238+
239+ $ request = new Request ;
240+ $ request ->merge (['avatar ' => 'temp/test-file.jpg ' ]);
241+
242+ $ result = $ this ->testClass ->moveFilePrivateExposed ($ request , 'avatar ' , 'avatars ' );
243+
244+ expect ($ result )->toBe ('avatars/private-file.jpg ' );
245+ }
246+
247+ public function test_move_files_public_convenience_method ()
248+ {
249+ // Mock the Filex facade
250+ $ mockResult = $ this ->mock (FilexResult::class);
251+ $ mockResult ->shouldReceive ('getPaths ' )
252+ ->once ()
253+ ->andReturnUsing (function () {
254+ return ['uploads/public1.jpg ' , 'uploads/public2.pdf ' ];
255+ });
256+
257+ Filex::shouldReceive ('moveFiles ' )
258+ ->once ()
259+ ->with (['temp/file1.jpg ' , 'temp/file2.pdf ' ], 'uploads ' , null , 'public ' )
260+ ->andReturn ($ mockResult );
261+
262+ $ request = new Request ;
263+ $ request ->merge (['documents ' => ['temp/file1.jpg ' , 'temp/file2.pdf ' ]]);
264+
265+ $ result = $ this ->testClass ->moveFilesPublicExposed ($ request , 'documents ' , 'uploads ' );
266+
267+ expect ($ result )->toBeArray ();
268+ expect ($ result )->toHaveCount (2 );
269+ }
270+
271+ public function test_move_files_private_convenience_method ()
272+ {
273+ // Mock the Filex facade
274+ $ mockResult = $ this ->mock (FilexResult::class);
275+ $ mockResult ->shouldReceive ('getPaths ' )
276+ ->once ()
277+ ->andReturnUsing (function () {
278+ return ['uploads/private1.jpg ' , 'uploads/private2.pdf ' ];
279+ });
280+
281+ Filex::shouldReceive ('moveFiles ' )
282+ ->once ()
283+ ->with (['temp/file1.jpg ' , 'temp/file2.pdf ' ], 'uploads ' , null , 'private ' )
284+ ->andReturn ($ mockResult );
285+
286+ $ request = new Request ;
287+ $ request ->merge (['documents ' => ['temp/file1.jpg ' , 'temp/file2.pdf ' ]]);
288+
289+ $ result = $ this ->testClass ->moveFilesPrivateExposed ($ request , 'documents ' , 'uploads ' );
290+
291+ expect ($ result )->toBeArray ();
292+ expect ($ result )->toHaveCount (2 );
293+ }
294+
185295 protected function tearDown (): void
186296 {
187297 Mockery::close ();
0 commit comments