gateway = new SqliteGateway(":memory:"); } public function testCanInsertAWebmention() { $webmention = new Webmention( null, "https://lewisdale.dev/post/a-post", "https://a-source.url", "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", "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", "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", "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", "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", "No content", "Some Author Name" )); $this->gateway->save(new Webmention( null, "https://lewisdale.dev/post/a-new-post", "https://a-different-source.url", "No content", "Some Author Name" )); $this->gateway->save(new Webmention( null, "https://lewisdale.dev/post/a-new-post", "https://a-source.url", "Some content", "Some Author Name" )); $this->gateway->find([ "id; DROP TABLE webmentions;" => 'whatever' ]); $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" ]) ); } }