Files
shopPRO/tests/Unit/Domain/Article/ArticleRepositoryTest.php

103 lines
3.2 KiB
PHP

<?php
namespace Tests\Unit\Domain\Article;
use PHPUnit\Framework\TestCase;
use Domain\Article\ArticleRepository;
class ArticleRepositoryTest extends TestCase
{
public function testFindReturnsArticleWithRelations(): void
{
$mockDb = $this->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);
}
public function testDeleteNonassignedFilesDeletesDbRows(): void
{
$mockDb = $this->createMock(\medoo::class);
$mockDb->expects($this->once())
->method('select')
->with('pp_articles_files', '*', ['article_id' => null])
->willReturn([
['id' => 1, 'src' => '/this/path/does/not/exist-file.tmp']
]);
$mockDb->expects($this->once())
->method('delete')
->with('pp_articles_files', ['article_id' => null]);
$repository = new ArticleRepository($mockDb);
$repository->deleteNonassignedFiles();
$this->assertTrue(true);
}
public function testDeleteNonassignedImagesDeletesDbRows(): void
{
$mockDb = $this->createMock(\medoo::class);
$mockDb->expects($this->once())
->method('select')
->with('pp_articles_images', '*', ['article_id' => null])
->willReturn([
['id' => 1, 'src' => '/this/path/does/not/exist-image.tmp']
]);
$mockDb->expects($this->once())
->method('delete')
->with('pp_articles_images', ['article_id' => null]);
$repository = new ArticleRepository($mockDb);
$repository->deleteNonassignedImages();
$this->assertTrue(true);
}
}