-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathColumnParserTest.php
More file actions
116 lines (107 loc) · 4.85 KB
/
ColumnParserTest.php
File metadata and controls
116 lines (107 loc) · 4.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php declare(strict_types=1);
namespace Tests\DbModel;
use PHPUnit\Framework\TestCase;
/**
* 测试 php-db-model\DbModel\ColumnParser
*
* @author fdipzone
*/
final class ColumnParserTest extends TestCase
{
/**
* @covers \DbModel\ColumnParser::convertToColumnSql
*/
public function testConvertToColumnSql()
{
$cases = array(
array(
'column_setting' => "name=id type=int length=11 is_null=0 is_unsigned=1 auto_increment=1 comment=用户id",
'expected_sql' => "`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id'",
),
array(
'column_setting' => "name=phone type=varchar length=11 is_null=0 comment=电话号码",
'expected_sql' => "`phone` varchar(11) NOT NULL COMMENT '电话号码'",
),
array(
'column_setting' => "name=name type=varchar length=11 is_null=0 default='' comment=姓名",
'expected_sql' => "`name` varchar(11) NOT NULL DEFAULT '' COMMENT '姓名'",
),
array(
'column_setting' => "name=age type=tinyint length=3 is_null=0 is_unsigned=1 default=0 comment=年龄",
'expected_sql' => "`age` tinyint(3) unsigned NOT NULL DEFAULT 0 COMMENT '年龄'",
),
array(
'column_setting' => "name=remark type=text is_null=0 comment=备注",
'expected_sql' => "`remark` text NOT NULL COMMENT '备注'",
),
);
foreach($cases as $case)
{
$column_sql = \Tests\Utils\PHPUnitExtension::callStaticMethod('\DbModel\ColumnParser', 'convertToColumnSql', [$case['column_setting']]);
$this->assertEquals($case['expected_sql'], $column_sql);
}
}
/**
* @covers \DbModel\ColumnParser::convertToColumnSql
*/
public function testConvertToColumnSqlNameException()
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('db model column parser: column name cannot be null');
$column_setting = "type=int length=11 is_null=0 is_unsigned=1 auto_increment=1 comment=用户id";
\Tests\Utils\PHPUnitExtension::callStaticMethod('\DbModel\ColumnParser', 'convertToColumnSql', [$column_setting]);
}
/**
* @covers \DbModel\ColumnParser::convertToColumnSql
*/
public function testConvertToColumnSqlTypeException()
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('db model column parser: column type cannot be null');
$column_setting = "name=id length=11 is_null=0 is_unsigned=1 auto_increment=1 comment=用户id";
\Tests\Utils\PHPUnitExtension::callStaticMethod('\DbModel\ColumnParser', 'convertToColumnSql', [$column_setting]);
}
/**
* @covers \DbModel\ColumnParser::parseColumnSetting
*/
public function testParseColumnSetting()
{
$cases = array(
array(
'column_setting' => "name=id type=int length=11 is_null=0 is_unsigned=1 auto_increment=1 comment=用户id",
'expected_column_kv_setting' => [
'name'=>'id', 'type'=>'int', 'length'=>11, 'is_null'=>0, 'is_unsigned'=>1, 'auto_increment'=>1, 'comment'=>'用户id'
],
),
array(
'column_setting' => "name=phone type=varchar length=11 is_null=0 comment=电话号码",
'expected_column_kv_setting' => [
'name'=>'phone', 'type'=>'varchar', 'length'=>11, 'is_null'=>0, 'comment'=>'电话号码'
],
),
array(
'column_setting' => "name=name type=varchar length=11 is_null=0 default='' comment=姓名",
'expected_column_kv_setting' => [
'name'=>'name', 'type'=>'varchar', 'length'=>11, 'is_null'=>0, 'default'=>"''", 'comment'=>'姓名'
],
),
array(
'column_setting' => "name=age type=tinyint length=3 is_null=0 is_unsigned=1 default=0 comment=年龄",
'expected_column_kv_setting' => [
'name'=>'age', 'type'=>'tinyint', 'length'=>3, 'is_null'=>0, 'is_unsigned'=>1, 'default'=>0, 'comment'=>'年龄'
],
),
array(
'column_setting' => "name=remark type=text is_null=0 comment=备注",
'expected_column_kv_setting' => [
'name'=>'remark', 'type'=>'text', 'is_null'=>0, 'comment'=>'备注'
],
),
);
foreach($cases as $case)
{
$column_kv_setting = \Tests\Utils\PHPUnitExtension::callStaticMethod('\DbModel\ColumnParser', 'parseColumnSetting', [$case['column_setting']]);
$this->assertEquals($case['expected_column_kv_setting'], $column_kv_setting);
}
}
}