BookStack/tests/CommandsTest.php
Dan Brown 0abed1afe5
Added clear activity/revision commands. Cleaned commands.
Added testing to cover each command.
Removed example laravel inspire command.
Standardised command names to be behind 'bookstack' naming.
In reference to #320.
2017-02-26 09:16:24 +00:00

102 lines
3.2 KiB
PHP

<?php namespace Tests;
use BookStack\JointPermission;
use BookStack\Page;
use BookStack\Repos\EntityRepo;
class CommandsTest extends TestCase
{
public function test_clear_views_command()
{
$this->asEditor();
$page = Page::first();
$this->get($page->getUrl());
$this->assertDatabaseHas('views', [
'user_id' => $this->getEditor()->id,
'viewable_id' => $page->id,
'views' => 1
]);
$exitCode = \Artisan::call('bookstack:clear-views');
$this->assertTrue($exitCode === 0, 'Command executed successfully');
$this->assertDatabaseMissing('views', [
'user_id' => $this->getEditor()->id
]);
}
public function test_clear_activity_command()
{
$this->asEditor();
$page = Page::first();
\Activity::add($page, 'page_update', $page->book->id);
$this->assertDatabaseHas('activities', [
'key' => 'page_update',
'entity_id' => $page->id,
'user_id' => $this->getEditor()->id
]);
$exitCode = \Artisan::call('bookstack:clear-activity');
$this->assertTrue($exitCode === 0, 'Command executed successfully');
$this->assertDatabaseMissing('activities', [
'key' => 'page_update'
]);
}
public function test_clear_revisions_command()
{
$this->asEditor();
$entityRepo = $this->app[EntityRepo::class];
$page = Page::first();
$entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page', 'html' => '<p>new content</p>', 'summary' => 'page revision testing']);
$entityRepo->updatePageDraft($page, ['name' => 'updated page', 'html' => '<p>new content in draft</p>', 'summary' => 'page revision testing']);
$this->assertDatabaseHas('page_revisions', [
'page_id' => $page->id,
'type' => 'version'
]);
$this->assertDatabaseHas('page_revisions', [
'page_id' => $page->id,
'type' => 'update_draft'
]);
$exitCode = \Artisan::call('bookstack:clear-revisions');
$this->assertTrue($exitCode === 0, 'Command executed successfully');
$this->assertDatabaseMissing('page_revisions', [
'page_id' => $page->id,
'type' => 'version'
]);
$this->assertDatabaseHas('page_revisions', [
'page_id' => $page->id,
'type' => 'update_draft'
]);
$exitCode = \Artisan::call('bookstack:clear-revisions', ['--all' => true]);
$this->assertTrue($exitCode === 0, 'Command executed successfully');
$this->assertDatabaseMissing('page_revisions', [
'page_id' => $page->id,
'type' => 'update_draft'
]);
}
public function test_regen_permissions_command()
{
JointPermission::query()->truncate();
$page = Page::first();
$this->assertDatabaseMissing('joint_permissions', ['entity_id' => $page->id]);
$exitCode = \Artisan::call('bookstack:regenerate-permissions');
$this->assertTrue($exitCode === 0, 'Command executed successfully');
$this->assertDatabaseHas('joint_permissions', ['entity_id' => $page->id]);
}
}