jonnybarnes.uk/tests/Feature/LikesTest.php
Jonny Barnes 1c7bff508f Squashed commit of the following:
commit ebbaf83a331395d86754f231ebf3852c31ee13e7
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Sep 19 16:07:16 2017 +0100

    Show just a name if no known author url

commit 7c3fc38a5101635efbb1659d7dc0e4e87f28977a
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Sep 19 15:55:07 2017 +0100

    Update changelog

commit e05876d604b2655fdd1b03fe5390c3333cd5e064
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Sep 19 15:54:10 2017 +0100

    Add a trait for testing tokens

commit 1288769757e6c69fccf849a73ef53e6497953d74
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Sep 19 15:53:54 2017 +0100

    Add a test for the process like job

commit d85a7109d51c979846b2b15d92e2b4c3978c6dc7
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Tue Sep 19 15:53:25 2017 +0100

    fix typo, and allow for array of author info, or just a name

commit 1fc63c6fb6c5648e31759502a011b2be0525af54
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Sep 18 15:38:16 2017 +0100

    Add another test for creating likes

commit 487723ac41fa00a8182f5bf3665ab7b5f8fece52
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Sep 18 15:38:03 2017 +0100

    fix unexpected end of file error

commit a24eef82ae7a2a3e1d3943a6cfed85757c713434
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Sep 18 15:37:31 2017 +0100

    Better response when creating likes

commit fa49df98613b136167dc093a97745eeb90a4a7a6
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Sep 18 14:43:39 2017 +0100

    Make the author fields nullable

commit 5a2f9273c18cf31a54eb54f40732024159c3dc2d
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Sep 18 14:43:20 2017 +0100

    Delegate to the LikeService for creating likes

commit 801d6567ec3456cbcdfa6260339dd9ed2fdfa5b0
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Sep 18 14:42:54 2017 +0100

    Create the Job that gets the content of the like and the author info

commit df563473606b43a330c4e977b230d4b7b2a85268
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Sep 18 14:42:28 2017 +0100

    Create the service the mpub controller delegates to

commit ab6ebee71ffdeb584bbef0454874d3fc1c6499f4
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Sep 18 14:42:08 2017 +0100

    Allow Like::create to work for just the url

commit 6d70c43f11056597a493f863c3a1ac681ed06b71
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Sep 18 14:10:20 2017 +0100

    Add some initial tests

commit 4049342b061594656dbf7183d7428f95ba6b3598
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Sep 18 14:10:06 2017 +0100

    Add database migration/seed/factory

commit 5b3aa20fa14202e84af310477b97044723201ea7
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Sep 18 14:09:21 2017 +0100

    Add domain logic for likes

commit 7ef5392a1833df6cee77ecb1166af4fc0abc0eb5
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Sep 18 14:08:47 2017 +0100

    Add routes for likes
2017-09-19 16:07:32 +01:00

88 lines
2.2 KiB
PHP

<?php
namespace Tests\Feature;
use Queue;
use App\Like;
use Tests\TestCase;
use Tests\TestToken;
use GuzzleHttp\Client;
use App\Jobs\ProcessLike;
use Lcobucci\JWT\Builder;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Psr7\Response;
use GuzzleHttp\Handler\MockHandler;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use Jonnybarnes\WebmentionsParser\Authorship;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class LikesTest extends TestCase
{
use DatabaseTransactions, TestToken;
public function test_likes_page()
{
$response = $this->get('/likes');
$response->assertViewIs('likes.index');
}
public function test_single_like_page()
{
$response = $this->get('/likes');
$response->assertViewIs('likes.index');
}
public function test_like_micropub_request()
{
Queue::fake();
$response = $this->withHeaders([
'Authorization' => 'Bearer ' . $this->getToken(),
])->json('POST', '/api/post', [
'type' => ['h-entry'],
'properties' => [
'like-of' => ['https://example.org/blog-post'],
],
]);
$response->assertJson(['response' => 'created']);
Queue::assertPushed(ProcessLike::class);
$this->assertDatabaseHas('likes', ['url' => 'https://example.org/blog-post']);
}
public function test_process_like_job()
{
$like = new Like();
$like->url = 'http://example.org/note/id';
$like->save();
$id = $like->id;
$job = new ProcessLike($like);
$content = <<<END
<html>
<body>
<div class="h-entry">
<div class="e-content">
A post that I like.
</div>
by <span class="p-author">Fred Bloggs</span>
</div>
</body>
</html>
END;
$mock = new MockHandler([
new Response(200, [], $content),
new Response(200, [], $content),
]);
$handler = HandlerStack::create($mock);
$client = new Client(['handler' => $handler]);
$this->app->bind(Client::class, $client);
$authorship = new Authorship();
$job->handle($client, $authorship);
$this->assertEquals('Fred Bloggs', Like::find($id)->author_name);
}
}