-
Notifications
You must be signed in to change notification settings - Fork 14
/
test_measurement.py
97 lines (80 loc) · 3.01 KB
/
test_measurement.py
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
import datetime
import mock
from django.test import TestCase
from rest_framework.reverse import reverse
from ag_data.models import AGEvent, AGVenue
def fake_venue():
return AGVenue(
uuid="d81cac8d-26e1-4983-a942-1922e54a943a",
name="fake venue",
description="fake venue",
latitude=111.11,
longitude=111.11,
)
def fake_event(uuid):
"""
Mock a dummy AGEvent model
"""
return AGEvent(
uuid=uuid,
name="fake event",
description="fake event",
date=datetime.datetime(2020, 2, 2, 20, 21, 22),
venue_uuid=fake_venue(),
)
def fake_valid(res, raise_exception=True):
return True
class TestMeasurement(TestCase):
def setUp(self) -> None:
self.post_url = "mercury:measurement"
self.post_url2 = "mercury:measurementWO"
self.uuid = "d81cac8d-26e1-4983-a942-1922e54a943d"
self.uuid2 = "d81cac8d-26e1-4983-a942-1922e54a943a"
def post_radio_data_wo_event(self):
response = self.client.post(
reverse(self.post_url2),
data={
"sensor_id": 1,
"values": {"power": "2", "speed": 1},
"date": datetime.datetime(2020, 2, 2, 20, 21, 22),
},
)
return response
def post_radio_data(self):
# POST sensor data to the measurement url
response = self.client.post(
reverse(self.post_url, args=[self.uuid]),
data={
"sensor_id": 1,
"values": {"power": "2", "speed": 1},
"date": datetime.datetime(2020, 2, 2, 20, 21, 22),
},
)
return response
def post_defect_data(self):
response = self.client.post(
reverse(self.post_url, args=[self.uuid]),
data={
"values": {"power": "2", "speed": 1},
"date": datetime.datetime(2020, 2, 2, 20, 21, 22),
},
)
return response
def test_Radio_Receiver_POST_Event_Not_Exist(self):
response = self.client.post(reverse(self.post_url, args=[self.uuid2]))
self.assertEqual(404, response.status_code)
@mock.patch("ag_data.models.AGEvent.objects.get", fake_event)
def test_Radio_Receiver_POST_Missing_Params(self):
response = self.post_defect_data()
self.assertEqual(400, response.status_code)
@mock.patch("ag_data.models.AGEvent.objects.get", fake_event)
def test_Radio_Receiver_POST_Fail_to_Save(self):
response = self.post_radio_data()
self.assertEqual(400, response.status_code)
@mock.patch("ag_data.models.AGEvent.objects.get", fake_event)
@mock.patch("ag_data.serializers.AGMeasurementSerializer.is_valid", fake_valid)
@mock.patch("ag_data.serializers.AGMeasurementSerializer.save", fake_valid)
@mock.patch("ag_data.serializers.AGMeasurementSerializer.data", "")
def test_Radio_Receiver_POST_Event_Success(self):
response = self.post_radio_data()
self.assertEqual(201, response.status_code)