Merge pull request #6115 from kenjis/fix-DBDebug-false-tests

test: fix forgetting to restore DBDebug value
This commit is contained in:
kenjis 2022-06-15 09:10:17 +09:00 committed by GitHub
commit 89223f7a60
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 78 additions and 53 deletions

View File

@ -323,4 +323,22 @@ trait DatabaseTestTrait
$this->assertEquals($expected, $count, 'Wrong number of matching rows in database.'); $this->assertEquals($expected, $count, 'Wrong number of matching rows in database.');
} }
/**
* Sets $DBDebug to false.
*
* WARNING: this value will persist! take care to roll it back.
*/
protected function disableDBDebug(): void
{
$this->setPrivateProperty($this->db, 'DBDebug', false);
}
/**
* Sets $DBDebug to true.
*/
protected function enableDBDebug(): void
{
$this->setPrivateProperty($this->db, 'DBDebug', true);
}
} }

View File

@ -27,24 +27,14 @@ final class BadQueryTest extends CIUnitTestCase
protected $refresh = true; protected $refresh = true;
protected $seed = CITestSeeder::class; protected $seed = CITestSeeder::class;
private static $origDebug;
/**
* This test must run first to store the inital debug value before we tinker with it below
*/
public function testFirst()
{
$this::$origDebug = $this->getPrivateProperty($this->db, 'DBDebug');
$this->assertIsBool($this::$origDebug);
}
public function testBadQueryDebugTrue() public function testBadQueryDebugTrue()
{ {
// WARNING this value will persist! take care to roll it back. $this->enableDBDebug();
$this->setPrivateProperty($this->db, 'DBDebug', true);
// expect an exception, class and message varies by DBMS // expect an exception, class and message varies by DBMS
$this->expectException(Exception::class); $this->expectException(Exception::class);
$this->db->query('SELECT * FROM table_does_not_exist'); $this->db->query('SELECT * FROM table_does_not_exist');
// this code is never executed // this code is never executed
@ -53,12 +43,13 @@ final class BadQueryTest extends CIUnitTestCase
public function testBadQueryDebugFalse() public function testBadQueryDebugFalse()
{ {
// WARNING this value will persist! take care to roll it back. // WARNING this value will persist! take care to roll it back.
$this->setPrivateProperty($this->db, 'DBDebug', false); $this->disableDBDebug();
// this throws an exception when DBDebug is true, but it'll return FALSE when DBDebug is false // this throws an exception when DBDebug is true, but it'll return FALSE when DBDebug is false
$query = $this->db->query('SELECT * FROM table_does_not_exist'); $query = $this->db->query('SELECT * FROM table_does_not_exist');
$this->assertFalse($query); $this->assertFalse($query);
// restore the DBDebug value in effect when this unit test began $this->enableDBDebug();
$this->setPrivateProperty($this->db, 'DBDebug', self::$origDebug);
} }
} }

View File

@ -27,21 +27,27 @@ final class DbDebugTest extends CIUnitTestCase
public function testDBDebugTrue() public function testDBDebugTrue()
{ {
$this->setPrivateProperty($this->db, 'DBDebug', true); $this->enableDBDebug();
$this->expectException('Exception'); $this->expectException('Exception');
$this->db->simpleQuery('SELECT * FROM db_error'); $this->db->simpleQuery('SELECT * FROM db_error');
} }
public function testDBDebugFalse() public function testDBDebugFalse()
{ {
$this->setPrivateProperty($this->db, 'DBDebug', false); // WARNING this value will persist! take care to roll it back.
$this->disableDBDebug();
$result = $this->db->simpleQuery('SELECT * FROM db_error'); $result = $this->db->simpleQuery('SELECT * FROM db_error');
$this->assertFalse($result); $this->assertFalse($result);
} }
protected function tearDown(): void protected function tearDown(): void
{ {
$this->setPrivateProperty($this->db, 'DBDebug', true); $this->enableDBDebug();
parent::tearDown(); parent::tearDown();
} }
} }

View File

