2017-02-04 19:58:42 +08:00
|
|
|
<?php namespace Tests;
|
2015-07-13 03:01:42 +08:00
|
|
|
|
2020-01-12 22:45:54 +08:00
|
|
|
use BookStack\Entities\Entity;
|
2017-02-05 22:37:50 +08:00
|
|
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
2017-02-04 19:58:42 +08:00
|
|
|
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
|
2015-09-03 01:26:33 +08:00
|
|
|
|
2017-02-04 19:58:42 +08:00
|
|
|
abstract class TestCase extends BaseTestCase
|
2015-07-13 03:01:42 +08:00
|
|
|
{
|
2017-02-04 19:58:42 +08:00
|
|
|
use CreatesApplication;
|
2017-02-05 22:37:50 +08:00
|
|
|
use DatabaseTransactions;
|
2018-04-15 01:47:13 +08:00
|
|
|
use SharedTestHelpers;
|
2018-09-21 22:15:16 +08:00
|
|
|
|
2018-01-28 21:33:50 +08:00
|
|
|
/**
|
|
|
|
* The base URL to use while testing the application.
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $baseUrl = 'http://localhost';
|
|
|
|
|
2017-02-05 22:20:59 +08:00
|
|
|
/**
|
2018-04-15 01:47:13 +08:00
|
|
|
* Assert a permission error has occurred.
|
|
|
|
* @param TestResponse $response
|
2018-09-21 22:15:16 +08:00
|
|
|
* @return TestCase
|
2017-08-28 20:55:39 +08:00
|
|
|
*/
|
2018-04-15 01:47:13 +08:00
|
|
|
protected function assertPermissionError(TestResponse $response)
|
2017-08-28 20:55:39 +08:00
|
|
|
{
|
2018-04-15 01:47:13 +08:00
|
|
|
$response->assertRedirect('/');
|
2018-09-21 22:15:16 +08:00
|
|
|
$this->assertSessionHas('error');
|
2018-04-15 01:47:13 +08:00
|
|
|
session()->remove('error');
|
2018-09-21 22:15:16 +08:00
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Assert the session contains a specific entry.
|
|
|
|
* @param string $key
|
|
|
|
* @return $this
|
|
|
|
*/
|
|
|
|
protected function assertSessionHas(string $key)
|
|
|
|
{
|
|
|
|
$this->assertTrue(session()->has($key), "Session does not contain a [{$key}] entry");
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Override of the get method so we can get visibility of custom TestResponse methods.
|
|
|
|
* @param string $uri
|
|
|
|
* @param array $headers
|
|
|
|
* @return TestResponse
|
|
|
|
*/
|
|
|
|
public function get($uri, array $headers = [])
|
|
|
|
{
|
|
|
|
return parent::get($uri, $headers);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create the test response instance from the given response.
|
|
|
|
*
|
|
|
|
* @param \Illuminate\Http\Response $response
|
|
|
|
* @return TestResponse
|
|
|
|
*/
|
|
|
|
protected function createTestResponse($response)
|
|
|
|
{
|
|
|
|
return TestResponse::fromBaseResponse($response);
|
2017-08-28 20:55:39 +08:00
|
|
|
}
|
2020-01-12 22:45:54 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Assert that an activity entry exists of the given key.
|
|
|
|
* Checks the activity belongs to the given entity if provided.
|
|
|
|
*/
|
|
|
|
protected function assertActivityExists(string $key, Entity $entity = null)
|
|
|
|
{
|
|
|
|
$detailsToCheck = ['key' => $key];
|
|
|
|
|
|
|
|
if ($entity) {
|
|
|
|
$detailsToCheck['entity_type'] = $entity->getMorphClass();
|
|
|
|
$detailsToCheck['entity_id'] = $entity->id;
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->assertDatabaseHas('activities', $detailsToCheck);
|
|
|
|
}
|
2017-02-04 19:58:42 +08:00
|
|
|
}
|