32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace Tests\Unit; | ||
|  | 
 | ||
|  | use BadMethodCallException; | ||
|  | use BookStack\Entities\Models\Page; | ||
|  | use Tests\TestCase; | ||
|  | 
 | ||
|  | /** | ||
|  |  * This class tests assumptions we're relying upon in the framework. | ||
|  |  * This is primarily to keep track of certain bits of functionality that | ||
|  |  * may be used in important areas such as to enforce permissions. | ||
|  |  */ | ||
|  | class FrameworkAssumptionTest extends TestCase | ||
|  | { | ||
|  |     public function test_scopes_error_if_not_existing() | ||
|  |     { | ||
|  |         $this->expectException(BadMethodCallException::class); | ||
|  |         $this->expectExceptionMessage('Call to undefined method BookStack\Entities\Models\Page::scopeNotfoundscope()'); | ||
|  |         Page::query()->scopes('notfoundscope'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function test_scopes_applies_upon_existing() | ||
|  |     { | ||
|  |         // Page has SoftDeletes trait by default, so we apply our custom scope and ensure
 | ||
|  |         // it stacks on the global scope to filter out deleted items.
 | ||
|  |         $query = Page::query()->scopes('visible')->toSql(); | ||
|  |         $this->assertStringContainsString('joint_permissions', $query); | ||
|  |         $this->assertStringContainsString('`deleted_at` is null', $query); | ||
|  |     } | ||
|  | } |