Skip to content

Commit

Permalink
up
Browse files Browse the repository at this point in the history
  • Loading branch information
rmottainfo committed Dec 26, 2023
1 parent ed4e186 commit 4f2e00f
Show file tree
Hide file tree
Showing 11 changed files with 193 additions and 29 deletions.
4 changes: 4 additions & 0 deletions cli/pkg/util/string_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ func ParseFloat(s string) (float64, error) {

func ParseIPCA(data []map[string]interface{}) (float64, error) {
var ipca float64

if len(data) == 0 {
return 0, fmt.Errorf("nenhum dado retornado")
}

for _, entry := range data {
valorStr, ok := entry["valor"].(string)
Expand Down
1 change: 1 addition & 0 deletions tests/mock/fetcher_mock.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package mock
1 change: 1 addition & 0 deletions tests/mock/util_mock.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package mock
25 changes: 25 additions & 0 deletions tests/pkg/api/api_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package api_test

import (
"testing"

"profitability/cli/pkg/api"
)

func TestGetUrl(t *testing.T) {
// Teste para um índice válido
validIndex := "ipca"
expectedValidURL := "https://api.bcb.gov.br/dados/serie/bcdata.sgs.433/dados/ultimos/12?formato=json"
validURL := api.GetUrl(validIndex)
if validURL != expectedValidURL {
t.Errorf("Para o índice válido '%s', esperava-se '%s', mas obteve '%s'", validIndex, expectedValidURL, validURL)
}

// Teste para um índice inválido
invalidIndex := "inexistente"
expectedInvalidURL := ""
invalidURL := api.GetUrl(invalidIndex)
if invalidURL != expectedInvalidURL {
t.Errorf("Para o índice inválido '%s', esperava-se uma string vazia, mas obteve '%s'", invalidIndex, invalidURL)
}
}
26 changes: 0 additions & 26 deletions tests/pkg/calculus/calc_prop_test.go

This file was deleted.

1 change: 1 addition & 0 deletions tests/pkg/calculus/ipca_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package calculus_test
1 change: 1 addition & 0 deletions tests/pkg/calculus/pos_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package calculus_test
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package calculus_test

import (
"testing"
"math"

"profitability/cli/pkg/calculus"
)
Expand All @@ -21,8 +20,7 @@ func TestPre(t *testing.T) {
}

// Define o valor esperado com base nos parâmetros de entrada
expectedResult := rate * (1 - 0.225)
expectedResult = math.Round(expectedResult*100) / 100
expectedResult := 10.0 * (1 - 0.225)

// Compara o resultado retornado pela função com o resultado esperado
if result.ResultPre != expectedResult {
Expand Down
1 change: 1 addition & 0 deletions tests/pkg/calculus/prop_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package calculus_test
85 changes: 85 additions & 0 deletions tests/pkg/util/string_util_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package util_test

import (
"testing"
"profitability/cli/pkg/util"
)

func TestParseFloat(t *testing.T) {
// Teste com valor válido
result, err := util.ParseFloat("10.5")
if err != nil {
t.Fatalf("Erro inesperado: %v", err)
}

expectedResult := 10.5
if result != expectedResult {
t.Errorf("Resultado inesperado. Esperado: %f, Obtido: %f", expectedResult, result)
}

// Teste com valor inválido
_, err = util.ParseFloat("abc")
if err == nil {
t.Error("Esperava um erro para string inválida, mas nenhum foi retornado.")
}
}

func TestParseIPCA(t *testing.T) {
// Teste com dados válidos
data := []map[string]interface{}{
{"valor": "2.5"},
{"valor": "3.0"},
{"valor": "1.8"},
}

result, err := util.ParseIPCA(data)
if err != nil {
t.Fatalf("Erro inesperado: %v", err)
}

expectedResult := 7.3
if result != expectedResult {
t.Errorf("Resultado inesperado. Esperado: %f, Obtido: %f", expectedResult, result)
}

// Teste com valor inválido
_, err = util.ParseIPCA([]map[string]interface{}{{"valor": "abc"}})
if err == nil {
t.Error("Esperava um erro para string inválida, mas nenhum foi retornado.")
}

// Teste com dados vazios
_, err = util.ParseIPCA([]map[string]interface{}{})
if err == nil {
t.Error("Esperava um erro para dados vazios, mas nenhum foi retornado.")
}
}

func TestParseSelic(t *testing.T) {
// Teste com dados válidos
data := []map[string]interface{}{
{"valor": "5.2"},
}

result, err := util.ParseSelic(data)
if err != nil {
t.Fatalf("Erro inesperado: %v", err)
}

expectedResult := 5.2
if result != expectedResult {
t.Errorf("Resultado inesperado. Esperado: %f, Obtido: %f", expectedResult, result)
}

// Teste com valor inválido
_, err = util.ParseSelic([]map[string]interface{}{{"valor": "abc"}})
if err == nil {
t.Error("Esperava um erro para string inválida, mas nenhum foi retornado.")
}

// Teste com dados vazios
_, err = util.ParseSelic([]map[string]interface{}{})
if err == nil {
t.Error("Esperava um erro para dados vazios, mas nenhum foi retornado.")
}
}
73 changes: 73 additions & 0 deletions tests/pkg/util/validation_util_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package util_test

import (
"testing"
"profitability/cli/pkg/util"
)

func TestIsValidModalidade(t *testing.T) {
// Teste com modalidade válida
result := util.IsValidModalidade("pre")
if !result {
t.Error("Esperava true para modalidade válida, mas obteve false.")
}

// Teste com modalidade inválida
result = util.IsValidModalidade("invalida")
if result {
t.Error("Esperava false para modalidade inválida, mas obteve true.")
}
}

func TestIsValidTaxa(t *testing.T) {
// Teste com valor válido
result, err := util.IsValidTaxa("10.5")
if err != nil {
t.Fatalf("Erro inesperado: %v", err)
}

expectedResult := 10.5
if result != expectedResult {
t.Errorf("Resultado inesperado. Esperado: %f, Obtido: %f", expectedResult, result)
}

// Teste com valor inválido
_, err = util.IsValidTaxa("400")
if err == nil {
t.Error("Esperava um erro para taxa acima do limite, mas nenhum foi retornado.")
}

_, err = util.IsValidTaxa("abc")
if err == nil {
t.Error("Esperava um erro para string inválida, mas nenhum foi retornado.")
}
}

func TestIsValidPrazo(t *testing.T) {
// Teste com valor válido
result, err := util.IsValidPrazo("365")
if err != nil {
t.Fatalf("Erro inesperado: %v", err)
}

expectedResult := 365
if result != expectedResult {
t.Errorf("Resultado inesperado. Esperado: %d, Obtido: %d", expectedResult, result)
}

// Teste com valor inválido
_, err = util.IsValidPrazo("-5")
if err == nil {
t.Error("Esperava um erro para prazo negativo, mas nenhum foi retornado.")
}

_, err = util.IsValidPrazo("5000000000")
if err == nil {
t.Error("Esperava um erro para prazo muito grande, mas nenhum foi retornado.")
}

_, err = util.IsValidPrazo("abc")
if err == nil {
t.Error("Esperava um erro para string inválida, mas nenhum foi retornado.")
}
}

0 comments on commit 4f2e00f

Please sign in to comment.