-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathPageRepositoryTest.php
More file actions
83 lines (70 loc) · 2.74 KB
/
Copy pathPageRepositoryTest.php
File metadata and controls
83 lines (70 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
declare(strict_types=1);
namespace Williarin\WordpressInterop\Test\Bridge\Repository;
use Williarin\WordpressInterop\Bridge\Entity\Page;
use Williarin\WordpressInterop\Bridge\Repository\EntityRepositoryInterface;
use Williarin\WordpressInterop\Criteria\SelectColumns;
use Williarin\WordpressInterop\Exception\EntityNotFoundException;
use Williarin\WordpressInterop\Exception\InvalidFieldNameException;
use Williarin\WordpressInterop\Test\TestCase;
use function Williarin\WordpressInterop\Util\String\select_from_eav;
class PageRepositoryTest extends TestCase
{
/** @phpstan-var \Williarin\WordpressInterop\Bridge\Repository\PageRepository */
private EntityRepositoryInterface $repository;
protected function setUp(): void
{
parent::setUp();
$this->repository = $this->manager->getRepository(Page::class);
}
public function testFindThrowsExceptionIfPostTypeDiffers(): void
{
$this->expectException(EntityNotFoundException::class);
$this->repository->find(1);
}
public function testFindReturnsCorrectPage(): void
{
$page = $this->repository->find(2);
self::assertInstanceOf(Page::class, $page);
self::assertEquals(2, $page->id);
self::assertEquals('Sample Page', $page->postTitle);
self::assertStringContainsString('This is an example page.', $page->postContent);
}
public function testFindThrowsExceptionIfNotFound(): void
{
$this->expectException(EntityNotFoundException::class);
$this->repository->find(150);
}
public function testFindAllReturnsCorrectNumberOfPages(): void
{
$pages = $this->repository->findAll();
self::assertContainsOnlyInstancesOf(Page::class, $pages);
self::assertCount(7, $pages);
}
public function testFindOneByUndefinedEavDefault(): void
{
$this->expectException(InvalidFieldNameException::class);
$this->repository->findBy([
new SelectColumns(['id', select_from_eav('wp_page_template')]),
'post_status' => 'publish',
'wp_page_template' => 'default',
]);
}
public function testFindOneByUndefinedEavAllowExtraProperties(): void
{
$pages = $this->repository
->setOptions([
'allow_extra_properties' => true,
])
->findBy([
new SelectColumns(['id', select_from_eav('wp_page_template')]),
'post_status' => 'publish',
'wp_page_template' => 'default',
])
;
self::assertContainsOnlyInstancesOf(Page::class, $pages);
self::assertCount(1, $pages);
self::assertEquals(2, $pages[0]->id);
self::assertEquals('default', $pages[0]->wpPageTemplate);
}
}