1
1
# -*- coding: utf-8 -*-
2
2
from __future__ import print_function
3
+ import socket
3
4
import pytest
4
5
from blynklib import Blynk , BlynkException
5
6
@@ -10,32 +11,151 @@ def bl(self):
10
11
blynk = Blynk ('1234' , log = print )
11
12
yield blynk
12
13
13
- def test_notify (self , bl , mocker ):
14
+ def test_connect (self , bl , mocker ):
15
+ with mocker .patch .object (bl , 'connected' , return_value = False ):
16
+ with mocker .patch .object (bl , '_get_socket' , return_value = None ):
17
+ with mocker .patch .object (bl , '_authenticate' , return_value = None ):
18
+ with mocker .patch .object (bl , '_set_heartbeat' , return_value = None ):
19
+ with mocker .patch .object (bl , 'call_handler' , return_value = None ):
20
+ result = bl .connect ()
21
+ assert result is True
22
+
23
+ def test_connect_exception (self , bl , mocker ):
24
+ with mocker .patch .object (bl , 'connected' , return_value = False ):
25
+ with mocker .patch .object (bl , '_get_socket' , return_value = None ):
26
+ with mocker .patch .object (bl , '_authenticate' , side_effect = BlynkException ()):
27
+ with mocker .patch .object (bl , 'disconnect' , return_value = None ):
28
+ with mocker .patch ('time.sleep' , return_value = None ):
29
+ mocker .spy (bl , 'disconnect' )
30
+ result = bl .connect (0.001 )
31
+ assert result is False
32
+ assert bl .disconnect .call_count > 1
33
+
34
+ def test_connect_timeout (self , bl , mocker ):
35
+ bl ._state = bl .CONNECTING
36
+ with mocker .patch .object (bl , 'connected' , return_value = False ):
37
+ result = bl .connect (0.001 )
38
+ assert result is False
39
+
40
+ def test_disconnect (self , bl , mocker ):
41
+ bl ._socket = socket .socket ()
42
+ with mocker .patch ('time.sleep' , return_value = None ):
43
+ bl .disconnect ('123' )
44
+
45
+ def test_virtual_write (self , bl , mocker ):
14
46
with mocker .patch .object (bl , 'send' , return_value = 10 ):
15
- result = bl .notify ( '123 ' )
47
+ result = bl .virtual_write ( 20 , 'va1' , 'val2 ' )
16
48
assert result == 10
17
49
18
- def test_email (self , bl , mocker ):
50
+ def test_virtual_sync (self , bl , mocker ):
19
51
with mocker .patch .object (bl , 'send' , return_value = 20 ):
20
- result = bl .email ( '1' , '2' , '3' )
52
+ result = bl .virtual_sync ( 20 , 22 )
21
53
assert result == 20
22
54
23
- def test_set_property (self , bl , mocker ):
55
+ def test_email (self , bl , mocker ):
24
56
with mocker .patch .object (bl , 'send' , return_value = 30 ):
25
- result = bl .set_property ( 1 , '2' , '3' )
57
+ result = bl .email ( '1' , '2' , '3' )
26
58
assert result == 30
27
59
28
60
def test_tweet (self , bl , mocker ):
29
61
with mocker .patch .object (bl , 'send' , return_value = 40 ):
30
62
result = bl .tweet ('123' )
31
63
assert result == 40
32
64
33
- def test_virtual_sync (self , bl , mocker ):
65
+ def test_notify (self , bl , mocker ):
34
66
with mocker .patch .object (bl , 'send' , return_value = 50 ):
35
- result = bl .virtual_sync ( 20 , 22 )
67
+ result = bl .notify ( '123' )
36
68
assert result == 50
37
69
38
- def test_virtual_write (self , bl , mocker ):
70
+ def test_set_property (self , bl , mocker ):
39
71
with mocker .patch .object (bl , 'send' , return_value = 60 ):
40
- result = bl .virtual_write ( 20 , 'va1 ' , 'val2 ' )
72
+ result = bl .set_property ( 1 , '2 ' , '3 ' )
41
73
assert result == 60
74
+
75
+ def test_hadle_event (self , bl ):
76
+ bl ._events = {}
77
+
78
+ @bl .handle_event ("connect" )
79
+ def connect_handler ():
80
+ pass
81
+
82
+ @bl .handle_event ("disconnect" )
83
+ def connect_handler ():
84
+ pass
85
+
86
+ assert 'connect' in bl ._events .keys ()
87
+ assert 'disconnect' in bl ._events .keys ()
88
+
89
+ def test_read_wildcard_event (self , bl ):
90
+ bl ._events = {}
91
+
92
+ @bl .handle_event ('read v*' )
93
+ def read_pin_handler ():
94
+ pass
95
+
96
+ assert 'read v10' in bl ._events .keys ()
97
+ assert len (bl ._events .keys ()) == bl .VPIN_MAX_NUM
98
+
99
+ def test_write_wildcard_event (self , bl ):
100
+ bl ._events = {}
101
+
102
+ @bl .handle_event ('write v*' )
103
+ def write_pin_handler ():
104
+ pass
105
+
106
+ assert 'write v5' in bl ._events .keys ()
107
+ assert len (bl ._events .keys ()) == bl .VPIN_MAX_NUM
108
+
109
+ def test_call_handler (self , bl ):
110
+ bl ._events = {}
111
+
112
+ @bl .handle_event ('write v2' )
113
+ def write_pin_handler (arg1 , kwarg1 = None ):
114
+ bl ._state = 'TEST{}{}' .format (arg1 , kwarg1 )
115
+
116
+ bl .call_handler ('write v2' , 12 , kwarg1 = '34' )
117
+ assert bl ._state == 'TEST1234'
118
+
119
+ def test_process_rsp (self , bl , mocker ):
120
+ mocker .spy (bl , 'log' )
121
+ bl .process (bl .MSG_RSP , 100 , 200 , [])
122
+ assert bl .log .call_count == 1
123
+
124
+ def test_process_ping (self , bl , mocker ):
125
+ with mocker .patch .object (bl , 'send' , return_value = None ):
126
+ mocker .spy (bl , 'send' )
127
+ bl .process (bl .MSG_PING , 100 , 200 , [])
128
+ assert bl .send .call_count == 1
129
+
130
+ def test_process_internal (self , bl , mocker ):
131
+ bl ._events = {}
132
+
133
+ @bl .handle_event ('internal_5' )
134
+ def internal_handler (* args ):
135
+ bl ._status = 'INTERNAL TEST{}' .format (* args )
136
+
137
+ with mocker .patch .object (bl , 'send' , return_value = None ):
138
+ bl .process (bl .MSG_INTERNAL , 100 , 200 , ['int' , 5 , 1 , 2 ])
139
+ assert bl ._status == 'INTERNAL TEST[1, 2]'
140
+
141
+ def test_process_write (self , bl , mocker ):
142
+ bl ._events = {}
143
+
144
+ @bl .handle_event ('write V4' )
145
+ def write_handler (pin , * values ):
146
+ bl ._status = 'WRITE TEST{}' .format (* values )
147
+
148
+ with mocker .patch .object (bl , 'send' , return_value = None ):
149
+ bl .process (bl .MSG_HW , 100 , 200 , ['vw' , 4 , 1 , 2 ])
150
+ assert bl ._status == 'WRITE TEST[1, 2]'
151
+
152
+ def test_process_read (self , bl , mocker ):
153
+ bl ._events = {}
154
+
155
+ @bl .handle_event ('read V7' )
156
+ def read_handler (pin ):
157
+ bl ._status = 'READ TEST{}' .format (pin )
158
+
159
+ with mocker .patch .object (bl , 'send' , return_value = None ):
160
+ bl .process (bl .MSG_HW , 100 , 200 , ['vr' , 7 ])
161
+ assert bl ._status == 'READ TEST7'
0 commit comments