diff --git a/run.php b/run.php index c9599f2..3d97b8a 100644 --- a/run.php +++ b/run.php @@ -1,7 +1,7 @@ import(); diff --git a/src/CsvDataImporter.php b/src/DataImporter.php similarity index 80% rename from src/CsvDataImporter.php rename to src/DataImporter.php index 2fd815b..0011e38 100644 --- a/src/CsvDataImporter.php +++ b/src/DataImporter.php @@ -2,14 +2,15 @@ namespace solid; +use solid\Loader\CsvLoader; use solid\Repository\AbstractRepository; -class CsvDataImporter +class DataImporter { private AbstractRepository $repository; - private Loader $loader; + private CsvLoader $loader; - public function __construct(AbstractRepository $repository, Loader $loader) + public function __construct(AbstractRepository $repository, CsvLoader $loader) { $this->repository = $repository; $this->loader = $loader; diff --git a/src/Loader.php b/src/Loader/CsvLoader.php similarity index 86% rename from src/Loader.php rename to src/Loader/CsvLoader.php index 8410b63..74dc08c 100644 --- a/src/Loader.php +++ b/src/Loader/CsvLoader.php @@ -2,11 +2,11 @@ declare(strict_types=1); -namespace solid; +namespace solid\Loader; -class Loader +class CsvLoader { - private string $filename; + protected string $filename; public function __construct(string $filename) { diff --git a/src/Loader/JsonLoader.php b/src/Loader/JsonLoader.php new file mode 100644 index 0000000..26ff37f --- /dev/null +++ b/src/Loader/JsonLoader.php @@ -0,0 +1,32 @@ +filename), true); + } + + public function loadFile(): array + { + $content = $this->readFile(); + + return array_map( + fn ($values) => array_values($values), + $content['users'] + ); + } + + public function getDate(): DateTimeImmutable + { + $content = $this->readFile(); + + return new DateTimeImmutable($content['updatedAt']); + } +} diff --git a/tests/CsvDataImporterTest.php b/tests/DataImporterTest.php similarity index 63% rename from tests/CsvDataImporterTest.php rename to tests/DataImporterTest.php index 0929fe0..e7eb510 100644 --- a/tests/CsvDataImporterTest.php +++ b/tests/DataImporterTest.php @@ -5,20 +5,21 @@ namespace tests; use PHPUnit\Framework\TestCase; -use solid\CsvDataImporter; -use solid\Loader; +use solid\DataImporter; +use solid\Loader\CsvLoader; +use solid\Loader\JsonLoader; use solid\Repository\ImportedRepository; use solid\Repository\UsersRepository; -class CsvDataImporterTest extends TestCase +class DataImporterTest extends TestCase { public function testImport(): void { $db = TestsFacility::createDb(); $repository = new ImportedRepository($db); - $loader = new Loader('var/import/data.csv'); + $loader = new CsvLoader('var/import/data.csv'); - $importer = new CsvDataImporter($repository, $loader); + $importer = new DataImporter($repository, $loader); $importer->import(); $this->assertSame(3, $repository->getCount()); @@ -28,9 +29,9 @@ public function testUsers(): void { $db = TestsFacility::createDb(); $repository = new UsersRepository($db); - $loader = new Loader('var/import/users.csv'); + $loader = new JsonLoader('var/import/users.json'); - $importer = new CsvDataImporter($repository, $loader); + $importer = new DataImporter($repository, $loader); $importer->import(); $this->assertSame(2, $repository->getCount()); diff --git a/tests/Loader/JsonLoaderTest.php b/tests/Loader/JsonLoaderTest.php new file mode 100644 index 0000000..834b4df --- /dev/null +++ b/tests/Loader/JsonLoaderTest.php @@ -0,0 +1,20 @@ +getDate()->format('d/m/Y'); + + $this->assertSame('12/03/2021', $dateFormatted); + } +} diff --git a/var/import/users.csv b/var/import/users.csv deleted file mode 100644 index 084e9f6..0000000 --- a/var/import/users.csv +++ /dev/null @@ -1,2 +0,0 @@ -1;toto;Toto -2;titi;Titi \ No newline at end of file diff --git a/var/import/users.json b/var/import/users.json new file mode 100644 index 0000000..1f7438b --- /dev/null +++ b/var/import/users.json @@ -0,0 +1,7 @@ +{ + "updatedAt": "2021-03-12T17:13:10+01:00", + "users": [ + {"id": 1, "login": "toto", "name": "Toto"}, + {"id": 2, "login": "titi", "name": "Titi"} + ] +} \ No newline at end of file