Source of file FileFilterInputTypeCreatorTest.php
Size: 7,504 Bytes - Last Modified: 2021-12-23T10:27:34+00:00
/var/www/docs.ssmods.com/process/src/tests/php/GraphQL/FileFilterInputTypeCreatorTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 | <?php namespace SilverStripe\AssetAdmin\Tests\GraphQL; use SilverStripe\AssetAdmin\GraphQL\FileFilter; use SilverStripe\AssetAdmin\Tests\Controller\AssetAdminTest\FileExtension; use SilverStripe\AssetAdmin\Tests\Controller\AssetAdminTest\FolderExtension; use SilverStripe\Assets\File; use SilverStripe\Assets\Folder; use SilverStripe\Dev\SapphireTest; use Silverstripe\Assets\Dev\TestAssetStore; use SilverStripe\AssetAdmin\GraphQL\FileFilterInputTypeCreator; use SilverStripe\GraphQL\Schema\Schema; class FileFilterInputTypeCreatorTest extends SapphireTest { protected $usesDatabase = true; protected function setUp(): void { parent::setUp(); if (!class_exists(Schema::class)) { $this->markTestSkipped('GraphQL 4 test ' . __CLASS__ . ' skipped'); } TestAssetStore::activate('AssetAdminTest'); File::add_extension(FileExtension::class); Folder::add_extension(FolderExtension::class); } protected function tearDown(): void { File::remove_extension(FileExtension::class); Folder::remove_extension(FolderExtension::class); TestAssetStore::reset(); parent::tearDown(); } public function testItFiltersByCreated() { $folder = new Folder([ 'name' => 'folder' ]); $folder->write(); $file1 = new File([ 'Created' => '2014-01-05 23:11:39', 'ParentID' => $folder->ID, ]); $file1->write(); $file2 = new File([ 'Created' => '2014-01-06 12:00:00', 'ParentID' => $folder->ID, ]); $file2->write(); $baseList = $folder->stageChildren(); // Mock searches for 4th Jan $list = FileFilter::filterList($baseList, [ 'lastEditedFrom' => '2014-01-04', 'lastEditedTo' => '2014-01-04', ]); $this->assertEquals(0, $list->Count()); // Mock searches for 5th Jan $list = FileFilter::filterList($baseList, [ 'lastEditedFrom' => date('Y-m-d'), 'lastEditedTo' => date('Y-m-d'), ]); $this->assertEquals(2, $list->Count()); $this->assertContains($file1->ID, $list->column('ID')); // Mock searches for 5th-6th Jan $list = FileFilter::filterList($baseList, [ 'createdFrom' => '2014-01-05', 'createdTo' => '2014-01-06', ]); $this->assertEquals(2, $list->Count()); $this->assertContains($file1->ID, $list->column('ID')); $this->assertContains($file2->ID, $list->column('ID')); // Mock searches for 6th Jan $list = FileFilter::filterList($baseList, [ 'createdFrom' => '2014-01-06', 'createdTo' => '2014-01-06', ]); $this->assertEquals(1, $list->Count()); $this->assertContains($file2->ID, $list->column('ID')); // Mock searches for 7th Jan $list = FileFilter::filterList($baseList, [ 'lastEditedFrom' => '2014-01-07', 'lastEditedTo' => '2014-01-07', ]); $this->assertEquals(0, $list->Count()); } public function testItFiltersByParentId() { $folder1 = new Folder([ 'name' => 'folder1' ]); $folder1->write(); $folder2 = new Folder([ 'name' => 'folder2' ]); $folder2->write(); $file1 = new File([ 'ParentID' => $folder1->ID, ]); $file1->write(); $file2 = new File([ 'ParentID' => $folder2->ID, ]); $file2->write(); $baseList = File::get(); $list = FileFilter::filterList($baseList, [ 'parentId' => $folder1->ID ]); $this->assertContains( $file1->ID, $list->column('ID'), 'Contains file in folder' ); $this->assertNotContains( $file2->ID, $list->column('ID'), 'Does not contain file in another folder' ); } public function testItFiltersById() { $file1 = new File([ ]); $file1->write(); $file2 = new File([ ]); $file2->write(); $baseList = File::get(); $list = FileFilter::filterList($baseList, [ 'id' => $file1->ID ]); $this->assertContains( $file1->ID, $list->column('ID'), 'Contains file matched by ID' ); $this->assertNotContains( $file2->ID, $list->column('ID'), 'Does not contain other files' ); } public function testItFiltersByChildId() { $folder1 = new Folder([ 'name' => 'folder1' ]); $folder1->write(); $folder2 = new Folder([ 'name' => 'folder2' ]); $folder2->write(); $file1 = new File([ 'ParentID' => $folder1->ID, ]); $file1->write(); $file2 = new File([ 'ParentID' => $folder2->ID, ]); $file2->write(); $baseList = File::get(); $list = FileFilter::filterList($baseList, [ 'anyChildId' => $file2->ID ]); $this->assertContains( $folder2->ID, $list->column('ID'), 'Finds parent folder' ); $this->assertNotContains( $folder1->ID, $list->column('ID'), 'Does not find non-parent folder' ); } public function testItFiltersByName() { $folder = new Folder([ 'Name' => 'FooFolderName', 'Title' => 'FooFolderTitle' ]); $folder->write(); $file1 = new File([ 'Name' => 'FooFileName', 'Title' => 'FooFileTitle' ]); $file1->write(); $file2 = new File([ 'Name' => 'BarFileName', 'Title' => 'BarFileTitle', ]); $file2->write(); $baseList = File::get(); $listByName = FileFilter::filterList($baseList, [ 'name' => 'Foo', ]); $this->assertEquals( [$file1->ID, $folder->ID], $listByName->column('ID'), 'Finds files and folders by name' ); $baseList = File::get(); $listByTitle = FileFilter::filterList($baseList, [ 'name' => 'FooFileTitle', ]); $this->assertEquals( [$file1->ID], $listByTitle->column('ID'), 'Finds files and folders by title' ); } public function testItFiltersByAppCategory() { $image = new File([ 'Name' => 'image.jpg', ]); $image->write(); $archive = new File([ 'Name' => 'archive.zip', ]); $archive->write(); $baseList = File::get(); $listImages = FileFilter::filterList($baseList, [ 'appCategory' => ['jpg'], ]); $this->assertEquals( [$image->ID], $listImages->column('ID'), 'Finds images by appCategory' ); $baseList = File::get(); $listArchives = FileFilter::filterList($baseList, [ 'appCategory' => ['zip'], ]); $this->assertEquals( [$archive->ID], $listArchives->column('ID'), 'Finds archives by appCategory' ); } } |