-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathtest_sofar_api_class.py
More file actions
123 lines (89 loc) · 3.33 KB
/
test_sofar_api_class.py
File metadata and controls
123 lines (89 loc) · 3.33 KB
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
"""
This file is part of pysofar: A client for interfacing with Sofar Oceans Spotter API
Contents: Tests for device endpoints
Copyright (C) 2019
Sofar Ocean Technologies
Authors: Mike Sosa
"""
from pysofar import wavefleet_exceptions
from pysofar.sofar import SofarApi
from unittest.mock import patch
# The custom token will fail to authenticate so use a mock to bypass the `_sync step`
with patch.object(SofarApi, '_sync', return_value=None) as mock_method:
custom_api = SofarApi(custom_token='custom_api_token_here')
def test_custom_api():
# test that custom api token is set
assert custom_api.token == 'custom_api_token_here'
api = SofarApi()
latest_dat = api.get_latest_data('SPOT-0350', include_wind_data=True)
def test_get_latest_data():
# test basic that latest_data is able to be queried
assert latest_dat is not None
assert isinstance(latest_dat, dict)
assert 'waves' in latest_dat
assert 'wind' in latest_dat
assert 'track' in latest_dat
assert 'frequencyData' in latest_dat
def test_get_and_update_spotters():
# Test that spotter objects are able to be created and updated
from pysofar.spotter import Spotter
from pysofar.sofar import get_and_update_spotters
sptrs = get_and_update_spotters(_api=api)
assert sptrs is not None
assert all(map(lambda x: isinstance(x, Spotter), sptrs))
def test_get_all_wave_data():
# Test that all wave data is able to be queried in a time range
st = '2019-05-02'
end = '2019-07-10'
dat = api.get_wave_data(start_date=st, end_date=end)
assert dat is not None
assert isinstance(dat, dict)
assert 'waves' in dat
assert len(dat['waves']) > 0
def test_get_all_wind_data():
# Test that all wind data over all time is able to be queried
st = '2021-05-02'
end = '2021-07-10'
dat = api.get_wind_data(start_date=st, end_date=end)
assert dat is not None
assert isinstance(dat, dict)
assert 'wind' in dat
assert len(dat['wind']) > 0
def test_get_all_tracking_data():
# Test that all tracking data is able to be queried in a time range
st = '2021-05-02'
end = '2021-06-10'
dat = api.get_track_data(start_date=st, end_date=end)
assert dat is not None
assert isinstance(dat, dict)
assert 'track' in dat
assert len(dat['track']) > 0
def test_get_all_frequency_data():
# Test that all frequency data is able to be queried in a time range
st = '2021-06-08'
end = '2021-06-10'
dat = api.get_frequency_data(start_date=st, end_date=end)
assert dat is not None
assert isinstance(dat, dict)
assert 'frequency' in dat
assert len(dat['frequency']) > 0
def test_get_all_data():
# Test that grabbing data from all spotters from all data types works
st = '2019-01-18'
end = '2019-01-25'
dat = api.get_all_data(start_date=st, end_date=end)
assert dat is not None
assert isinstance(dat, dict)
assert len(dat.keys()) == 4
assert 'waves' in dat
assert 'wind' in dat
assert 'track' in dat
assert 'frequency' in dat
def test_get_sensor_data():
# Test that getting sensor data in a time range works
spotter_id = 'SPOT-9999'
st = '2021-07-18'
end = '2021-07-19'
dat = api.get_sensor_data(spotter_id, start_date=st, end_date=end)
assert dat is not None
assert 'sensorPosition' in dat[-1]