From 21863759e650ebd77b339720cee9e7085a98e503 Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Wed, 21 Jan 2015 12:23:10 +1030 Subject: [PATCH] Improve discussions API tests --- tests/api/DiscussionsResourceCest.php | 61 ++++++++++++++++++++++++--- tests/api/_bootstrap.php | 31 ++++++++++++++ 2 files changed, 85 insertions(+), 7 deletions(-) diff --git a/tests/api/DiscussionsResourceCest.php b/tests/api/DiscussionsResourceCest.php index ee78006b4..8961a6106 100644 --- a/tests/api/DiscussionsResourceCest.php +++ b/tests/api/DiscussionsResourceCest.php @@ -1,6 +1,8 @@ wantTo('get discussions via API'); - $id = $I->haveRecord('discussions', ['title' => 'Game of Thrones', 'last_time' => date('c')]); - $id2 = $I->haveRecord('discussions', ['title' => 'Lord of the Rings', 'last_time' => date('c')]); + $discussions = Factory::times(2)->create('Flarum\Core\Discussions\Discussion'); $I->sendGET($this->endpoint); $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); - $I->expect('both items are in response'); - $I->seeResponseContainsJson(['id' => (string) $id, 'title' => 'Game of Thrones']); - $I->seeResponseContainsJson(['id' => (string) $id2, 'title' => 'Lord of the Rings']); + $I->expect('there are two discussions in the response'); + $I->assertEquals(2, count($I->grabDataFromJsonResponse('discussions'))); - $I->expect('both items are in root discussions array'); - $I->seeResponseContainsJson(['discussions' => [['id' => (string) $id], ['id' => (string) $id2]]]); + $I->expect('they are the discussions we created'); + $I->seeResponseContainsJson(['id' => (string) $discussions[0]->id, 'title' => $discussions[0]->title]); + $I->seeResponseContainsJson(['id' => (string) $discussions[1]->id, 'title' => $discussions[1]->title]); + } + + public function showDiscussion(ApiTester $I) + { + $I->wantTo('show a single discussion via API'); + + $discussion = Factory::create('Flarum\Core\Discussions\Discussion'); + + $I->sendGET($this->endpoint.'/'.$discussion->id); + $I->seeResponseCodeIs(200); + $I->seeResponseIsJson(); + + $I->seeResponseContainsJson(['discussions' => ['id' => (string) $discussion->id, 'title' => $discussion->title]]); } public function createDiscussion(ApiTester $I) { $I->wantTo('create a discussion via API'); + $I->haveHttpHeader('Authorization', 'Token 123456'); $I->sendPOST($this->endpoint, ['discussions' => ['title' => 'foo', 'content' => 'bar']]); @@ -38,4 +53,36 @@ class DiscussionsResourceCest { $id = $I->grabDataFromJsonResponse('discussions.id'); $I->seeRecord('discussions', ['id' => $id, 'title' => 'foo']); } + + public function updateDiscussion(ApiTester $I) + { + $I->wantTo('update a discussion via API'); + + $I->haveHttpHeader('Authorization', 'Token 123456'); + + $discussion = Factory::create('Flarum\Core\Discussions\Discussion'); + + $I->sendPUT($this->endpoint.'/'.$discussion->id, ['discussions' => ['title' => 'foo']]); + $I->seeResponseCodeIs(200); + $I->seeResponseIsJson(); + $I->seeResponseContainsJson(['title' => 'foo']); + + $id = $I->grabDataFromJsonResponse('discussions.id'); + $I->seeRecord('discussions', ['id' => $id, 'title' => 'foo']); + } + + public function deleteDiscussion(ApiTester $I) + { + $I->wantTo('delete a discussion via API'); + + $I->haveHttpHeader('Authorization', 'Token 123456'); + + $discussion = Factory::create('Flarum\Core\Discussions\Discussion'); + + $I->sendDELETE($this->endpoint.'/'.$discussion->id); + $I->seeResponseCodeIs(204); + $I->seeResponseEquals(''); + + $I->dontSeeRecord('discussions', ['id' => $discussion->id]); + } } \ No newline at end of file diff --git a/tests/api/_bootstrap.php b/tests/api/_bootstrap.php index 8a8855580..d5fb59d60 100644 --- a/tests/api/_bootstrap.php +++ b/tests/api/_bootstrap.php @@ -1,2 +1,33 @@ $permission[0], + 'entity' => $permission[1], + 'permission' => $permission[2] + ]; +} +\DB::table('permissions')->truncate(); +\DB::table('permissions')->insert($permissions); \ No newline at end of file