Skip to content
This repository was archived by the owner on May 14, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions run.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php

use solid\CsvDataImporter;
use solid\Loader;
use solid\DataImporter;
use solid\Loader\CsvLoader;
use solid\Repository\ImportedRepository;

require 'vendor/autoload.php';
Expand All @@ -12,7 +12,7 @@
'local'
);
$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();
7 changes: 4 additions & 3 deletions src/CsvDataImporter.php → src/DataImporter.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 3 additions & 3 deletions src/Loader.php → src/Loader/CsvLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down
32 changes: 32 additions & 0 deletions src/Loader/JsonLoader.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

declare(strict_types=1);

namespace solid\Loader;

use DateTimeImmutable;

class JsonLoader extends CsvLoader
{
private function readFile(): array
{
return json_decode(file_get_contents($this->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']);
}
}
15 changes: 8 additions & 7 deletions tests/CsvDataImporterTest.php → tests/DataImporterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand All @@ -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());
Expand Down
20 changes: 20 additions & 0 deletions tests/Loader/JsonLoaderTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

declare(strict_types=1);

namespace tests\Loader;

use PHPUnit\Framework\TestCase;
use solid\Loader\JsonLoader;

class JsonLoaderTest extends TestCase
{
public function testDate(): void
{
$loader = new JsonLoader('var/import/users.json');

$dateFormatted = $loader->getDate()->format('d/m/Y');

$this->assertSame('12/03/2021', $dateFormatted);
}
}
2 changes: 0 additions & 2 deletions var/import/users.csv

This file was deleted.

7 changes: 7 additions & 0 deletions var/import/users.json
Original file line number Diff line number Diff line change
@@ -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"}
]
}