26 private $objectManager;
36 private $resourceConnectionMock;
41 $this->resourceConnectionMock = $this->getMockBuilder(ResourceConnection::class)
42 ->disableOriginalConstructor()
44 $this->foreignKey = $this->objectManager->getObject(
47 'resourceConnection' => $this->resourceConnectionMock
55 public function testToDefinition()
58 $constraint = $this->getMockBuilder(Reference::class)
59 ->disableOriginalConstructor()
61 $columnMock = $this->getMockBuilder(Column::class)
62 ->disableOriginalConstructor()
64 $refColumnMock = $this->getMockBuilder(Column::class)
65 ->disableOriginalConstructor()
67 $adapterMock = $this->getMockBuilder(AdapterInterface::class)
68 ->disableOriginalConstructor()
70 $tableMock = $this->getMockBuilder(Table::class)
71 ->disableOriginalConstructor()
73 $refTableMock = $this->getMockBuilder(Table::class)
74 ->disableOriginalConstructor()
77 $columnMock->expects($this->any())->method(
'getName')->willReturn(
'col_name');
78 $refColumnMock->expects($this->any())->method(
'getName')->willReturn(
'ref_col_name');
79 $constraint->expects($this->any())->method(
'getName')->willReturn(
'fk_name');
80 $constraint->expects($this->any())->method(
'getOnDelete')->willReturn(
'CASCADE');
81 $tableMock->expects($this->any())->method(
'getResource')->willReturn(
'default');
82 $constraint->expects($this->any())->method(
'getTable')->willReturn($tableMock);
83 $refTableMock->expects($this->any())->method(
'getName')->willReturn(
'ref_table');
84 $constraint->expects($this->any())->method(
'getReferenceTable')->willReturn($refTableMock);
85 $constraint->expects($this->any())->method(
'getColumn')->willReturn($columnMock);
86 $constraint->expects($this->any())->method(
'getReferenceColumn')->willReturn($refColumnMock);
87 $this->resourceConnectionMock->expects($this->once())
88 ->method(
'getConnection')
90 ->willReturn($adapterMock);
91 $this->resourceConnectionMock->expects($this->any())->method(
'getTableName')->willReturnArgument(0);
93 $adapterMock->expects($this->any())
94 ->method(
'quoteIdentifier')
97 [
'fk_name',
false,
'`fk_name`'],
98 [
'col_name',
false,
'`col_name`'],
99 [
'ref_table',
false,
'`ref_table`'],
100 [
'`ref_table`',
false,
'`ref_table`'],
101 [
'ref_col_name',
false,
'`ref_col_name`'],
106 'CONSTRAINT `fk_name` FOREIGN KEY (`col_name`) REFERENCES `ref_table` (`ref_col_name`) ON DELETE CASCADE',
120 $result = $this->foreignKey->fromDefinition([
'Create Table' => $definition]);
121 $this->assertEquals($expectedDefinition,
$result);
131 'definition' =>
'CREATE TABLE `table_name` (' 132 .
'`col_name` INT(10) UNSIGNED NOT NULL COMMENT \'column name\',' 133 .
'INDEX `TEST_INDEX` (`col_name`),' 134 .
'CONSTRAINT `fk_name` FOREIGN KEY (`col_name`) ' 135 .
'REFERENCES `ref_table` (`ref_col_name`) ON DELETE CASCADE',
136 'excpectedDefiniton' => [
140 'column' =>
'col_name',
141 'referenceTable' =>
'ref_table',
142 'referenceColumn' =>
'ref_col_name',
143 'onDelete' =>
'CASCADE' 148 'definition' =>
'CREATE TABLE `table_name` (' 149 .
'`col_name` INT(10) UNSIGNED NOT NULL COMMENT \'column name\',' 150 .
'INDEX `TEST_INDEX` (`col_name`),' 151 .
'CONSTRAINT `fk_name` FOREIGN KEY(`col_name`)' 152 .
'REFERENCES `ref_table`(`ref_col_name`)ON DELETE NO ACTION',
153 'excpectedDefiniton' => [
157 'column' =>
'col_name',
158 'referenceTable' =>
'ref_table',
159 'referenceColumn' =>
'ref_col_name',
160 'onDelete' =>
'NO ACTION' 165 'definition' =>
'CREATE TABLE `table_name` (' 166 .
'`column_name` INT(10) UNSIGNED NOT NULL COMMENT \'column name\',' 167 .
'INDEX `TEST_INDEX` (`col_name`),' 168 .
'CONSTRAINT `fk_name` FOREIGN KEY(`column_name`)' 169 .
'REFERENCES `ref_table`(`ref_col_name`)ON DELETE SET DEFAULT',
170 'excpectedDefiniton' => [
174 'column' =>
'column_name',
175 'referenceTable' =>
'ref_table',
176 'referenceColumn' =>
'ref_col_name',
177 'onDelete' =>
'SET DEFAULT' 182 'definition' =>
'CREATE TABLE `table_name` (' 183 .
'`column_name` INT(10) UNSIGNED NOT NULL COMMENT \'column name\',' 184 .
'INDEX `TEST_INDEX` (`col_name`),' 185 .
'CONSTRAINT `fk_name` FOREIGN KEY(`column_name`)' 186 .
'REFERENCES `ref_table`(`ref_col_name`)ON DELETE SET NULL',
187 'excpectedDefiniton' => [
191 'column' =>
'column_name',
192 'referenceTable' =>
'ref_table',
193 'referenceColumn' =>
'ref_col_name',
194 'onDelete' =>
'SET NULL' 199 'definition' =>
'CREATE TABLE `table_name` (' 200 .
'`column_name` INT(10) UNSIGNED NOT NULL COMMENT \'column name\',' 201 .
'INDEX `TEST_INDEX` (`col_name`),' 202 .
'CONSTRAINT `fk_name` FOREIGN KEY(`column_name`)' 203 .
'REFERENCES `ref_table`(`ref_col_name`)ON DELETE RESTRICT ON UPDATE RESTRICT',
204 'excpectedDefiniton' => [
208 'column' =>
'column_name',
209 'referenceTable' =>
'ref_table',
210 'referenceColumn' =>
'ref_col_name',
211 'onDelete' =>
'RESTRICT'
testFromDefinition($definition, $expectedDefinition)