diff --git a/README.md b/README.md index 92766a7..f01c0d1 100644 --- a/README.md +++ b/README.md @@ -18,15 +18,11 @@ Para obter o código dos índices, basta verificar no [Link](https://www3.bcb.go ## Utilização ```php -$indice = new Indices(); - -$indice - ->codigoSerie(189) +Indices::codigoSerie(189) ->numeroMeses(12) ->get(); -$indice - ->codigoSerie(189) +Indices::codigoSerie(189) ->dataInicioFim('01/01/2020', '01/01/2022') ->get(); ``` diff --git a/src/Indices.php b/src/Indices.php index c34ff08..364405d 100755 --- a/src/Indices.php +++ b/src/Indices.php @@ -37,11 +37,12 @@ class Indices * @param int $codigoSerie * @return $this */ - public function codigoSerie(int $codigoSerie): self + public static function codigoSerie(int $codigoSerie): self { - $this->codigoSerie = $codigoSerie; + $indices = new self(); + $indices->codigoSerie = $codigoSerie; - return $this; + return $indices; } /** @@ -49,10 +50,13 @@ public function codigoSerie(int $codigoSerie): self * @param string $inicial * @param string $final * @return $this + * @throws Exception */ public function dataInicioFim(string $inicial, string $final): self { - unset($this->ultimos); + if (isset($this->ultimos)) { + throw new chamadaFuncaoException(); + } $this->dataInicial = $inicial; $this->dataFinal = $final; @@ -63,11 +67,13 @@ public function dataInicioFim(string $inicial, string $final): self * Set número últimos meses * @param int $meses * @return $this + * @throws Exception */ public function numeroMeses(int $meses): self { - unset($this->dataInicial); - unset($this->dataFinal); + if (isset($this->dataInicial) || isset($this->dataFinal)) { + throw new chamadaFuncaoException(); + } $this->ultimos = $meses; return $this; @@ -99,9 +105,14 @@ private function calculaInflacaoAcumulada(string $valores): float * Realiza o request para a API do Banco Central * @param bool $inflacaoAcumulada * @return array|Exception[]|GuzzleException[] + * @throws Exception */ public function get(bool $inflacaoAcumulada = true): array { + if (! isset($this->ultimos) && ! (isset($this->dataInicial) && isset($this->dataFinal))) { + throw new Exception('É necessário chamar a classe numeroMeses ou dataInicioFim antes de chamar o get'); + } + $client = new Client(); try { diff --git a/src/chamadaFuncaoException.php b/src/chamadaFuncaoException.php new file mode 100644 index 0000000..1b3f49d --- /dev/null +++ b/src/chamadaFuncaoException.php @@ -0,0 +1,24 @@ +message, $code, $previous); + } +} diff --git a/tests/IndicesTest.php b/tests/IndicesTest.php index adb7184..0300d45 100644 --- a/tests/IndicesTest.php +++ b/tests/IndicesTest.php @@ -3,33 +3,41 @@ use Valbert\IndicesCorrecao\Indices; /** @test */ -it('Número de messes', function () { - $indice = new Indices(); +it('Erro na chamada numeroMeses e dataInicioFim em conjuto', function () { + Indices::codigoSerie(189) + ->numeroMeses(12) + ->dataInicioFim('01/01/2020', '01/01/2022') + ->get(); +})->expectException(\Valbert\IndicesCorrecao\chamadaFuncaoException::class); + +/** @test */ +it('Erro ao chamar get sem chamar numeroMeses ou dataInicioFim', function () { + Indices::codigoSerie(189) + ->get(); +})->expectException(Exception::class); - $ind = $indice - ->codigoSerie(189) +/** @test */ +it('Número de messes', function () { + $indice = Indices::codigoSerie(189) ->numeroMeses(12) ->get(); - expect($ind['inflacao'])->toBeFloat() - ->and($ind['inflacao'])->toBeLessThan(1) - ->and($ind['inflacao'])->toBeGreaterThanOrEqual(0) - ->and($ind['indices'])->toBeString() - ->and($ind)->toBeArray(); + expect($indice['inflacao'])->toBeFloat() + ->and($indice['inflacao'])->toBeLessThan(1) + ->and($indice['inflacao'])->toBeGreaterThanOrEqual(0) + ->and($indice['indices'])->toBeString() + ->and($indice)->toBeArray(); }); /** @test */ it('Período início e fim', function () { - $indice = new Indices(); - - $ind = $indice - ->codigoSerie(189) + $indice = Indices::codigoSerie(189) ->dataInicioFim('01/01/2020', '01/01/2022') ->get(); - expect($ind['inflacao'])->toBeFloat() - ->and($ind['inflacao'])->toBeLessThan(1) - ->and($ind['inflacao'])->toBeGreaterThanOrEqual(0) - ->and($ind['indices'])->toBeString() - ->and($ind)->toBeArray(); + expect($indice['inflacao'])->toBeFloat() + ->and($indice['inflacao'])->toBeLessThan(1) + ->and($indice['inflacao'])->toBeGreaterThanOrEqual(0) + ->and($indice['indices'])->toBeString() + ->and($indice)->toBeArray(); });