11
11
import pytest
12
12
13
13
from frequenz .sdk .microgrid import connection_manager
14
+ from frequenz .sdk .microgrid import metadata as meta
14
15
from frequenz .sdk .microgrid .client import Connection
15
16
from frequenz .sdk .microgrid .component import Component , ComponentCategory
16
17
@@ -82,23 +83,42 @@ def connections(self) -> list[list[Connection]]:
82
83
]
83
84
return connections
84
85
86
+ @pytest .fixture
87
+ def metadata (self ) -> meta .Metadata :
88
+ """Fetch the microgrid metadata.
89
+
90
+ Returns:
91
+ the microgrid metadata.
92
+ """
93
+ mock_timezone_finder = MagicMock ()
94
+ mock_timezone_finder .timezone_at .return_value = "Europe/Berlin"
95
+ meta ._timezone_finder = mock_timezone_finder # pylint: disable=protected-access
96
+
97
+ return meta .Metadata (
98
+ microgrid_id = 8 ,
99
+ location = meta .Location (latitude = 52.520008 , longitude = 13.404954 ),
100
+ )
101
+
85
102
@mock .patch ("grpc.aio.insecure_channel" )
86
103
async def test_connection_manager (
87
104
self ,
88
105
_ : MagicMock ,
89
106
components : list [list [Component ]],
90
107
connections : list [list [Connection ]],
108
+ metadata : meta .Metadata ,
91
109
) -> None :
92
110
"""Test microgrid api.
93
111
94
112
Args:
95
113
_: insecure channel mock from `mock.patch`
96
114
components: components
97
115
connections: connections
116
+ metadata: the metadata of the microgrid
98
117
"""
99
118
microgrid_client = MagicMock ()
100
119
microgrid_client .components = AsyncMock (side_effect = components )
101
120
microgrid_client .connections = AsyncMock (side_effect = connections )
121
+ microgrid_client .metadata = AsyncMock (return_value = metadata )
102
122
103
123
with mock .patch (
104
124
"frequenz.sdk.microgrid.connection_manager.MicrogridGrpcClient" ,
@@ -137,6 +157,11 @@ async def test_connection_manager(
137
157
assert set (graph .components ()) == set (components [0 ])
138
158
assert set (graph .connections ()) == set (connections [0 ])
139
159
160
+ assert api .microgrid_id == metadata .microgrid_id
161
+ assert api .location == metadata .location
162
+ assert api .location and api .location .timezone
163
+ assert api .location .timezone .key == "Europe/Berlin"
164
+
140
165
# It should not be possible to initialize method once again
141
166
with pytest .raises (AssertionError ):
142
167
await connection_manager .initialize ("127.0.0.1" , 10001 )
@@ -148,25 +173,36 @@ async def test_connection_manager(
148
173
assert set (graph .components ()) == set (components [0 ])
149
174
assert set (graph .connections ()) == set (connections [0 ])
150
175
176
+ assert api .microgrid_id == metadata .microgrid_id
177
+ assert api .location == metadata .location
178
+
151
179
@mock .patch ("grpc.aio.insecure_channel" )
152
180
async def test_connection_manager_another_method (
153
181
self ,
154
182
_ : MagicMock ,
155
183
components : list [list [Component ]],
156
184
connections : list [list [Connection ]],
185
+ metadata : meta .Metadata ,
157
186
) -> None :
158
187
"""Test if the api was not deallocated.
159
188
160
189
Args:
161
190
_: insecure channel mock
162
191
components: components
163
192
connections: connections
193
+ metadata: the metadata of the microgrid
164
194
"""
165
195
microgrid_client = MagicMock ()
166
196
microgrid_client .components = AsyncMock (return_value = [])
167
197
microgrid_client .connections = AsyncMock (return_value = [])
198
+ microgrid_client .get_metadata = AsyncMock (return_value = None )
168
199
169
200
api = connection_manager .get ()
170
201
graph = api .component_graph
171
202
assert set (graph .components ()) == set (components [0 ])
172
203
assert set (graph .connections ()) == set (connections [0 ])
204
+
205
+ assert api .microgrid_id == metadata .microgrid_id
206
+ assert api .location == metadata .location
207
+ assert api .location and api .location .timezone
208
+ assert api .location .timezone .key == "Europe/Berlin"
0 commit comments