webmentions/tests/Gateways/SqliteGatewayTest.php
2023-03-14 08:43:25 +00:00

158 lines
4.2 KiB
PHP

<?php
declare(strict_types=1);
error_reporting(E_ALL); ini_set('display_errors',1);
use Lewisdale\Webmentions\Gateways\SqliteGateway;
use Lewisdale\Webmentions\Models\MentionType;
use Lewisdale\Webmentions\Models\Webmention;
use PHPUnit\Framework\TestCase;
class SqliteGatewayTest extends TestCase
{
private SqliteGateway $gateway;
protected function setUp(): void
{
$this->gateway = new SqliteGateway(":memory:");
}
public function testCanInsertAWebmention()
{
$webmention = new Webmention(
null,
"https://lewisdale.dev/post/a-post",
"https://a-source.url",
MentionType::Like,
"No content",
"Some Author Name"
);
$webmention->id = $this->gateway->save($webmention);
$this->assertNotNull($webmention->id);
}
public function testCanRetrieveAWebmention()
{
$webmention = new Webmention(
null,
"https://lewisdale.dev/post/a-post",
"https://a-source.url",
MentionType::Like,
"No content",
"Some Author Name"
);
$webmention->id = $this->gateway->save($webmention);
$retrieved = $this->gateway->get($webmention->id);
$this->assertEquals($webmention, $retrieved);
}
public function testCanDeleteAWebmention()
{
$webmention = new Webmention(
null,
"https://lewisdale.dev/post/a-post",
"https://a-source.url",
MentionType::Like,
"No content",
"Some Author Name"
);
$webmention->id = $this->gateway->save($webmention);
$this->gateway->delete($webmention);
$retrieved = $this->gateway->get($webmention->id);
$this->assertNull($retrieved);
}
public function testCanGetByPost()
{
foreach(range(0, 4) as $_) {
$this->gateway->save(new Webmention(
null,
"https://lewisdale.dev/post/a-new-post",
"https://a-source.url",
MentionType::Comment,
"No content",
"Some Author Name"
));
}
foreach(range(0, 4) as $_) {
$this->gateway->save(new Webmention(
null,
"https://lewisdale.dev/post/a-different-post",
"https://a-source.url",
MentionType::Like,
"No content",
"Some Author Name"
));
}
$mentions = $this->gateway->getByPost("https://lewisdale.dev/post/a-new-post");
$this->assertCount(5, $mentions);
}
public function testCanFindByParams()
{
$this->gateway->save(new Webmention(
null,
"https://lewisdale.dev/post/a-new-post",
"https://a-source.url",
MentionType::Reply,
"No content",
"Some Author Name"
));
$this->gateway->save(new Webmention(
null,
"https://lewisdale.dev/post/a-new-post",
"https://a-different-source.url",
MentionType::Like,
"No content",
"Some Author Name"
));
$this->gateway->save(new Webmention(
null,
"https://lewisdale.dev/post/a-new-post",
"https://a-source.url",
MentionType::Comment,
"Some content",
"Some Author Name"
));
$this->assertCount(
2,
$this->gateway->find([
"target" => "https://lewisdale.dev/post/a-new-post",
"source" => "https://a-source.url"
])
);
$this->assertCount(
1,
$this->gateway->find([
"target" => "https://lewisdale.dev/post/a-new-post",
"source" => "https://a-different-source.url"
])
);
$this->assertCount(
1,
$this->gateway->find([
"target" => "https://lewisdale.dev/post/a-new-post",
"source" => "https://a-source.url",
"content" => "Some content"
])
);
}
}