From 47ba09846a7a66596a7e50157d89ded9f13bf43b Mon Sep 17 00:00:00 2001 From: Samuel Adeshina Date: Wed, 4 May 2016 21:07:56 +0100 Subject: [PATCH] Added support for array structures --- src/JsonDbStructure.php | 9 +++++++-- tests/JsonDbStructureTest.php | 19 ++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/JsonDbStructure.php b/src/JsonDbStructure.php index 32714e7..583e397 100644 --- a/src/JsonDbStructure.php +++ b/src/JsonDbStructure.php @@ -106,12 +106,17 @@ final class JsonDbStructure private $generatedSql = []; /** - * @param $jsonStructureFile PathUtil | string + * @param $jsonStructureFile PathUtil | string | Array * @param $sqlVendor string */ public function __construct($jsonStructureFile, $sqlVendor) { - $this->jsonStructure = self::getObjectFromJsonFile($jsonStructureFile); + if (is_array($jsonStructureFile)){ + $this->jsonStructure = $jsonStructureFile; + } + else { + $this->jsonStructure = self::getObjectFromJsonFile($jsonStructureFile); + } $this->sqlVendor = $sqlVendor; } diff --git a/tests/JsonDbStructureTest.php b/tests/JsonDbStructureTest.php index 08ff02b..a4ece57 100644 --- a/tests/JsonDbStructureTest.php +++ b/tests/JsonDbStructureTest.php @@ -18,10 +18,27 @@ public function parseJsonFile($jsonFile) return $jsonDbStructure->getGeneratedSql(';'); } + public function parseArrayInput($jsonFile) + { + $jsonArray = json_decode(file_get_contents($jsonFile), JSON_FORCE_OBJECT); + + $jsonDbStructure = new Samshal\Scripd\JsonDbStructure($jsonArray, 'mysql'); + $jsonDbStructure->parseStructure(); + return $jsonDbStructure->getGeneratedSql(';'); + } + + /** + * @dataProvider dataProvider + */ + public function testStructureParserWithJsonFileInput($expected, $jsonFile) + { + $this->assertEquals($expected, self::parseJsonFile($jsonFile)); + } + /** * @dataProvider dataProvider */ - public function testStructureParser($expected, $jsonFile) + public function testStructureParserWithArrayInput($expected, $jsonFile) { $this->assertEquals($expected, self::parseJsonFile($jsonFile)); }