createMock(\medoo::class); $mockDb->expects($this->once()) ->method('get') ->with('pp_articles', '*', ['id' => 7]) ->willReturn(['id' => 7, 'status' => 1]); $mockDb->expects($this->exactly(4)) ->method('select') ->willReturnOnConsecutiveCalls( [ ['lang_id' => 'pl', 'title' => 'Artykul'], ['lang_id' => 'en', 'title' => 'Article'], ], [ ['id' => 10, 'src' => '/img/a.jpg'] ], [ ['id' => 20, 'src' => '/files/a.pdf'] ], [1, 2] ); $repository = new ArticleRepository($mockDb); $article = $repository->find(7); $this->assertIsArray($article); $this->assertEquals(7, $article['id']); $this->assertArrayHasKey('languages', $article); $this->assertEquals('Artykul', $article['languages']['pl']['title']); $this->assertCount(1, $article['images']); $this->assertCount(1, $article['files']); $this->assertEquals([1, 2], $article['pages']); } public function testFindReturnsNullWhenArticleDoesNotExist(): void { $mockDb = $this->createMock(\medoo::class); $mockDb->expects($this->once()) ->method('get') ->with('pp_articles', '*', ['id' => 999]) ->willReturn(false); $mockDb->expects($this->never())->method('select'); $repository = new ArticleRepository($mockDb); $article = $repository->find(999); $this->assertNull($article); } }