2023-03-09 09:48:08 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
2023-03-15 09:15:55 +00:00
|
|
|
error_reporting(E_ALL);
|
|
|
|
ini_set('display_errors', 1);
|
2023-03-09 09:48:08 +00:00
|
|
|
|
|
|
|
|
|
|
|
use Lewisdale\Webmentions\Gateways\SqliteGateway;
|
2023-03-14 08:43:25 +00:00
|
|
|
use Lewisdale\Webmentions\Models\MentionType;
|
2023-03-09 09:48:08 +00:00
|
|
|
use Lewisdale\Webmentions\Models\Webmention;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
|
|
|
|
class SqliteGatewayTest extends TestCase
|
|
|
|
{
|
2023-03-09 13:05:43 +00:00
|
|
|
private SqliteGateway $gateway;
|
|
|
|
|
|
|
|
protected function setUp(): void
|
|
|
|
{
|
|
|
|
$this->gateway = new SqliteGateway(":memory:");
|
|
|
|
}
|
|
|
|
|
2023-03-09 09:48:08 +00:00
|
|
|
public function testCanInsertAWebmention()
|
|
|
|
{
|
|
|
|
|
|
|
|
$webmention = new Webmention(
|
|
|
|
null,
|
|
|
|
"https://lewisdale.dev/post/a-post",
|
|
|
|
"https://a-source.url",
|
2023-03-14 08:43:25 +00:00
|
|
|
MentionType::Like,
|
2023-03-09 09:48:08 +00:00
|
|
|
"No content",
|
2023-03-15 09:15:55 +00:00
|
|
|
new \Lewisdale\Webmentions\Models\Author(),
|
2023-03-09 09:48:08 +00:00
|
|
|
);
|
|
|
|
|
2023-03-09 13:05:43 +00:00
|
|
|
$webmention->id = $this->gateway->save($webmention);
|
2023-03-09 09:48:08 +00:00
|
|
|
$this->assertNotNull($webmention->id);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testCanRetrieveAWebmention()
|
|
|
|
{
|
|
|
|
$webmention = new Webmention(
|
|
|
|
null,
|
|
|
|
"https://lewisdale.dev/post/a-post",
|
|
|
|
"https://a-source.url",
|
2023-03-14 08:43:25 +00:00
|
|
|
MentionType::Like,
|
2023-03-09 09:48:08 +00:00
|
|
|
"No content",
|
2023-03-15 09:15:55 +00:00
|
|
|
new \Lewisdale\Webmentions\Models\Author(),
|
2023-03-09 09:48:08 +00:00
|
|
|
);
|
|
|
|
|
2023-03-09 13:05:43 +00:00
|
|
|
$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",
|
2023-03-14 08:43:25 +00:00
|
|
|
MentionType::Like,
|
2023-03-09 13:05:43 +00:00
|
|
|
"No content",
|
2023-03-15 09:15:55 +00:00
|
|
|
new \Lewisdale\Webmentions\Models\Author()
|
2023-03-09 13:05:43 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
$webmention->id = $this->gateway->save($webmention);
|
|
|
|
$this->gateway->delete($webmention);
|
|
|
|
|
|
|
|
$retrieved = $this->gateway->get($webmention->id);
|
|
|
|
|
|
|
|
$this->assertNull($retrieved);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testCanGetByPost()
|
|
|
|
{
|
2023-03-15 09:15:55 +00:00
|
|
|
foreach (range(0, 4) as $_) {
|
2023-03-09 13:05:43 +00:00
|
|
|
$this->gateway->save(new Webmention(
|
|
|
|
null,
|
|
|
|
"https://lewisdale.dev/post/a-new-post",
|
|
|
|
"https://a-source.url",
|
2023-03-14 13:54:05 +00:00
|
|
|
MentionType::Reply,
|
2023-03-09 13:05:43 +00:00
|
|
|
"No content",
|
2023-03-15 09:15:55 +00:00
|
|
|
new \Lewisdale\Webmentions\Models\Author()
|
2023-03-09 13:05:43 +00:00
|
|
|
));
|
|
|
|
}
|
|
|
|
|
2023-03-15 09:15:55 +00:00
|
|
|
foreach (range(0, 4) as $_) {
|
2023-03-09 13:05:43 +00:00
|
|
|
$this->gateway->save(new Webmention(
|
|
|
|
null,
|
|
|
|
"https://lewisdale.dev/post/a-different-post",
|
|
|
|
"https://a-source.url",
|
2023-03-14 08:43:25 +00:00
|
|
|
MentionType::Like,
|
2023-03-09 13:05:43 +00:00
|
|
|
"No content",
|
2023-03-15 09:15:55 +00:00
|
|
|
new \Lewisdale\Webmentions\Models\Author()
|
2023-03-09 13:05:43 +00:00
|
|
|
));
|
|
|
|
}
|
2023-03-09 09:48:08 +00:00
|
|
|
|
2023-03-09 13:05:43 +00:00
|
|
|
$mentions = $this->gateway->getByPost("https://lewisdale.dev/post/a-new-post");
|
2023-03-09 09:48:08 +00:00
|
|
|
|
2023-03-09 13:05:43 +00:00
|
|
|
$this->assertCount(5, $mentions);
|
2023-03-09 09:48:08 +00:00
|
|
|
}
|
2023-03-09 21:50:59 +00:00
|
|
|
|
|
|
|
public function testCanFindByParams()
|
|
|
|
{
|
|
|
|
$this->gateway->save(new Webmention(
|
|
|
|
null,
|
|
|
|
"https://lewisdale.dev/post/a-new-post",
|
|
|
|
"https://a-source.url",
|
2023-03-14 08:43:25 +00:00
|
|
|
MentionType::Reply,
|
2023-03-09 21:50:59 +00:00
|
|
|
"No content",
|
2023-03-15 09:15:55 +00:00
|
|
|
new \Lewisdale\Webmentions\Models\Author()
|
2023-03-09 21:50:59 +00:00
|
|
|
));
|
|
|
|
|
|
|
|
$this->gateway->save(new Webmention(
|
|
|
|
null,
|
|
|
|
"https://lewisdale.dev/post/a-new-post",
|
|
|
|
"https://a-different-source.url",
|
2023-03-14 08:43:25 +00:00
|
|
|
MentionType::Like,
|
2023-03-09 21:50:59 +00:00
|
|
|
"No content",
|
2023-03-15 09:15:55 +00:00
|
|
|
new \Lewisdale\Webmentions\Models\Author()
|
2023-03-09 21:50:59 +00:00
|
|
|
));
|
|
|
|
|
|
|
|
$this->gateway->save(new Webmention(
|
|
|
|
null,
|
|
|
|
"https://lewisdale.dev/post/a-new-post",
|
|
|
|
"https://a-source.url",
|
2023-03-14 13:54:05 +00:00
|
|
|
MentionType::Reply,
|
2023-03-09 21:50:59 +00:00
|
|
|
"Some content",
|
2023-03-15 09:15:55 +00:00
|
|
|
new \Lewisdale\Webmentions\Models\Author()
|
2023-03-09 21:50:59 +00:00
|
|
|
));
|
|
|
|
|
|
|
|
$this->assertCount(
|
|
|
|
2,
|
|
|
|
$this->gateway->find([
|
|
|
|
"target" => "https://lewisdale.dev/post/a-new-post",
|
2023-03-15 09:15:55 +00:00
|
|
|
"source" => "https://a-source.url",
|
2023-03-09 21:50:59 +00:00
|
|
|
])
|
|
|
|
);
|
|
|
|
|
|
|
|
$this->assertCount(
|
|
|
|
1,
|
|
|
|
$this->gateway->find([
|
|
|
|
"target" => "https://lewisdale.dev/post/a-new-post",
|
2023-03-15 09:15:55 +00:00
|
|
|
"source" => "https://a-different-source.url",
|
2023-03-09 21:50:59 +00:00
|
|
|
])
|
|
|
|
);
|
|
|
|
|
|
|
|
$this->assertCount(
|
|
|
|
1,
|
|
|
|
$this->gateway->find([
|
|
|
|
"target" => "https://lewisdale.dev/post/a-new-post",
|
|
|
|
"source" => "https://a-source.url",
|
2023-03-15 09:15:55 +00:00
|
|
|
"content" => "Some content",
|
2023-03-09 21:50:59 +00:00
|
|
|
])
|
|
|
|
);
|
|
|
|
}
|
2023-03-09 09:48:08 +00:00
|
|
|
}
|