mirror of
https://github.com/yiisoft/yii2.git
synced 2025-10-30 18:17:00 +08:00
Revert 20045.
This commit is contained in:
@ -228,11 +228,6 @@ SQL;
|
||||
]
|
||||
);
|
||||
|
||||
$columns['bool_col']['type'] = 'boolean';
|
||||
$columns['bool_col']['phpType'] = 'boolean';
|
||||
$columns['bool_col2']['type'] = 'boolean';
|
||||
$columns['bool_col2']['phpType'] = 'boolean';
|
||||
|
||||
if (version_compare($version, '5.7', '<')) {
|
||||
$columns['int_col3']['phpType'] = 'string';
|
||||
$columns['json_col']['type'] = 'text';
|
||||
|
||||
@ -1,249 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @link https://www.yiiframework.com/
|
||||
* @copyright Copyright (c) 2008 Yii Software LLC
|
||||
* @license https://www.yiiframework.com/license/
|
||||
*/
|
||||
|
||||
namespace yiiunit\framework\db\mysql\type;
|
||||
|
||||
use yii\db\mysql\Schema;
|
||||
use yiiunit\framework\db\DatabaseTestCase;
|
||||
|
||||
/**
|
||||
* @group db
|
||||
* @group mysql
|
||||
*/
|
||||
class BooleanTest extends DatabaseTestCase
|
||||
{
|
||||
protected $driverName = 'mysql';
|
||||
|
||||
public function testBoolean()
|
||||
{
|
||||
$db = $this->getConnection(true);
|
||||
$schema = $db->getSchema();
|
||||
$tableName = '{{%boolean}}';
|
||||
|
||||
if ($db->getTableSchema($tableName)) {
|
||||
$db->createCommand()->dropTable($tableName)->execute();
|
||||
}
|
||||
|
||||
$db->createCommand()->createTable(
|
||||
$tableName,
|
||||
[
|
||||
'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
|
||||
'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
|
||||
'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1),
|
||||
]
|
||||
)->execute();
|
||||
|
||||
// test type `boolean`
|
||||
$columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint');
|
||||
$this->assertSame('boolean', $columnBoolColTinyint->phpType);
|
||||
|
||||
$columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit');
|
||||
$this->assertSame('boolean', $columnBoolColBit->phpType);
|
||||
|
||||
// test value `false`
|
||||
$db->createCommand()->insert($tableName, ['bool_col_tinyint' => false, 'bool_col_bit' => false])->execute();
|
||||
$boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne();
|
||||
$this->assertEquals(0, $boolValues['bool_col_tinyint']);
|
||||
$this->assertEquals(0, $boolValues['bool_col_bit']);
|
||||
|
||||
// test php typecast
|
||||
$phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
|
||||
$this->assertFalse($phpTypeCastBoolColTinyint);
|
||||
|
||||
$phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
|
||||
$this->assertFalse($phpTypeCastBoolColBit);
|
||||
|
||||
// test value `true`
|
||||
$db->createCommand()->insert($tableName, ['bool_col_tinyint' => true, 'bool_col_bit' => true])->execute();
|
||||
$boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 2")->queryOne();
|
||||
$this->assertEquals(1, $boolValues['bool_col_tinyint']);
|
||||
$this->assertEquals(1, $boolValues['bool_col_bit']);
|
||||
|
||||
// test php typecast
|
||||
$phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
|
||||
$this->assertTrue($phpTypeCastBoolColTinyint);
|
||||
|
||||
$phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
|
||||
$this->assertTrue($phpTypeCastBoolColBit);
|
||||
}
|
||||
|
||||
public function testBooleanWithValueInteger()
|
||||
{
|
||||
$db = $this->getConnection(true);
|
||||
$schema = $db->getSchema();
|
||||
$tableName = '{{%boolean}}';
|
||||
|
||||
if ($db->getTableSchema($tableName)) {
|
||||
$db->createCommand()->dropTable($tableName)->execute();
|
||||
}
|
||||
|
||||
$db->createCommand()->createTable(
|
||||
$tableName,
|
||||
[
|
||||
'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
|
||||
'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
|
||||
'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1),
|
||||
]
|
||||
)->execute();
|
||||
|
||||
// test type `boolean`
|
||||
$columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint');
|
||||
$this->assertSame('boolean', $columnBoolColTinyint->phpType);
|
||||
|
||||
$columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit');
|
||||
$this->assertSame('boolean', $columnBoolColBit->phpType);
|
||||
|
||||
// test value `0`
|
||||
$db->createCommand()->insert($tableName, ['bool_col_tinyint' => 0, 'bool_col_bit' => 0])->execute();
|
||||
$boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne();
|
||||
$this->assertEquals(0, $boolValues['bool_col_tinyint']);
|
||||
$this->assertEquals(0, $boolValues['bool_col_bit']);
|
||||
|
||||
// test php typecast
|
||||
$phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
|
||||
$this->assertFalse($phpTypeCastBoolColTinyint);
|
||||
|
||||
$phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
|
||||
$this->assertFalse($phpTypeCastBoolColBit);
|
||||
|
||||
// test value `1`
|
||||
$db->createCommand()->insert($tableName, ['bool_col_tinyint' => 1, 'bool_col_bit' => 1])->execute();
|
||||
$boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 2")->queryOne();
|
||||
$this->assertEquals(1, $boolValues['bool_col_tinyint']);
|
||||
$this->assertEquals(1, $boolValues['bool_col_bit']);
|
||||
|
||||
// test php typecast
|
||||
$phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
|
||||
$this->assertTrue($phpTypeCastBoolColTinyint);
|
||||
|
||||
$phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
|
||||
$this->assertTrue($phpTypeCastBoolColBit);
|
||||
}
|
||||
|
||||
public function testBooleanWithValueNegative()
|
||||
{
|
||||
$db = $this->getConnection(true);
|
||||
$schema = $db->getSchema();
|
||||
$tableName = '{{%boolean}}';
|
||||
|
||||
if ($db->getTableSchema($tableName)) {
|
||||
$db->createCommand()->dropTable($tableName)->execute();
|
||||
}
|
||||
|
||||
$db->createCommand()->createTable(
|
||||
$tableName,
|
||||
[
|
||||
'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
|
||||
'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
|
||||
'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1),
|
||||
]
|
||||
)->execute();
|
||||
|
||||
// test type `boolean`
|
||||
$columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint');
|
||||
$this->assertSame('boolean', $columnBoolColTinyint->phpType);
|
||||
|
||||
$columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit');
|
||||
$this->assertSame('boolean', $columnBoolColBit->phpType);
|
||||
|
||||
// test value `-1`
|
||||
$db->createCommand()->insert($tableName, ['bool_col_tinyint' => -1, 'bool_col_bit' => -1])->execute();
|
||||
$boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne();
|
||||
|
||||
$this->assertEquals(1, $boolValues['bool_col_tinyint']);
|
||||
$this->assertEquals(1, $boolValues['bool_col_bit']);
|
||||
|
||||
// test php typecast
|
||||
$phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
|
||||
$this->assertTrue($phpTypeCastBoolColTinyint);
|
||||
|
||||
$phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
|
||||
$this->assertTrue($phpTypeCastBoolColBit);
|
||||
}
|
||||
|
||||
public function testBooleanWithValueNull()
|
||||
{
|
||||
$db = $this->getConnection(true);
|
||||
$schema = $db->getSchema();
|
||||
$tableName = '{{%boolean}}';
|
||||
|
||||
if ($db->getTableSchema($tableName)) {
|
||||
$db->createCommand()->dropTable($tableName)->execute();
|
||||
}
|
||||
|
||||
$db->createCommand()->createTable(
|
||||
$tableName,
|
||||
[
|
||||
'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
|
||||
'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
|
||||
'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1),
|
||||
]
|
||||
)->execute();
|
||||
|
||||
// test type `boolean`
|
||||
$columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint');
|
||||
$this->assertSame('boolean', $columnBoolColTinyint->phpType);
|
||||
|
||||
$columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit');
|
||||
$this->assertSame('boolean', $columnBoolColBit->phpType);
|
||||
|
||||
// test value `null`
|
||||
$db->createCommand()->insert($tableName, ['bool_col_tinyint' => null, 'bool_col_bit' => null])->execute();
|
||||
$boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne();
|
||||
|
||||
$this->assertNull($boolValues['bool_col_tinyint']);
|
||||
$this->assertNull($boolValues['bool_col_bit']);
|
||||
|
||||
// test php typecast
|
||||
$phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
|
||||
$this->assertNull($phpTypeCastBoolColTinyint);
|
||||
|
||||
$phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
|
||||
$this->assertNull($phpTypeCastBoolColBit);
|
||||
}
|
||||
|
||||
public function testBooleanWithValueOverflow()
|
||||
{
|
||||
$db = $this->getConnection(true);
|
||||
$schema = $db->getSchema();
|
||||
$tableName = '{{%boolean}}';
|
||||
|
||||
if ($db->getTableSchema($tableName)) {
|
||||
$db->createCommand()->dropTable($tableName)->execute();
|
||||
}
|
||||
|
||||
$db->createCommand()->createTable(
|
||||
$tableName,
|
||||
[
|
||||
'id' => $schema->createColumnSchemaBuilder(Schema::TYPE_PK),
|
||||
'bool_col_tinyint' => $schema->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN),
|
||||
'bool_col_bit' => $schema->createColumnSchemaBuilder('bit', 1),
|
||||
]
|
||||
)->execute();
|
||||
|
||||
// test type `boolean`
|
||||
$columnBoolColTinyint = $db->getTableSchema($tableName)->getColumn('bool_col_tinyint');
|
||||
$this->assertSame('boolean', $columnBoolColTinyint->phpType);
|
||||
|
||||
$columnBoolColBit = $db->getTableSchema($tableName)->getColumn('bool_col_bit');
|
||||
$this->assertSame('boolean', $columnBoolColBit->phpType);
|
||||
|
||||
// test value `2`
|
||||
$db->createCommand()->insert($tableName, ['bool_col_tinyint' => 2, 'bool_col_bit' => 2])->execute();
|
||||
$boolValues = $db->createCommand("SELECT * FROM $tableName WHERE id = 1")->queryOne();
|
||||
|
||||
$this->assertEquals(1, $boolValues['bool_col_tinyint']);
|
||||
$this->assertEquals(1, $boolValues['bool_col_bit']);
|
||||
|
||||
// test php typecast
|
||||
$phpTypeCastBoolColTinyint = $columnBoolColTinyint->phpTypecast($boolValues['bool_col_tinyint']);
|
||||
$this->assertTrue($phpTypeCastBoolColTinyint);
|
||||
|
||||
$phpTypeCastBoolColBit = $columnBoolColBit->phpTypecast($boolValues['bool_col_bit']);
|
||||
$this->assertTrue($phpTypeCastBoolColBit);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user