forked from crgimenes/grupo-estudos-golang
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgodolar_test.go
143 lines (129 loc) · 5.1 KB
/
godolar_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
package main
import (
"io"
"io/ioutil"
"net/http"
"net/http/httptest"
"testing"
)
var originalSite = `
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="/ptax/dtagent_ICA_6000500061013.js" data-dtconfig="rid=RID_1298139846|rpid=817804523|domain=bcb.gov.br|lab=1|reportUrl=dynaTraceMonitor|agentUri=/ptax/dtagent_ICA_6000500061013.js"></script><link rel="stylesheet" type="text/css" href="/ptax_internet/ncss/style.css">
<title></title>
</head>
<body>
<div style="padding-left: 5%;">
<img src="http://www4.bcb.gov.br/gifs/quadro-p.gif"> Cotação de fechamento do dólar no dia 22/11/2017, Quarta-feira:
</div>
<br>
<div style="padding-left: 10%;">
<ul style="padding-left: 15px;">
<li>Dólar-dos-EUA:</li>
</ul>
<table cellspacing="1" summary="Cotação de fechamento do Dólar americano">
<tbody>
<tr class="fundoPadraoBEscuro3">
<th>Data</th>
<th>Taxa de Compra</th>
<th>Taxa de Venda</th>
</tr>
<tr class="fundoPadraoBClaro2">
<td align="CENTER">22/11/2017</td>
<td align="right">3,2555</td>
<td align="right">3,2561</td>
</tr>
</tbody>
</table>
<br>
<br>
</div>
<div align="justify" style="font-size: 0.8em">
<img src="http://www.bcb.gov.br/img/BulletAzul2.gif">
O Banco Central não assume qualquer responsabilidade pela não
simultaneidade ou falta das informações prestadas, assim como por
eventuais erros de paridades das moedas, ou qualquer outro, salvo
a paridade relativa ao dólar dos Estados Unidos da América em relação
ao Real. Igualmente, não se responsabiliza pelos atrasos ou indisponibilidade
de serviços de telecomunicação, interrupção, falha ou pelas imprecisões no
fornecimento dos serviços ou informações. Não assume, também, responsabilidade
por qualquer perda ou dano oriundo de tais interrupções, atrasos, falhas ou
imperfeições, bem como pelo uso inadequado das informações contidas na transação.
</div>
</body>
</html>
`
var errData = ` <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="/ptax/dtagent_ICA_6000500061013.js" data-dtconfig="rid=RID_1298139846|rpid=817804523|domain=bcb.gov.br|lab=1|reportUrl=dynaTraceMonitor|agentUri=/ptax/dtagent_ICA_6000500061013.js"></script><link rel="stylesheet" type="text/css" href="/ptax_internet/ncss/style.css">
<title></title>
</head>
<body>
<div style="padding-left: 10%;">
<ul style="padding-left: 15px;">
<li>Dólar-dos-EUA:</li>
</ul>
<table cellspacing="1" summary="Cotação de fechamento do Dólar americano">
<tbody>
<tr class="fundoPadraoBEscuro3">
<th>Data</th>
<th>Taxa de Compra</th>
<th>Taxa de Venda</th>
</tr>
<tr class="fundoPadraoBClaro2">
<td align="CENTER">22/11/2017</td>
<td align="right">3,2555</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>`
var errSite = `<html><head></head><body></body></html>`
func FakeResponse(site string) (contents []byte) {
handler := func(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, site)
}
req := httptest.NewRequest("GET", "http://example.com/dolar", nil)
w := httptest.NewRecorder()
handler(w, req)
resp := w.Result()
contents, _ = ioutil.ReadAll(resp.Body)
return
}
func TestResponseTratamento(t *testing.T) {
for _, test := range []struct {
// Struct que define os dados de entrada e saida necessarios para os testes
site string
compra string
venda string
err error
}{
// Casos de teste para a função
{originalSite, "3,2555", "3,2561", nil},
{errData, "", "", errTratamento},
{errSite, "", "", errTratamento},
} {
response := FakeResponse(test.site)
compra, venda, err := TrataRequest(response)
if compra != test.compra {
t.Errorf("Esperava compra %v e obiteve %v\n", test.compra, compra)
}
if venda != test.venda {
t.Errorf("Esperava venda %v e obiteve %v\n", test.venda, venda)
}
if err != test.err {
t.Errorf("Esperava err %v e obiteve %v\n", test.err, err)
}
}
}
func TestBuscaRequest(t *testing.T) {
_, err := BuscaRequest()
if err != nil {
t.Error(err)
}
}