103 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			103 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]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |