/**
  * @throws \LogicException
  * @throws \RuntimeException
  * @return string
  */
 public function getData()
 {
     if (null === $this->dataProvider) {
         throw new \LogicException('Please, set a data provider.');
     }
     $data = [];
     foreach ($this->dataProvider->getTables() as $table) {
         $data[$table->getName()] = ['columns' => $this->columnsExporter->getTableColumns($table), 'data_rows' => $this->dataRowsExporter->getDataRows($table)];
     }
     return json_encode($data);
 }
 public function test()
 {
     $foreignKey = $this->getMock(ForeignKey::class);
     $foreignKey->method('getTableName')->willReturn('maker');
     $foreignKey->method('getColumnName')->willReturn('id');
     $column = $this->getMock(Column::class, [], ['column_name']);
     $column->method('getName')->willReturn('column_name');
     $column->method('isAutoIncrement')->willReturn(true);
     $column->method('getForeignKey')->willReturn($foreignKey);
     $table = $this->getMock(Table::class, [], ['table_name']);
     $table->method('getColumns')->willReturn([$column]);
     $subject = new JsonTableColumnsExporter();
     $result = $subject->getTableColumns($table);
     static::assertTrue(is_array($result));
     static::assertCount(1, $result);
     $firstElement = reset($result);
     static::assertSame('column_name', $firstElement['name']);
     static::assertSame('1', (string) $firstElement['auto_increment']);
     static::assertSame('maker', $firstElement['foreign_key']['table_name']);
     static::assertSame('id', $firstElement['foreign_key']['column_name']);
 }