1111import pytest
1212
1313from frequenz .sdk .microgrid import connection_manager
14+ from frequenz .sdk .microgrid import metadata as meta
1415from frequenz .sdk .microgrid .client import Connection
1516from frequenz .sdk .microgrid .component import Component , ComponentCategory
1617
@@ -82,23 +83,42 @@ def connections(self) -> list[list[Connection]]:
8283 ]
8384 return connections
8485
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+
85102 @mock .patch ("grpc.aio.insecure_channel" )
86103 async def test_connection_manager (
87104 self ,
88105 _ : MagicMock ,
89106 components : list [list [Component ]],
90107 connections : list [list [Connection ]],
108+ metadata : meta .Metadata ,
91109 ) -> None :
92110 """Test microgrid api.
93111
94112 Args:
95113 _: insecure channel mock from `mock.patch`
96114 components: components
97115 connections: connections
116+ metadata: the metadata of the microgrid
98117 """
99118 microgrid_client = MagicMock ()
100119 microgrid_client .components = AsyncMock (side_effect = components )
101120 microgrid_client .connections = AsyncMock (side_effect = connections )
121+ microgrid_client .metadata = AsyncMock (return_value = metadata )
102122
103123 with mock .patch (
104124 "frequenz.sdk.microgrid.connection_manager.MicrogridGrpcClient" ,
@@ -137,6 +157,11 @@ async def test_connection_manager(
137157 assert set (graph .components ()) == set (components [0 ])
138158 assert set (graph .connections ()) == set (connections [0 ])
139159
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+
140165 # It should not be possible to initialize method once again
141166 with pytest .raises (AssertionError ):
142167 await connection_manager .initialize ("127.0.0.1" , 10001 )
@@ -148,25 +173,36 @@ async def test_connection_manager(
148173 assert set (graph .components ()) == set (components [0 ])
149174 assert set (graph .connections ()) == set (connections [0 ])
150175
176+ assert api .microgrid_id == metadata .microgrid_id
177+ assert api .location == metadata .location
178+
151179 @mock .patch ("grpc.aio.insecure_channel" )
152180 async def test_connection_manager_another_method (
153181 self ,
154182 _ : MagicMock ,
155183 components : list [list [Component ]],
156184 connections : list [list [Connection ]],
185+ metadata : meta .Metadata ,
157186 ) -> None :
158187 """Test if the api was not deallocated.
159188
160189 Args:
161190 _: insecure channel mock
162191 components: components
163192 connections: connections
193+ metadata: the metadata of the microgrid
164194 """
165195 microgrid_client = MagicMock ()
166196 microgrid_client .components = AsyncMock (return_value = [])
167197 microgrid_client .connections = AsyncMock (return_value = [])
198+ microgrid_client .get_metadata = AsyncMock (return_value = None )
168199
169200 api = connection_manager .get ()
170201 graph = api .component_graph
171202 assert set (graph .components ()) == set (components [0 ])
172203 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