@ -28,17 +28,6 @@ final class DbUtilsTest extends CIUnitTestCase
protected $refresh = true; protected $refresh = true;
protected $seed = CITestSeeder::class; protected $seed = CITestSeeder::class;
private static $origDebug;
/**
* This test must run first to store the inital debug value before we tinker with it below
*/
public function testFirst()
{
$this::$origDebug = $this->getPrivateProperty($this->db, 'DBDebug');
$this->assertIsBool($this::$origDebug);
}
public function testUtilsBackup() public function testUtilsBackup()
{ {
@ -125,11 +114,11 @@ final class DbUtilsTest extends CIUnitTestCase
$util = (new Database())->loadUtils($this->db); $util = (new Database())->loadUtils($this->db);
$this->setPrivateProperty($util, 'optimizeTable', false); $this->setPrivateProperty($util, 'optimizeTable', false);
// set debug to true -- WARNING this change will persist! $this->enableDBDebug();
$this->setPrivateProperty($this->db, 'DBDebug', true);
$this->expectException(DatabaseException::class); $this->expectException(DatabaseException::class);
$this->expectExceptionMessage('Unsupported feature of the database platform you are using.'); $this->expectExceptionMessage('Unsupported feature of the database platform you are using.');
$util->optimizeDatabase(); $util->optimizeDatabase();
// this point in code execution will never be reached // this point in code execution will never be reached
@ -140,14 +129,13 @@ final class DbUtilsTest extends CIUnitTestCase
$util = (new Database())->loadUtils($this->db); $util = (new Database())->loadUtils($this->db);
$this->setPrivateProperty($util, 'optimizeTable', false); $this->setPrivateProperty($util, 'optimizeTable', false);
// set debug to false -- WARNING this change will persist! // WARNING this value will persist! take care to roll it back.
$this->setPrivateProperty($this->db, 'DBDebug', false); $this->disableDBDebug();
$result = $util->optimizeDatabase(); $result = $util->optimizeDatabase();
$this->assertFalse($result); $this->assertFalse($result);
// restore original value grabbed from testFirst -- WARNING this change will persist! $this->enableDBDebug();
$this->setPrivateProperty($this->db, 'DBDebug', self::$origDebug);
} }
public function testUtilsOptimizeTable() public function testUtilsOptimizeTable()

View File

@ -34,13 +34,19 @@ final class DeleteModelTest extends LiveModelTestCase
public function testDeleteFail(): void public function testDeleteFail(): void
{ {
$this->setPrivateProperty($this->db, 'DBDebug', false); // WARNING this value will persist! take care to roll it back.
$this->disableDBDebug();
$this->createModel(JobModel::class); $this->createModel(JobModel::class);
$this->seeInDatabase('job', ['name' => 'Developer']); $this->seeInDatabase('job', ['name' => 'Developer']);
$result = $this->model->where('name123', 'Developer')->delete(); $result = $this->model->where('name123', 'Developer')->delete();
$this->assertFalse($result); $this->assertFalse($result);
$this->seeInDatabase('job', ['name' => 'Developer']); $this->seeInDatabase('job', ['name' => 'Developer']);
$this->enableDBDebug();
} }
public function testDeleteStringPrimaryKey(): void public function testDeleteStringPrimaryKey(): void
@ -68,13 +74,19 @@ final class DeleteModelTest extends LiveModelTestCase
public function testDeleteWithSoftDeleteFail(): void public function testDeleteWithSoftDeleteFail(): void
{ {
$this->setPrivateProperty($this->db, 'DBDebug', false); // WARNING this value will persist! take care to roll it back.
$this->disableDBDebug();
$this->createModel(UserModel::class); $this->createModel(UserModel::class);
$this->seeInDatabase('user', ['name' => 'Derek Jones', 'deleted_at IS NULL' => null]); $this->seeInDatabase('user', ['name' => 'Derek Jones', 'deleted_at IS NULL' => null]);
$result = $this->model->where('name123', 'Derek Jones')->delete(); $result = $this->model->where('name123', 'Derek Jones')->delete();
$this->assertFalse($result); $this->assertFalse($result);
$this->seeInDatabase('user', ['name' => 'Derek Jones', 'deleted_at IS NULL' => null]); $this->seeInDatabase('user', ['name' => 'Derek Jones', 'deleted_at IS NULL' => null]);
$this->enableDBDebug();
} }
public function testDeleteWithSoftDeletesPurge(): void public function testDeleteWithSoftDeletesPurge(): void

View File

