public function test()
 {
     $data = json_encode(['maker' => ['columns' => [['name' => 'id', 'auto_increment' => 1], ['name' => 'name']], 'data_rows' => [['id' => 1, 'name' => 'Maker 1'], ['id' => 2, 'name' => 'Maker 2']]], 'model' => ['columns' => [['name' => 'id', 'auto_increment' => 1], ['name' => 'maker_id', 'foreign_key' => ['table_name' => 'maker', 'column_name' => 'id']], ['name' => 'name']], 'data_rows' => [['id' => 3, 'maker_id' => 1, 'name' => 'Model 1'], ['id' => 4, 'maker_id' => 1, 'name' => 'Model 2']]]]);
     $dataParser = new JsonDataParser();
     $dataParser->setColumnsCreator(new JsonColumnsCreator())->setDataRowsCreator(new JsonDataRowsCreator())->setData($data);
     $tables = $dataParser->getTables();
     $columns = $tables[0]->getColumns();
     $subject = new ForeignKeyColumnsFinder();
     $result = $subject->setTables($tables)->setParentColumn($columns['id'])->getDependentColumns();
     static::assertTrue(is_array($result));
     static::assertCount(1, $result);
     static::assertSame('maker_id', $result[0]->getName());
     static::assertSame('model', $result[0]->getTable()->getName());
     $subject->setParentColumn(new Column('test_column'));
     $this->setExpectedExceptionRegExp(\RuntimeException::class, '/The parent column does not contain a parent table/');
     $subject->getDependentColumns();
 }
 public function test()
 {
     $data = json_encode(['maker' => ['columns' => [['name' => 'id', 'auto_increment' => 1], ['name' => 'name']], 'data_rows' => [['id' => 1, 'name' => 'Maker 1'], ['id' => 2, 'name' => 'Maker 2']]], 'model' => ['columns' => [['name' => 'id', 'auto_increment' => 1], ['name' => 'maker_id', 'foreign_key' => ['table_name' => 'maker', 'column_name' => 'id']], ['name' => 'name']], 'data_rows' => [['id' => 3, 'maker_id' => 1, 'name' => 'Model 1'], ['id' => 4, 'maker_id' => 1, 'name' => 'Model 2'], ['id' => 5, 'maker_id' => 2, 'name' => 'Model 3']]]]);
     $subject = new JsonDataParser();
     $subject->setColumnsCreator(new JsonColumnsCreator())->setDataRowsCreator(new JsonDataRowsCreator())->setData($data);
     $tables = $subject->getTables();
     $makerColumns = $tables[0]->getColumns();
     $event = new AutoIncrementChangeEvent();
     $event->setColumn($makerColumns['id'])->setOldValue(1)->setNewValue(456);
     $subject = new AutoIncrementObserver(new ForeignKeyColumnsFinder());
     $subject->setTables($tables)->notify($event);
     $changedValues = 0;
     foreach ($tables[1]->getDataRows() as $dataRow) {
         foreach ($dataRow->getDataColumns() as $dataColumn) {
             if ('maker_id' === $dataColumn->getName() && 2 !== $dataColumn->getValue()) {
                 static::assertFalse($dataColumn->isOriginalValue());
                 static::assertSame(456, $dataColumn->getValue());
                 $changedValues++;
             }
         }
     }
     static::assertSame(2, $changedValues);
 }
コード例 #3
0
 public function testIncorrectTableColumnsStructure()
 {
     $subject = new JsonDataParser();
     $subject->setData(json_encode(['table' => ['abc']]));
     $this->setExpectedExceptionRegExp(\InvalidArgumentException::class, '/The data structure is incorrect: \'columns\' key is absent/');
     $subject->getTables();
 }