33, 'post_type' => 'attachment', 'post_status' => 'inherit']); Functions\when('get_post')->justReturn($attachment); Functions\when('current_user_can')->justReturn(true); $finder = Mockery::mock(MediaUsageFinder::class); $finder->expects('usages')->with(33)->andReturn([]); $presenter = Mockery::mock(MediaPresenter::class); $presenter->expects('full')->with($attachment, [])->andReturn(['id' => 33]); self::assertSame(['id' => 33], (new MediaGetAbility($presenter, $finder))->execute(['id' => 33])); } public function testTrashedAttachmentsCanBeRead(): void { Functions\when('get_post')->justReturn(new WP_Post(['ID' => 33, 'post_type' => 'attachment', 'post_status' => 'trash'])); Functions\when('current_user_can')->justReturn(true); $ability = new MediaGetAbility(Mockery::mock(MediaPresenter::class), Mockery::mock(MediaUsageFinder::class)); self::assertTrue($ability->permission(['id' => 33])); } public function testNonAttachmentIsNotFound(): void { Functions\when('get_post')->justReturn(new WP_Post(['ID' => 5, 'post_type' => 'page'])); $ability = new MediaGetAbility(Mockery::mock(MediaPresenter::class), Mockery::mock(MediaUsageFinder::class)); self::assertSame('lit_not_found', $ability->permission(['id' => 5])->get_error_code()); } public function testIsIndirectAndReadonly(): void { $ability = new MediaGetAbility(Mockery::mock(MediaPresenter::class), Mockery::mock(MediaUsageFinder::class)); self::assertSame('lit/media-get', $ability->name()); self::assertFalse($ability->isDirect()); self::assertTrue($ability->annotations()['readonly']); } }