Source of file ReadFileUsageQueryCreatorTest.php
Size: 3,425 Bytes - Last Modified: 2021-12-23T10:27:34+00:00
/var/www/docs.ssmods.com/process/src/tests/php/GraphQL/ReadFileUsageQueryCreatorTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | <?php namespace SilverStripe\AssetAdmin\Tests\GraphQL; use SilverStripe\AssetAdmin\GraphQL\Resolvers\AssetAdminResolver; 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\GraphQL\Schema\Schema; /** * Most of the search functionality is covered in {@link FileFilterInputTypeCreatorTest} */ class ReadFileUsageQueryCreatorTest extends SapphireTest { protected $usesDatabase = true; protected static $fixture_file = '../fixtures.yml'; 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 fileUsageDataProvider() { return [ [File::class, 'rootfile', 2, 'rootfile file is used twice'], [File::class, 'file2', 0, 'file2 is not used'], [File::class, 'disallowCanView', false, 'disallowCanView should provide file usage data'], [Folder::class, 'folder1', 2, 'folder1 contains files used 2 times'], [Folder::class, 'folder1.1', 0, 'folder1.1 does not contained any used files'], ]; } /** * @dataProvider fileUsageDataProvider * @param string $class * @param string $fixture * @param int|false $expectedCount * @param $message */ public function testUsageCount(string $class, string $fixture, $expectedCount, $message) { $id = $this->idFromFixture($class, $fixture); $this->assertUsageCount($id, $expectedCount, $message); } public function testUsageCountForNonExistentFile() { $this->expectException('InvalidArgumentException'); $this->assertUsageCount(999, false, 'File 999 should throw an exception because it does not exists.'); } /** * @param array $args * @param array $context * @return array */ protected function getResultsForSearch($args, $context = null) { $context = $context ? $context : ['currentUser' => null]; return AssetAdminResolver::resolveReadFileUsage(null, $args, $context, new FakeResolveInfo()); } /** * Assert the file usage of the provided file ID. * @param string $fixture * @param int|false $expectedCount $expectedCount or false, if no result should be returned */ private function assertUsageCount($id, $expectedCount, $message) { $actual = $this->getResultsForSearch(['ids' => [$id]]); if ($expectedCount === false) { $this->assertEmpty($actual, $message); } else { $expected = [[ 'id' => $id, 'inUseCount' => $expectedCount ]]; $this->assertEquals($expected, $actual, $message); } } } |