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
<?php
namespace yiiunit\framework\db;
use yii\caching\FileCache;
use yii\db\Schema;
/**
* @group db
* @group mysql
*/
class SchemaTest extends DatabaseTestCase
{
public function testFindTableNames()
{
/** @var Schema $schema */
$schema = $this->getConnection()->schema;
$tables = $schema->getTableNames();
$this->assertTrue(in_array('tbl_customer', $tables));
$this->assertTrue(in_array('tbl_category', $tables));
$this->assertTrue(in_array('tbl_item', $tables));
$this->assertTrue(in_array('tbl_order', $tables));
$this->assertTrue(in_array('tbl_order_item', $tables));
$this->assertTrue(in_array('tbl_type', $tables));
}
public function testGetTableSchemas()
{
/** @var Schema $schema */
$schema = $this->getConnection()->schema;
$tables = $schema->getTableSchemas();
$this->assertEquals(count($schema->getTableNames()), count($tables));
foreach($tables as $table) {
$this->assertInstanceOf('yii\db\TableSchema', $table);
}
}
public function testGetNonExistingTableSchema()
{
$this->assertNull($this->getConnection()->schema->getTableSchema('nonexisting_table'));
}
public function testSchemaCache()
{
/** @var Schema $schema */
$schema = $this->getConnection()->schema;
$schema->db->enableSchemaCache = true;
$schema->db->schemaCache = new FileCache();
$noCacheTable = $schema->getTableSchema('tbl_type', true);
$cachedTable = $schema->getTableSchema('tbl_type', true);
$this->assertEquals($noCacheTable, $cachedTable);
}
public function testCompositeFk()
{
/** @var Schema $schema */
$schema = $this->getConnection()->schema;
$table = $schema->getTableSchema('tbl_composite_fk');
$this->assertCount(1, $table->foreignKeys);
$this->assertTrue(isset($table->foreignKeys[0]));
$this->assertEquals('tbl_order_item', $table->foreignKeys[0][0]);
$this->assertEquals('order_id', $table->foreignKeys[0]['order_id']);
$this->assertEquals('item_id', $table->foreignKeys[0]['item_id']);
}
}