@ -26,12 +26,6 @@ use Tests\Support\Models\WithoutAutoIncrementModel;
*/ */
final class InsertModelTest extends LiveModelTestCase final class InsertModelTest extends LiveModelTestCase
{ {
protected function tearDown(): void
{
parent::tearDown();
$this->setPrivateProperty($this->db, 'DBDebug', true);
}
public function testSetWorksWithInsert(): void public function testSetWorksWithInsert(): void
{ {
$this->dontSeeInDatabase('user', [ $this->dontSeeInDatabase('user', [
@ -147,20 +141,25 @@ final class InsertModelTest extends LiveModelTestCase
public function testInsertResultFail(): void public function testInsertResultFail(): void
{ {
$this->setPrivateProperty($this->db, 'DBDebug', false); // WARNING this value will persist! take care to roll it back.
$this->disableDBDebug();
$data = [ $data = [
'name123' => 'Apprentice', 'name123' => 'Apprentice',
'description' => 'That thing you do.', 'description' => 'That thing you do.',
]; ];
$this->createModel(JobModel::class); $this->createModel(JobModel::class);
$result = $this->model->protect(false)->insert($data, false); $result = $this->model->protect(false)->insert($data, false);
$this->assertFalse($result); $this->assertFalse($result);
$lastInsertId = $this->model->getInsertID(); $lastInsertId = $this->model->getInsertID();
$this->assertSame(0, $lastInsertId); $this->assertSame(0, $lastInsertId);
$this->dontSeeInDatabase('job', ['id' => $lastInsertId]); $this->dontSeeInDatabase('job', ['id' => $lastInsertId]);
$this->enableDBDebug();
} }
public function testInsertBatchNewEntityWithDateTime(): void public function testInsertBatchNewEntityWithDateTime(): void

View File

@ -55,17 +55,20 @@ final class SaveModelTest extends LiveModelTestCase
public function testSaveNewRecordArrayFail(): void public function testSaveNewRecordArrayFail(): void
{ {
$this->setPrivateProperty($this->db, 'DBDebug', false); // WARNING this value will persist! take care to roll it back.
$this->disableDBDebug();
$this->createModel(JobModel::class); $this->createModel(JobModel::class);
$data = [ $data = [
'name123' => 'Apprentice', 'name123' => 'Apprentice',
'description' => 'That thing you do.', 'description' => 'That thing you do.',
]; ];
$result = $this->model->protect(false)->save($data); $result = $this->model->protect(false)->save($data);
$this->assertFalse($result); $this->assertFalse($result);
$this->dontSeeInDatabase('job', ['name' => 'Apprentice']); $this->dontSeeInDatabase('job', ['name' => 'Apprentice']);
$this->enableDBDebug();
} }
public function testSaveUpdateRecordArray(): void public function testSaveUpdateRecordArray(): void
@ -84,7 +87,8 @@ final class SaveModelTest extends LiveModelTestCase
public function testSaveUpdateRecordArrayFail(): void public function testSaveUpdateRecordArrayFail(): void
{ {
$this->setPrivateProperty($this->db, 'DBDebug', false); // WARNING this value will persist! take care to roll it back.
$this->disableDBDebug();
$this->createModel(JobModel::class); $this->createModel(JobModel::class);
$data = [ $data = [
@ -92,10 +96,12 @@ final class SaveModelTest extends LiveModelTestCase
'name123' => 'Apprentice', 'name123' => 'Apprentice',
'description' => 'That thing you do.', 'description' => 'That thing you do.',
]; ];
$result = $this->model->protect(false)->save($data); $result = $this->model->protect(false)->save($data);
$this->assertFalse($result); $this->assertFalse($result);
$this->dontSeeInDatabase('job', ['name' => 'Apprentice']); $this->dontSeeInDatabase('job', ['name' => 'Apprentice']);
$this->enableDBDebug();
} }
public function testSaveUpdateRecordObject(): void public function testSaveUpdateRecordObject(): void

View File

@ -96,7 +96,9 @@ final class UpdateModelTest extends LiveModelTestCase
public function testUpdateResultFail(): void public function testUpdateResultFail(): void
{ {
$this->setPrivateProperty($this->db, 'DBDebug', false); // WARNING this value will persist! take care to roll it back.
$this->disableDBDebug();
$this->createModel(UserModel::class);
$data = [ $data = [
'name' => 'Foo', 'name' => 'Foo',
@ -104,14 +106,16 @@ final class UpdateModelTest extends LiveModelTestCase
'country' => 'US', 'country' => 'US',
'deleted' => 0, 'deleted' => 0,
]; ];
$this->createModel(UserModel::class);
$this->model->insert($data); $this->model->insert($data);
$this->setPrivateProperty($this->model, 'allowedFields', ['name123']); $this->setPrivateProperty($this->model, 'allowedFields', ['name123']);
$result = $this->model->update(1, ['name123' => 'Foo Bar 1']); $result = $this->model->update(1, ['name123' => 'Foo Bar 1']);
$this->assertFalse($result); $this->assertFalse($result);
$this->dontSeeInDatabase('user', ['id' => 1, 'name' => 'Foo Bar 1']); $this->dontSeeInDatabase('user', ['id' => 1, 'name' => 'Foo Bar 1']);
$this->enableDBDebug();
} }
public function testUpdateBatchSuccess(): void public function testUpdateBatchSuccess(): void
@ -326,6 +330,7 @@ final class UpdateModelTest extends LiveModelTestCase
$entity->id = 1; $entity->id = 1;
$entity->name = 'Jones Martin'; $entity->name = 'Jones Martin';
$entity->email = 'jones@example.org';
$entity->country = 'India'; $entity->country = 'India';
$entity->deleted = 0; $entity->deleted = 0;