29 private $objectManagerHelper;
34 private $comparatorMock;
38 $this->comparatorMock = $this->getMockBuilder(\
Magento\Framework\Setup\Declaration\Schema\Comparator::class)
39 ->getMockForAbstractClass();
41 $this->objectManagerHelper =
new ObjectManagerHelper($this);
42 $this->model = $this->objectManagerHelper->getObject(
43 \
Magento\Framework\Setup\Declaration\Schema\
Diff\DiffManager::class,
45 'comparator' => $this->comparatorMock
52 $elements = [
'first' => new \stdClass(),
'second' => new \stdClass()];
65 self::assertTrue($this->model->shouldBeCreated($elements,
$element));
66 self::assertFalse($this->model->shouldBeCreated($elements, $existingElement));
69 public function testRegisterModification()
72 $diff = $this->getMockBuilder(Diff::class)
73 ->disableOriginalConstructor()
86 $generatedElement =
new Column(
'third',
'int',
$table,
'Previous column');
87 $diff->expects(self::once())
89 ->with(
$element,
'modify_column', $generatedElement);
90 $this->model->registerModification($diff,
$element, $generatedElement);
93 public function testRegisterIndexModification()
96 $diff = $this->getMockBuilder(Diff::class)
97 ->disableOriginalConstructor()
109 $column =
new Column(
'third',
'int',
$table,
'Previous column');
110 $index =
new Index(
'index_type',
'index',
$table, [$column],
'btree',
'index_type');
111 $generatedIndex =
new Index(
'index_type',
'index',
$table, [$column],
'hash',
'index_type');
112 $diff->expects(self::exactly(2))
114 ->withConsecutive([$generatedIndex,
'drop_element', $generatedIndex], [
$index,
'add_complex_element']);
115 $this->model->registerModification($diff,
$index, $generatedIndex);
118 public function testRegisterRemovalReference()
121 $diff = $this->getMockBuilder(Diff::class)
122 ->disableOriginalConstructor()
134 $refTable =
new Table(
144 $column =
new Column(
'third',
'int',
$table,
'Previous column');
145 $reference =
new Reference(
'ref',
'foreign',
$table,
'ref', $column, $refTable, $column,
'CASCADE');
146 $diff->expects(self::exactly(2))
149 [$reference,
'drop_reference', $reference],
152 $this->model->registerRemoval($diff, [$reference,
$table]);
155 public function testRegisterCreation()
158 $diff = $this->getMockBuilder(Diff::class)
159 ->disableOriginalConstructor()
171 $column =
new Column(
'third',
'int',
$table,
'Previous column');
172 $reference =
new Reference(
'ref',
'foreign',
$table,
'ref', $column,
$table, $column,
'CASCADE');
173 $diff->expects(self::exactly(3))
177 [$column,
'add_column'],
178 [$reference,
'add_complex_element']
180 $this->model->registerCreation($diff,
$table);
181 $this->model->registerCreation($diff, $column);
182 $this->model->registerCreation($diff, $reference);
185 public function testRegisterTableModificationWhenChangeResource()
188 $diff = $this->getMockBuilder(Diff::class)
189 ->disableOriginalConstructor()
201 $generateTable =
new Table(
211 $diff->expects(self::once())
213 ->with(
$table,
'recreate_table', $generateTable);
214 $this->model->registerRecreation(
$table, $generateTable, $diff);
217 public function testRegisterTableModificationWhenChangeEngine()
220 $diff = $this->getMockBuilder(Diff::class)
221 ->disableOriginalConstructor()
233 $generateTable =
new Table(
243 $diff->expects(self::once())
245 ->with(
$table,
'modify_table', $generateTable);
246 $this->model->registerTableModification(
$table, $generateTable, $diff);