59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
use BookStack\Actions\Favourite;
 | 
						|
use BookStack\Entities\Models\Page;
 | 
						|
use Tests\TestCase;
 | 
						|
 | 
						|
class FavouriteTest extends TestCase
 | 
						|
{
 | 
						|
 | 
						|
    public function test_page_add_favourite_flow()
 | 
						|
    {
 | 
						|
        $page = Page::query()->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,
 | 
						|
        ]);
 | 
						|
    }
 | 
						|
 | 
						|
} |