mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-17 06:48:59 +08:00
Merge branch 'master' of github.com:yiisoft/yii2
This commit is contained in:
@@ -426,4 +426,51 @@ class ActiveRecordTest extends DatabaseTestCase
|
||||
$this->assertEquals(0, $record->var3);
|
||||
$this->assertEquals('', $record->stringcol);
|
||||
}
|
||||
|
||||
public function testStoreEmpty()
|
||||
{
|
||||
$record = new NullValues();
|
||||
$record->id = 1;
|
||||
|
||||
// this is to simulate empty html form submission
|
||||
$record->var1 = '';
|
||||
$record->var2 = '';
|
||||
$record->var3 = '';
|
||||
$record->stringcol = '';
|
||||
|
||||
$record->save(false);
|
||||
$this->assertTrue($record->refresh());
|
||||
|
||||
// https://github.com/yiisoft/yii2/commit/34945b0b69011bc7cab684c7f7095d837892a0d4#commitcomment-4458225
|
||||
$this->assertTrue($record->var1 === $record->var2);
|
||||
$this->assertTrue($record->var2 === $record->var3);
|
||||
}
|
||||
|
||||
/**
|
||||
* Some PDO implementations(e.g. cubrid) do not support boolean values.
|
||||
* Make sure this does not affect AR layer.
|
||||
*/
|
||||
public function testBooleanAttribute()
|
||||
{
|
||||
$customer = new Customer();
|
||||
$customer->name = 'boolean customer';
|
||||
$customer->email = 'mail@example.com';
|
||||
$customer->status = true;
|
||||
$customer->save(false);
|
||||
|
||||
$customer->refresh();
|
||||
$this->assertEquals(1, $customer->status);
|
||||
|
||||
$customer->status = false;
|
||||
$customer->save(false);
|
||||
|
||||
$customer->refresh();
|
||||
$this->assertEquals(0, $customer->status);
|
||||
|
||||
$customers = Customer::find()->where(['status' => true])->all();
|
||||
$this->assertEquals(2, count($customers));
|
||||
|
||||
$customers = Customer::find()->where(['status' => false])->all();
|
||||
$this->assertEquals(1, count($customers));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,32 +11,4 @@ use yiiunit\framework\db\ActiveRecordTest;
|
||||
class CubridActiveRecordTest extends ActiveRecordTest
|
||||
{
|
||||
public $driverName = 'cubrid';
|
||||
|
||||
/**
|
||||
* cubrid PDO does not support boolean values.
|
||||
* Make sure this does not affect AR layer.
|
||||
*/
|
||||
public function testBooleanAttribute()
|
||||
{
|
||||
$customer = new Customer();
|
||||
$customer->name = 'boolean customer';
|
||||
$customer->email = 'mail@example.com';
|
||||
$customer->status = true;
|
||||
$customer->save(false);
|
||||
|
||||
$customer->refresh();
|
||||
$this->assertEquals(1, $customer->status);
|
||||
|
||||
$customer->status = false;
|
||||
$customer->save(false);
|
||||
|
||||
$customer->refresh();
|
||||
$this->assertEquals(0, $customer->status);
|
||||
|
||||
$customers = Customer::find()->where(['status' => true])->all();
|
||||
$this->assertEquals(2, count($customers));
|
||||
|
||||
$customers = Customer::find()->where(['status' => false])->all();
|
||||
$this->assertEquals(1, count($customers));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,4 +11,9 @@ use yiiunit\framework\db\ActiveRecordTest;
|
||||
class PostgreSQLActiveRecordTest extends ActiveRecordTest
|
||||
{
|
||||
protected $driverName = 'pgsql';
|
||||
|
||||
public function testBooleanAttribute()
|
||||
{
|
||||
$this->markTestSkipped('Storing boolean values does not work in PostgreSQL right now. See https://github.com/yiisoft/yii2/issues/1115 for details.');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace yiiunit\framework\db\sqlite;
|
||||
|
||||
use yiiunit\data\ar\Customer;
|
||||
use yiiunit\framework\db\ActiveRecordTest;
|
||||
|
||||
/**
|
||||
@@ -10,4 +11,35 @@ use yiiunit\framework\db\ActiveRecordTest;
|
||||
class SqliteActiveRecordTest extends ActiveRecordTest
|
||||
{
|
||||
protected $driverName = 'sqlite';
|
||||
|
||||
/**
|
||||
* Some PDO implementations(e.g. cubrid) do not support boolean values.
|
||||
* Make sure this does not affect AR layer.
|
||||
*/
|
||||
public function testBooleanAttribute()
|
||||
{
|
||||
$customer = new Customer();
|
||||
$customer->name = 'boolean customer';
|
||||
$customer->email = 'mail@example.com';
|
||||
$customer->status = true;
|
||||
$customer->save(false);
|
||||
|
||||
$customer->refresh();
|
||||
$this->assertEquals(1, $customer->status);
|
||||
|
||||
$customer->status = false;
|
||||
$customer->save(false);
|
||||
|
||||
$customer->refresh();
|
||||
// sqlite will return empty string here but it would still
|
||||
// evaluate to false or null so we accept it
|
||||
$this->assertTrue(0 == $customer->status);
|
||||
|
||||
// select with boolean values does not seem to work in sqlite
|
||||
// $customers = Customer::find()->where(['status' => true])->all();
|
||||
// $this->assertEquals(2, count($customers));
|
||||
//
|
||||
// $customers = Customer::find()->where(['status' => false])->all();
|
||||
// $this->assertEquals(1, count($customers));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user