From db9aa410960ed38ebdbae2ee6ce0ac44ee0eb068 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 16 May 2021 01:07:20 +0100 Subject: [PATCH] Started writing testing for favourites --- tests/FavouriteTest.php | 59 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 tests/FavouriteTest.php diff --git a/tests/FavouriteTest.php b/tests/FavouriteTest.php new file mode 100644 index 000000000..ce5caf5c2 --- /dev/null +++ b/tests/FavouriteTest.php @@ -0,0 +1,59 @@ +first(); + $editor = $this->getEditor(); + + $resp = $this->actingAs($editor)->get($page->getUrl()); + $resp->assertElementContains('button', 'Favourite'); + $resp->assertElementExists('form[method="POST"][action$="/favourites/add"]'); + + $resp = $this->post('/favourites/add', [ + 'type' => get_class($page), + 'id' => $page->id, + ]); + $resp->assertRedirect($page->getUrl()); + $resp->assertSessionHas('success', "\"{$page->name}\" has been added to your favourites"); + + $this->assertDatabaseHas('favourites', [ + 'user_id' => $editor->id, + 'favouritable_type' => $page->getMorphClass(), + 'favouritable_id' => $page->id, + ]); + } + + public function test_page_remove_favourite_flow() + { + $page = Page::query()->first(); + $editor = $this->getEditor(); + Favourite::query()->forceCreate([ + 'user_id' => $editor->id, + 'favouritable_id' => $page->id, + 'favouritable_type' => $page->getMorphClass(), + ]); + + $resp = $this->actingAs($editor)->get($page->getUrl()); + $resp->assertElementContains('button', 'Unfavourite'); + $resp->assertElementExists('form[method="POST"][action$="/favourites/remove"]'); + + $resp = $this->post('/favourites/remove', [ + 'type' => get_class($page), + 'id' => $page->id, + ]); + $resp->assertRedirect($page->getUrl()); + $resp->assertSessionHas('success', "\"{$page->name}\" has been removed from your favourites"); + + $this->assertDatabaseMissing('favourites', [ + 'user_id' => $editor->id, + ]); + } + +} \ No newline at end of file