3 use BookStack\Actions\Favourite;
4 use BookStack\Entities\Models\Page;
7 class FavouriteTest extends TestCase
10 public function test_page_add_favourite_flow()
12 $page = Page::query()->first();
13 $editor = $this->getEditor();
15 $resp = $this->actingAs($editor)->get($page->getUrl());
16 $resp->assertElementContains('button', 'Favourite');
17 $resp->assertElementExists('form[method="POST"][action$="/favourites/add"]');
19 $resp = $this->post('/favourites/add', [
20 'type' => get_class($page),
23 $resp->assertRedirect($page->getUrl());
24 $resp->assertSessionHas('success', "\"{$page->name}\" has been added to your favourites");
26 $this->assertDatabaseHas('favourites', [
27 'user_id' => $editor->id,
28 'favouritable_type' => $page->getMorphClass(),
29 'favouritable_id' => $page->id,
33 public function test_page_remove_favourite_flow()
35 $page = Page::query()->first();
36 $editor = $this->getEditor();
37 Favourite::query()->forceCreate([
38 'user_id' => $editor->id,
39 'favouritable_id' => $page->id,
40 'favouritable_type' => $page->getMorphClass(),
43 $resp = $this->actingAs($editor)->get($page->getUrl());
44 $resp->assertElementContains('button', 'Unfavourite');
45 $resp->assertElementExists('form[method="POST"][action$="/favourites/remove"]');
47 $resp = $this->post('/favourites/remove', [
48 'type' => get_class($page),
51 $resp->assertRedirect($page->getUrl());
52 $resp->assertSessionHas('success', "\"{$page->name}\" has been removed from your favourites");
54 $this->assertDatabaseMissing('favourites', [
55 'user_id' => $editor->id,