| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 | 
							- <?php
 
- use Encore\Admin\Auth\Database\Administrator;
 
- use Illuminate\Support\Facades\File;
 
- use Tests\Models\Image;
 
- use Tests\Models\MultipleImage;
 
- class ImageUploadTest extends TestCase
 
- {
 
-     public function setUp()
 
-     {
 
-         parent::setUp();
 
-         $this->be(Administrator::first(), 'admin');
 
-     }
 
-     public function testDisableFilter()
 
-     {
 
-         $this->visit('admin/images')
 
-             ->dontSeeElement('input[name=id]');
 
-     }
 
-     public function testImageUploadPage()
 
-     {
 
-         $this->visit('admin/images/create')
 
-             ->see('Upload image')
 
-             ->seeInElement('h3[class=box-title]', 'Create')
 
-             ->seeElement('input[name=image1]')
 
-             ->seeElement('input[name=image2]')
 
-             ->seeElement('input[name=image3]')
 
-             ->seeElement('input[name=image4]')
 
-             ->seeElement('input[name=image5]')
 
-             ->seeElement('input[name=image6]')
 
-             ->seeInElement('button[type=reset]', 'Reset')
 
-             ->seeInElement('button[type=submit]', 'Submit');
 
-     }
 
-     protected function uploadImages()
 
-     {
 
-         return $this->visit('admin/images/create')
 
-             ->attach(__DIR__.'/assets/test.jpg', 'image1')
 
-             ->attach(__DIR__.'/assets/test.jpg', 'image2')
 
-             ->attach(__DIR__.'/assets/test.jpg', 'image3')
 
-             ->attach(__DIR__.'/assets/test.jpg', 'image4')
 
-             ->attach(__DIR__.'/assets/test.jpg', 'image5')
 
-             ->attach(__DIR__.'/assets/test.jpg', 'image6')
 
-             ->press('Submit');
 
-     }
 
-     public function testUploadImage()
 
-     {
 
-         File::cleanDirectory(public_path('uploads/images'));
 
-         $this->uploadImages()
 
-             ->seePageIs('admin/images');
 
-         $this->assertEquals(Image::count(), 1);
 
-         $this->seeInDatabase('test_images', ['image4' => 'images/renamed.jpeg']);
 
-         $images = Image::first()->toArray();
 
-         foreach (range(1, 6) as $index) {
 
-             $this->assertFileExists(public_path('uploads/'.$images['image'.$index]));
 
-         }
 
-         $this->assertFileExists(public_path('uploads/images/asdasdasdasdasd.jpeg'));
 
-         File::cleanDirectory(public_path('uploads/images'));
 
-     }
 
-     public function testRemoveImage()
 
-     {
 
-         File::cleanDirectory(public_path('uploads/images'));
 
-         $this->uploadImages();
 
-         $this->assertEquals($this->fileCountInImageDir(), 6);
 
-     }
 
-     public function testUpdateImage()
 
-     {
 
-         File::cleanDirectory(public_path('uploads/images'));
 
-         $this->uploadImages();
 
-         $old = Image::first();
 
-         $this->visit('admin/images/1/edit')
 
-             ->see('ID')
 
-             ->see('Created At')
 
-             ->see('Updated At')
 
-             ->seeElement('input[name=image1]')
 
-             ->seeElement('input[name=image2]')
 
-             ->seeElement('input[name=image3]')
 
-             ->seeElement('input[name=image4]')
 
-             ->seeElement('input[name=image5]')
 
-             ->seeElement('input[name=image6]')
 
-             ->seeInElement('button[type=reset]', 'Reset')
 
-             ->seeInElement('button[type=submit]', 'Submit');
 
-         $this->attach(__DIR__.'/assets/test.jpg', 'image3')
 
-             ->attach(__DIR__.'/assets/test.jpg', 'image4')
 
-             ->attach(__DIR__.'/assets/test.jpg', 'image5')
 
-             ->press('Submit');
 
-         $new = Image::first();
 
-         $this->assertEquals($old->id, $new->id);
 
-         $this->assertEquals($old->image1, $new->image1);
 
-         $this->assertEquals($old->image2, $new->image2);
 
-         $this->assertEquals($old->image6, $new->image6);
 
-         $this->assertNotEquals($old->image3, $new->image3);
 
-         $this->assertNotEquals($old->image4, $new->image4);
 
-         $this->assertNotEquals($old->image5, $new->image5);
 
-         File::cleanDirectory(public_path('uploads/images'));
 
-     }
 
-     public function testDeleteImages()
 
-     {
 
-         File::cleanDirectory(public_path('uploads/images'));
 
-         $this->uploadImages();
 
-         $this->visit('admin/images')
 
-             ->seeInElement('td', 1);
 
-         $images = Image::first()->toArray();
 
-         $this->delete('admin/images/1')
 
-             ->dontSeeInDatabase('test_images', ['id' => 1]);
 
-         foreach (range(1, 6) as $index) {
 
-             $this->assertFileNotExists(public_path('uploads/'.$images['image'.$index]));
 
-         }
 
-         $this->visit('admin/images')
 
-             ->dontSeeInElement('td', 1);
 
-     }
 
-     public function testBatchDelete()
 
-     {
 
-         File::cleanDirectory(public_path('uploads/images'));
 
-         $this->uploadImages();
 
-         $this->uploadImages();
 
-         $this->uploadImages();
 
-         $this->visit('admin/images')
 
-             ->seeInElement('td', 1)
 
-             ->seeInElement('td', 2)
 
-             ->seeInElement('td', 3);
 
-         $this->assertEquals($this->fileCountInImageDir(), 18);
 
-         $this->assertEquals(Image::count(), 3);
 
-         $this->delete('admin/images/1,2,3');
 
-         $this->assertEquals(Image::count(), 0);
 
-         $this->visit('admin/images')
 
-             ->dontSeeInElement('td', 1)
 
-             ->dontSeeInElement('td', 2)
 
-             ->dontSeeInElement('td', 3);
 
-         $this->assertEquals($this->fileCountInImageDir(), 0);
 
-     }
 
-     public function testUploadMultipleImage()
 
-     {
 
-         File::cleanDirectory(public_path('uploads/images'));
 
-         $this->visit('admin/multiple-images/create')
 
-             ->seeElement('input[type=file][name="pictures[]"][multiple=1]');
 
-         $path = __DIR__.'/assets/test.jpg';
 
-         $file = new \Illuminate\Http\UploadedFile(
 
-             $path, 'test.jpg', 'image/jpeg', filesize($path), null, true
 
-         );
 
-         $size = rand(10, 20);
 
-         $files = ['pictures' => array_pad([], $size, $file)];
 
-         $this->call(
 
-             'POST', // $method
 
-             '/admin/multiple-images', // $action
 
-             [], // $parameters
 
-             [],
 
-             $files
 
-         );
 
-         $this->assertResponseStatus(302);
 
-         $this->assertRedirectedTo('/admin/multiple-images');
 
-         $this->assertEquals($this->fileCountInImageDir(), $size);
 
-         $pictures = MultipleImage::first()->pictures;
 
-         $this->assertCount($size, $pictures);
 
-         foreach ($pictures as $picture) {
 
-             $this->assertFileExists(public_path('uploads/'.$picture));
 
-         }
 
-     }
 
-     public function testRemoveMultipleFiles()
 
-     {
 
-         File::cleanDirectory(public_path('uploads/images'));
 
-         // upload files
 
-         $path = __DIR__.'/assets/test.jpg';
 
-         $file = new \Illuminate\Http\UploadedFile(
 
-             $path, 'test.jpg', 'image/jpeg', filesize($path), null, true
 
-         );
 
-         $size = rand(10, 20);
 
-         $files = ['pictures' => array_pad([], $size, $file)];
 
-         $this->call(
 
-             'POST', // $method
 
-             '/admin/multiple-images', // $action
 
-             [], // $parameters
 
-             [],
 
-             $files
 
-         );
 
-         $this->assertEquals($this->fileCountInImageDir(), $size);
 
-     }
 
-     protected function fileCountInImageDir($dir = 'uploads/images')
 
-     {
 
-         $file = new FilesystemIterator(public_path($dir), FilesystemIterator::SKIP_DOTS);
 
-         return iterator_count($file);
 
-     }
 
- }
 
 
  |