+<?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);
+ }
+}