forked from briandowns/openweathermap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
uv_test.go
140 lines (113 loc) · 2.95 KB
/
uv_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
package openweathermap
import (
"net/http"
"os"
"reflect"
"testing"
"time"
)
var coords = &Coordinates{
Longitude: 53.343497,
Latitude: -6.288379,
}
// TestNewUV
func TestNewUV(t *testing.T) {
uv, err := NewUV(os.Getenv("OWM_API_KEY"))
if err != nil {
t.Error(err)
}
if reflect.TypeOf(uv).String() != "*openweathermap.UV" {
t.Error("incorrect data type returned")
}
}
// TestNewUV with custom http client
func TestNewUVWithCustomHttpClient(t *testing.T) {
hc := http.DefaultClient
hc.Timeout = time.Duration(1) * time.Second
uv, err := NewUV(os.Getenv("OWM_API_KEY"), WithHttpClient(hc))
if err != nil {
t.Error(err)
}
if reflect.TypeOf(uv).String() != "*openweathermap.UV" {
t.Error("incorrect data type returned")
}
expected := time.Duration(1) * time.Second
if uv.client.Timeout != expected {
t.Errorf("Expected Duration %v, but got %v", expected, uv.client.Timeout)
}
}
// TestNewUVWithInvalidOptions will verify that returns an error with
// invalid option
func TestNewUVWithInvalidOptions(t *testing.T) {
optionsPattern := [][]Option{
{nil},
{nil, nil},
{WithHttpClient(&http.Client{}), nil},
{nil, WithHttpClient(&http.Client{})},
}
for _, options := range optionsPattern {
c, err := NewUV(os.Getenv("OWM_API_KEY"), options...)
if err == errInvalidOption {
t.Logf("Received expected invalid option error. message: %s", err.Error())
} else if err != nil {
t.Errorf("Expected %v, but got %v", errInvalidOption, err)
}
if c != nil {
t.Errorf("Expected nil, but got %v", c)
}
}
}
// TestNewUVWithInvalidHttpClient will verify that returns an error with
// invalid http client
func TestNewUVWithInvalidHttpClient(t *testing.T) {
uv, err := NewUV(os.Getenv("OWM_API_KEY"), WithHttpClient(nil))
if err == errInvalidHttpClient {
t.Logf("Received expected bad client error. message: %s", err.Error())
} else if err != nil {
t.Errorf("Expected %v, but got %v", errInvalidHttpClient, err)
}
if uv != nil {
t.Errorf("Expected nil, but got %v", uv)
}
}
// TestCurrentUV
func TestCurrentUV(t *testing.T) {
t.Parallel()
uv, err := NewUV(os.Getenv("OWM_API_KEY"))
if err != nil {
t.Error(err)
}
if err := uv.Current(coords); err != nil {
t.Error(err)
}
if reflect.TypeOf(uv).String() != "*openweathermap.UV" {
t.Error("incorrect data type returned")
}
}
// TestHistoricalUV
func TestHistoricalUV(t *testing.T) {
t.Parallel()
/* uv := NewUV(os.Getenv("OWM_API_KEY"))
end := time.Now().UTC()
start := time.Now().UTC().Add(-time.Hour * time.Duration(24))
if err := uv.Historical(coords, start, end); err != nil {
t.Error(err)
}
if reflect.TypeOf(uv).String() != "*openweathermap.UV" {
t.Error("incorrect data type returned")
}*/
}
func TestUVInformation(t *testing.T) {
t.Parallel()
uv, err := NewUV(os.Getenv("OWM_API_KEY"))
if err != nil {
t.Error(err)
}
if err := uv.Current(coords); err != nil {
t.Error(err)
}
_, err = uv.UVInformation()
if err != nil {
t.Error(err)
}
}