Skip to content

Commit

Permalink
test: 测试使用字符串作为存储 JSON 对象
Browse files Browse the repository at this point in the history
  • Loading branch information
twinh committed May 17, 2021
1 parent 4285437 commit 9853c85
Showing 1 changed file with 56 additions and 0 deletions.
56 changes: 56 additions & 0 deletions tests/Model/CastTraitTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@

namespace MiaoxingTest\Plugin\Model;

use Miaoxing\Plugin\Model\ModelTrait;
use Miaoxing\Plugin\Service\QueryBuilder;
use Miaoxing\Plugin\Service\WeiBaseModel;
use Miaoxing\Plugin\Test\BaseTestCase;
use MiaoxingTest\Plugin\Model\Fixture\TestCast;

Expand Down Expand Up @@ -54,6 +56,11 @@ public static function setUpBeforeClass(): void
'list2_column' => '1|2|3',
],
]);

wei()->schema->table('test_cast_objects')
->id()
->string('object_column')
->exec();
}

public static function tearDownAfterClass(): void
Expand All @@ -65,6 +72,7 @@ public static function tearDownAfterClass(): void
public static function dropTables()
{
wei()->schema->dropIfExists('test_casts');
wei()->schema->dropIfExists('test_cast_objects');
}

public static function providerForSet()
Expand Down Expand Up @@ -308,6 +316,54 @@ public function testObjectSetValue()
$this->assertSame('value', $cast->object_column->test);
}

public function providerForTestStringAsObject(): array
{
return [
[
[],
'{}',
],
[
null,
'',
],
];
}

/**
* @dataProvider providerForTestStringAsObject
* @param mixed $default
* @param mixed $dbValue
*/
public function testStringAsObject($default, $dbValue)
{
$object = new class ($default) extends WeiBaseModel {
use ModelTrait {
__construct as modelConstruct;
}

protected $table = 'test_cast_objects';

protected $columns = [
'object_column' => [
'cast' => 'object',
],
];

public function __construct($default)
{
if (null !== $default) {
$this->columns['object_column']['default'] = $default;
}
$this->modelConstruct();
}
};

$object->save();
$data = wei()->db->select('test_cast_objects', $object->id);
$this->assertSame($dbValue, $data['object_column']);
}

public function testIncr()
{
$cast = TestCast::save([
Expand Down

0 comments on commit 9853c85

Please sign in to comment.