Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
5 / 5 |
CRAP | |
100.00% |
19 / 19 |
DataStandardSerie | |
100.00% |
1 / 1 |
|
100.00% |
5 / 5 |
5 | |
100.00% |
19 / 19 |
__construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
10 / 10 |
|||
collect | |
100.00% |
1 / 1 |
1 | |
100.00% |
5 / 5 |
|||
getInstance | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getClass | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getArguments | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
<?php | |
namespace Alxvng\QATracker\DataProvider\Model; | |
use Alxvng\QATracker\DataProvider\DataProviderInterface; | |
use DateTime; | |
use JsonException; | |
use Symfony\Component\String\Slugger\AsciiSlugger; | |
use function Symfony\Component\String\u; | |
class DataStandardSerie extends AbstractDataSerie | |
{ | |
protected string $class; | |
protected array $arguments; | |
private string $baseDir; | |
/** | |
* DataProvider constructor. | |
* | |
* @param array $config | |
* @param string $baseDir | |
* @param string $generatedDir | |
* | |
* @throws JsonException | |
*/ | |
public function __construct(array $config, string $baseDir, string $generatedDir) | |
{ | |
$slugger = new AsciiSlugger(); | |
$this->slug = u($slugger->slug($config['id']))->lower(); | |
$storageDir = $generatedDir.'/'.static::PROVIDERS_DIR; | |
$this->storageFilePath = $storageDir.'/'.$this->getSlug().'.json'; | |
$this->id = $config['id']; | |
$this->class = $config['class']; | |
$this->arguments = $config['arguments']; | |
$this->load(); | |
$this->baseDir = $baseDir; | |
} | |
/** | |
* @param DateTime $trackDate | |
* | |
* @throws JsonException | |
*/ | |
public function collect(DateTime $trackDate): void | |
{ | |
$provider = $this->getInstance(); | |
$value = $provider->fetchData(); | |
$this->addData($value, $trackDate); | |
$this->save(); | |
} | |
public function getInstance(): DataProviderInterface | |
{ | |
$providerClass = $this->getClass(); | |
return new $providerClass($this->baseDir, ...$this->getArguments()); | |
} | |
/** | |
* @return mixed|string | |
*/ | |
public function getClass() | |
{ | |
return $this->class; | |
} | |
/** | |
* @return array|mixed | |
*/ | |
public function getArguments() | |
{ | |
return $this->arguments; | |
} | |
} |