Repository: electricitymaps/electricitymaps-contrib

Issue:
Split generation by island for Canaries
Is it possible to split canary island into the islands.
they are really working for there own.
see  also:
http://ree.es/en/activities/canary-islands-electricity-system/canary-electricity-demand-in-real-time

El Hierro is very impressiv: rigth now 100% RE /  0 CO2
source:
https://demanda.ree.es/movil/canarias/el_hierro/total


Discussion:
"inside look" from outside to El Hierro "Gorona del Viento":
http://euanmearns.com/el-hierro-portal/
A quick look at this one reveals that the page makes a request to https://demanda.ree.es/WSvisionaMovilesCanariasRest/resources/demandaGeneracionCanarias?callback=angular.callbacks._2&curva=EL_HIERRO&fecha=2017-10-31 which then returns json data for each 10 minute interval.  It shouldn't be hard to write a parser for this.
As was mentioned in the Slack channel, the current parser for Canary Islands uses https://pypi.python.org/pypi/reescraper which already splits up the data by island. Unfortunately our map data source (Natural Earth) doesn't break apart the islands, so integration on the map side is a bit tricky.

It should be feasible to just use the currently generated GeoJSON (/web/app/world.json) and extract the polygons for all the islands, then split it into separate islands manually - they're already separate polygons for each island on the map.
I've managed to separate out the individual Canary Island's from the natural earth .shp files which I'll submit a PR for soon. @blackleg you should be able to return data by Island rather than in aggregate now.
@systemcatch Great work. :+1: 
Thanks very much you all.

Resolving patch:
diff --git a/parsers/ES_CN.py b/parsers/ES_CN.py
--- a/parsers/ES_CN.py
+++ b/parsers/ES_CN.py
@@ -9,77 +9,56 @@
 from parsers.lib.exceptions import ParserException
 
 
-def fetch_islands_data(country_code, session):
-    data = {}
-
-    el_hierro_data = ElHierro(session).get_all()
-    if not el_hierro_data:
-        raise ParserException(country_code, "ElHierro not response")
-    else:
-        data.update({'el_hierro': el_hierro_data})
-
-    gran_canaria_data = GranCanaria(session).get_all()
-    if not gran_canaria_data:
-        raise ParserException(country_code, "GranCanaria not response")
-    else:
-        data.update({'gran_canaria': gran_canaria_data})
-
-    gomera_data = Gomera(session).get_all()
-    if not gomera_data:
-        raise ParserException(country_code, "Gomera not response")
-    else:
-        data.update({'gomera': gomera_data})
-
-    lanzarote_fuerteventura_data = LanzaroteFuerteventura(session).get_all()
-    if not lanzarote_fuerteventura_data:
-        raise ParserException(country_code, "LanzaroteFuerteventura not response")
-    else:
-        data.update({'lanzarote_fuerteventura': lanzarote_fuerteventura_data})
-
-    la_palma_data = LaPalma(session).get_all()
-    if not la_palma_data:
-        raise ParserException(country_code, "LaPalma not response")
-    else:
-        data.update({'la_palma': la_palma_data})
-
-    tenerife_data = Tenerife(session).get_all()
-    if not tenerife_data:
-        raise ParserException(country_code, "Tenerife not response")
+def fetch_island_data(country_code, session):
+    if country_code == 'ES-CN-FVLZ':
+        lanzarote_fuerteventura_data = LanzaroteFuerteventura(session).get_all()
+        if not lanzarote_fuerteventura_data:
+            raise ParserException(country_code, "LanzaroteFuerteventura not response")
+        else:
+            return lanzarote_fuerteventura_data
+    elif country_code == 'ES-CN-GC':
+        gran_canaria_data = GranCanaria(session).get_all()
+        if not gran_canaria_data:
+            raise ParserException(country_code, "GranCanaria not response")
+        else:
+            return gran_canaria_data
+    elif country_code == 'ES-CN-IG':
+        gomera_data = Gomera(session).get_all()
+        if not gomera_data:
+            raise ParserException(country_code, "Gomera not response")
+        else:
+            return gomera_data
+    elif country_code == 'ES-CN-LP':
+        la_palma_data = LaPalma(session).get_all()
+        if not la_palma_data:
+            raise ParserException(country_code, "LaPalma not response")
+        else:
+            return la_palma_data
+    elif country_code == 'ES-CN-TE':
+        tenerife_data = Tenerife(session).get_all()
+        if not tenerife_data:
+            raise ParserException(country_code, "Tenerife not response")
+        else:
+            return tenerife_data
+    elif country_code == 'ES-CN-HI':
+        el_hierro_data = ElHierro(session).get_all()
+        if not el_hierro_data:
+            raise ParserException(country_code, "ElHierro not response")
+        else:
+            return el_hierro_data
     else:
-        data.update({'tenerife': tenerife_data})
-
-    return data
+        raise ParserException(country_code, 'Can\'t read this country code {0}'.format(country_code))
 
 
 def fetch_consumption(country_code='ES-CN', session=None):
     ses = session or Session()
-
-    islands_data = fetch_islands_data(country_code, ses)
-
-    consumption_data = {}
-
-    el_hierro_island_data = islands_data['el_hierro']
-    for response in el_hierro_island_data:
-        consumption_datetime = get(response.timestamp).datetime
-        consumption = response.demand
-        consumption_data.update({consumption_datetime: consumption})
-
-    for island, island_data in islands_data.items():
-        if not island == 'el_hierro':
-            for response in island_data:
-                consumption_datetime = get(response.timestamp).datetime
-                consumption = response.demand
-                if consumption_datetime in consumption_data:
-                    consumption = consumption_data[consumption_datetime] + consumption
-                    consumption_data.update({consumption_datetime: consumption})
-
+    island_data = fetch_island_data(country_code, ses)
     data = []
-
-    for datetime, demand in consumption_data.items():
+    for response in island_data:
         response_data = {
             'countryCode': country_code,
-            'datetime': datetime,
-            'consumption': round(demand, 2),
+            'datetime': get(response.timestamp).datetime,
+            'consumption': response.demand,
             'source': 'demanda.ree.es'
         }
 
@@ -88,77 +67,80 @@ def fetch_consumption(country_code='ES-CN', session=None):
     return data
 
 
-def fetch_production(country_code='ES-CN', session=None):
+def fetch_production(country_code, session=None):
     ses = session or Session()
-
-    islands_data = fetch_islands_data(country_code, ses)
-
-    production_data = {}
-
-    el_hierro_island_data = islands_data['el_hierro']
-    for response in el_hierro_island_data:
-        if response.production() > 0:
-            production_datetime = get(response.timestamp).datetime
-            production = {
-                'gas': response.gas + response.combined,
-                'oil': response.vapor + response.diesel,
-                'solar': response.solar,
-                'wind': response.wind,
-                'hydro': 0.0,
-                'storage': -response.hydraulic
-            }
-            production_data.update({production_datetime: production})
-
-    for island, island_data in islands_data.items():
-        if not island == 'el_hierro':
-            for response in island_data:
-                production_datetime = get(response.timestamp).datetime
-                if production_datetime in production_data:
-                    if response.production() <= 0:
-                        production_data.pop(production_datetime, None)
-                    else:
-                        production = production_data[production_datetime]
-                        production = {
-                            'gas': production['gas'] + response.gas + response.combined,
-                            'oil': production['oil'] + response.vapor + response.diesel,
-                            'solar': production['solar'] + response.solar,
-                            'wind': production['wind'] + response.wind,
-                            'hydro': production['hydro'] + response.hydraulic,
-                            'storage': production['storage']
-                        }
-                        production_data.update({production_datetime: production})
-
+    island_data = fetch_island_data(country_code, ses)
     data = []
 
-    for datetime, production in production_data.items():
-        response_data = {
-            'countryCode': country_code,
-            'datetime': datetime,
-            'production': {
-                'coal': 0.0,
-                'gas': round(production['gas'], 2),
-                'solar': round(production['solar'], 2),
-                'oil': round(production['oil'], 2),
-                'wind': round(production['wind'], 2),
-                'hydro': round(production['hydro'], 2),
-                'biomass': 0.0,
-                'nuclear': 0.0,
-                'geothermal': 0.0,
-                'unknown': 0.0
-            },
-            'storage': {
-                'hydro': round(production['storage'], 2),
-                'battery': 0.0
-            },
-            'source': 'demanda.ree.es'
-        }
-
-        data.append(response_data)
+    if country_code == 'ES-CN-HI':
+        for response in island_data:
+            if response.production() > 0:
+                response_data = {
+                    'countryCode': country_code,
+                    'datetime': get(response.timestamp).datetime,
+                    'production': {
+                        'coal': 0.0,
+                        'gas': round(response.gas + response.combined, 2),
+                        'solar': round(response.solar, 2),
+                        'oil': round(response.vapor + response.diesel, 2),
+                        'wind': round(response.wind, 2),
+                        'hydro': 0.0,
+                        'biomass': 0.0,
+                        'nuclear': 0.0,
+                        'geothermal': 0.0
+                    },
+                    'storage': {
+                        'hydro': round(-response.hydraulic, 2),
+                        'battery': 0.0
+                    },
+                    'source': 'demanda.ree.es',
+                }
+                data.append(response_data)
+    else:
+        for response in island_data:
+            if response.production() > 0:
+                response_data = {
+                    'countryCode': country_code,
+                    'datetime': get(response.timestamp).datetime,
+                    'production': {
+                        'coal': 0.0,
+                        'gas': round(response.gas + response.combined, 2),
+                        'solar': round(response.solar, 2),
+                        'oil': round(response.vapor + response.diesel, 2),
+                        'wind': round(response.wind, 2),
+                        'hydro': round(response.hydraulic, 2),
+                        'biomass': 0.0,
+                        'nuclear': 0.0,
+                        'geothermal': 0.0
+                    },
+                    'storage': {
+                        'hydro': 0.0,
+                        'battery': 0.0
+                    },
+                    'source': 'demanda.ree.es',
+                }
+                data.append(response_data)
 
     return data
 
 
 if __name__ == '__main__':
     session = Session
-    print(fetch_consumption('ES-CN', session))
-    print(fetch_production('ES-CN', session))
+    print("# ES-CN-FVLZ")
+    print(fetch_consumption('ES-CN-FVLZ', session))
+    print(fetch_production('ES-CN-FVLZ', session))
+    print("# ES-CN-GC")
+    print(fetch_consumption('ES-CN-GC', session))
+    print(fetch_production('ES-CN-GC', session))
+    print("# ES-CN-IG")
+    print(fetch_consumption('ES-CN-IG', session))
+    print(fetch_production('ES-CN-IG', session))
+    print("# ES-CN-LP")
+    print(fetch_consumption('ES-CN-LP', session))
+    print(fetch_production('ES-CN-LP', session))
+    print("# ES-CN-TE")
+    print(fetch_consumption('ES-CN-TE', session))
+    print(fetch_production('ES-CN-TE', session))
+    print("# ES-CN-HI")
+    print(fetch_consumption('ES-CN-HI', session))
+    print(fetch_production('ES-CN-HI', session))


Test patch:
diff --git a/parsers/test/test_ES_CN.py b/parsers/test/test_ES_CN.py
--- a/parsers/test/test_ES_CN.py
+++ b/parsers/test/test_ES_CN.py
@@ -23,54 +23,33 @@ def setUp(self):
     @patch.object(GranCanaria, 'get_all')
     @patch.object(ElHierro, 'get_all')
     def test_fetch_consumption(self, el_hierro, gran_canaria, gomera, lanza_fuerte, palma, tene):
-        el_hierro.return_value = [
-            Response(self.morning, 10.0),
-            Response(self.afternoon, 5.6),
-            Response(self.evening, 12.0)
-        ]
-
-        gran_canaria.return_value = [
-            Response(self.morning, 15.0),
-            Response(self.afternoon, 443.6),
-            Response(self.evening, 18.0)
-        ]
-        gomera.return_value = [
-            Response(self.morning, 5.0),
-            Response(self.afternoon, 9.3),
-            Response(self.evening, 8.0)
-        ]
+        el_hierro.return_value = []
+        gran_canaria.return_value = []
+        gomera.return_value = []
         lanza_fuerte.return_value = [
             Response(self.morning, 25.0),
             Response(self.afternoon, 200.1),
             Response(self.evening, 28.0)
         ]
-        palma.return_value = [
-            Response(self.morning, 30.0),
-            Response(self.afternoon, 34.7),
-            Response(self.evening, 32.0)
-        ]
-        tene.return_value = [
-            Response(self.morning, 20.0),
-            Response(self.afternoon, 452.6),
-            Response(self.evening, 22.0)
-        ]
+        palma.return_value = []
+        tene.return_value = []
 
-        data = ES_CN.fetch_consumption('ES-CN', self.session)
+        data = ES_CN.fetch_consumption('ES-CN-FVLZ', self.session)
         self.assertIsNotNone(data)
         self.assertIs(len(data), 3)
         for consumption in data:
-            self.assertEqual(consumption['countryCode'], 'ES-CN')
+            self.assertEqual(consumption['countryCode'], 'ES-CN-FVLZ')
             self.assertEqual(consumption['source'], 'demanda.ree.es')
             self.assertIsNotNone(consumption['datetime'])
             self.assertTrue(consumption['datetime'] == self.morning
                             or consumption['datetime'] == self.afternoon
                             or consumption['datetime'] == self.evening)
             if self.morning == consumption['datetime']:
-                self.assertEqual(consumption['consumption'], 105.0)
+                self.assertEqual(consumption['consumption'], 25.0)
             elif self.afternoon == consumption['datetime']:
-                self.assertEqual(consumption['consumption'], 1145.9)
+                self.assertEqual(consumption['consumption'], 200.1)
             elif self.evening == consumption['datetime']:
-                self.assertEqual(consumption['consumption'], 120.0)
+                self.assertEqual(consumption['consumption'], 28.0)
 
     @patch.object(Tenerife, 'get_all')
     @patch.object(LaPalma, 'get_all')
@@ -78,51 +57,114 @@ def test_fetch_consumption(self, el_hierro, gran_canaria, gomera, lanza_fuerte,
     @patch.object(Gomera, 'get_all')
     @patch.object(GranCanaria, 'get_all')
     @patch.object(ElHierro, 'get_all')
-    def test_fetch_production(self, el_hierro, gran_canaria, gomera, lanza_fuerte, palma, tene):
-        self.empty_production = get(1514673600).datetime
+    def test_fetch_consumption_el_hierro(self, el_hierro, gran_canaria, gomera, lanza_fuerte, palma, tene):
         el_hierro.return_value = [
-            Response(self.morning, 10.0, 1.5, 2.0, 0.5, 2.5, 2.5, 0.4, 5.0),
-            Response(self.afternoon, 5.6, 1.7, 0.0, 1.6, 0.0, 0.0, 0.0, 2.4),
-            Response(self.evening, 12.0, 2.0, 2.0, 0.5, 2.5, 2.5, 0.0, 3.0),
-            Response(self.empty_production, 12.0, 2.0, 2.0, 0.5, 2.5, 2.5, 0.0, 3.0)
+            Response(self.morning, 10.0),
+            Response(self.afternoon, 5.6),
+            Response(self.evening, 12.0)
         ]
+        gran_canaria.return_value = []
+        gomera.return_value = []
+        lanza_fuerte.return_value = []
+        palma.return_value = []
+        tene.return_value = []
 
-        gran_canaria.return_value = [
-            Response(self.morning, 15.0, 1.5, 2.0, 0.5, 2.5, 2.5, 0.4, 5.0),
-            Response(self.afternoon, 443.6, 34.7, 0.0, 33.3, 172.4, 184.5, 17.5, 0.0),
-            Response(self.evening, 18.0, 1.5, 2.0, 0.5, 2.5, 2.5, 0.4, 5.0),
-            Response(self.empty_production, 12.0, 2.0, 2.0, 0.5, 2.5, 2.5, 0.0, 3.0)
-        ]
-        gomera.return_value = [
-            Response(self.morning, 5.0, 1.5, 2.0, 0.5, 2.5, 2.5, 0.4, 5.0),
-            Response(self.afternoon, 9.3, 9.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0),
-            Response(self.evening, 8.0, 1.5, 2.0, 0.5, 2.5, 2.5, 0.4, 5.0),
-            Response(self.empty_production, 12.0, 2.0, 2.0, 0.5, 2.5, 2.5, 0.0, 3.0)
-        ]
+        data = ES_CN.fetch_consumption('ES-CN-HI', self.session)
+        self.assertIsNotNone(data)
+        self.assertIs(len(data), 3)
+        for consumption in data:
+            self.assertEqual(consumption['countryCode'], 'ES-CN-HI')
+            self.assertEqual(consumption['source'], 'demanda.ree.es')
+            self.assertIsNotNone(consumption['datetime'])
+            self.assertTrue(consumption['datetime'] == self.morning
+                            or consumption['datetime'] == self.afternoon
+                            or consumption['datetime'] == self.evening)
+            if self.morning == consumption['datetime']:
+                self.assertEqual(consumption['consumption'], 10.0)
+            elif self.afternoon == consumption['datetime']:
+                self.assertEqual(consumption['consumption'], 5.6)
+            elif self.evening == consumption['datetime']:
+                self.assertEqual(consumption['consumption'], 12.0)
+
+    @patch.object(Tenerife, 'get_all')
+    @patch.object(LaPalma, 'get_all')
+    @patch.object(LanzaroteFuerteventura, 'get_all')
+    @patch.object(Gomera, 'get_all')
+    @patch.object(GranCanaria, 'get_all')
+    @patch.object(ElHierro, 'get_all')
+    def test_fetch_production(self, el_hierro, gran_canaria, gomera, lanza_fuerte, palma, tene):
+        self.empty_production = get(1514673600).datetime
+        el_hierro.return_value = []
+        gran_canaria.return_value = []
+        gomera.return_value = []
         lanza_fuerte.return_value = [
             Response(self.morning, 25.0, 1.5, 2.0, 0.5, 2.5, 2.5, 0.4, 5.0),
             Response(self.afternoon, 200.1, 182.0, 12.2, 3.1, 0.0, 0.0, 5.3, 0.0),
             Response(self.evening, 28.0, 1.5, 2.0, 0.5, 2.5, 2.5, 0.4, 5.0),
             Response(self.empty_production, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
         ]
-        palma.return_value = [
-            Response(self.morning, 30.0, 1.5, 2.0, 0.5, 2.5, 2.5, 0.4, 5.0),
-            Response(self.afternoon, 34.7, 30.2, 0.0, 3.3, 0.0, 0.0, 2.1, 0.0),
-            Response(self.evening, 32.0, 1.5, 2.0, 0.5, 2.5, 2.5, 0.4, 5.0),
-            Response(self.empty_production, 12.0, 2.0, 2.0, 0.5, 2.5, 2.5, 0.0, 3.0)
-        ]
-        tene.return_value = [
-            Response(self.morning, 20.0, 1.5, 2.0, 0.5, 2.5, 2.5, 0.4, 5.0),
-            Response(self.afternoon, 452.6, 34.9, 0.0, 28.2, 143.8, 179.2, 66.3, 0.0),
-            Response(self.evening, 22.0, 1.5, 2.0, 0.5, 2.5, 2.5, 0.4, 5.0),
-            Response(self.empty_production, 12.0, 2.0, 2.0, 0.5, 2.5, 2.5, 0.0, 3.0)
+        palma.return_value = []
+        tene.return_value = []
+
+        data = ES_CN.fetch_production('ES-CN-FVLZ', self.session)
+        self.assertIsNotNone(data)
+        self.assertIs(len(data), 3)
+        for production in data:
+            self.assertEqual(production['countryCode'], 'ES-CN-FVLZ')
+            self.assertEqual(production['source'], 'demanda.ree.es')
+            self.assertIsNotNone(production['datetime'])
+            self.assertIsNotNone(production['production'])
+            self.assertIsNotNone(production['storage'])
+            self.assertTrue(production['datetime'] == self.morning
+                            or production['datetime'] == self.afternoon
+                            or production['datetime'] == self.evening)
+            if self.morning == production['datetime']:
+                self.assertEqual(production['production']['gas'], 4.5)
+                self.assertEqual(production['production']['oil'], 4.0)
+                self.assertEqual(production['production']['hydro'], 5.0)
+                self.assertEqual(production['production']['solar'], 0.4)
+                self.assertEqual(production['production']['wind'], 0.5)
+                self.assertEqual(production['storage']['hydro'], 0.0)
+            elif self.afternoon == production['datetime']:
+                self.assertEqual(production['production']['gas'], 12.2)
+                self.assertEqual(production['production']['oil'], 182.0)
+                self.assertEqual(production['production']['hydro'], 0.0)
+                self.assertEqual(production['production']['solar'], 5.3)
+                self.assertEqual(production['production']['wind'], 3.1)
+                self.assertEqual(production['storage']['hydro'], 0.0)
+            elif self.evening == production['datetime']:
+                self.assertEqual(production['production']['gas'], 4.5)
+                self.assertEqual(production['production']['oil'], 4.0)
+                self.assertEqual(production['production']['hydro'], 5.0)
+                self.assertEqual(production['production']['solar'], 0.4)
+                self.assertEqual(production['production']['wind'], 0.5)
+                self.assertEqual(production['storage']['hydro'], 0.0)
+
+    @patch.object(Tenerife, 'get_all')
+    @patch.object(LaPalma, 'get_all')
+    @patch.object(LanzaroteFuerteventura, 'get_all')
+    @patch.object(Gomera, 'get_all')
+    @patch.object(GranCanaria, 'get_all')
+    @patch.object(ElHierro, 'get_all')
+    def test_fetch_production_el_hierro(self, el_hierro, gran_canaria, gomera, lanza_fuerte, palma, tene):
+        self.empty_production = get(1514673600).datetime
+        el_hierro.return_value = [
+            Response(self.morning, 10.0, 1.5, 2.0, 0.5, 2.5, 2.5, 0.4, 5.0),
+            Response(self.afternoon, 5.6, 1.7, 0.0, 1.6, 0.0, 0.0, 0.0, 2.4),
+            Response(self.evening, 12.0, 2.0, 2.0, 0.5, 2.5, 2.5, 0.0, 3.0),
+            Response(self.empty_production, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
         ]
+        gran_canaria.return_value = []
+        gomera.return_value = []
+        lanza_fuerte.return_value = []
+        palma.return_value = []
+        tene.return_value = []
 
-        data = ES_CN.fetch_production('ES-CN', self.session)
+        data = ES_CN.fetch_production('ES-CN-HI', self.session)
         self.assertIsNotNone(data)
         self.assertIs(len(data), 3)
         for production in data:
-            self.assertEqual(production['countryCode'], 'ES-CN')
+            self.assertEqual(production['countryCode'], 'ES-CN-HI')
             self.assertEqual(production['source'], 'demanda.ree.es')
             self.assertIsNotNone(production['datetime'])
             self.assertIsNotNone(production['production'])
@@ -131,25 +173,25 @@ def test_fetch_production(self, el_hierro, gran_canaria, gomera, lanza_fuerte, p
                             or production['datetime'] == self.afternoon
                             or production['datetime'] == self.evening)
             if self.morning == production['datetime']:
-                self.assertEqual(production['production']['gas'], 27.0)
-                self.assertEqual(production['production']['oil'], 24.0)
-                self.assertEqual(production['production']['hydro'], 25.0)
-                self.assertEqual(production['production']['solar'], 2.4)
-                self.assertEqual(production['production']['wind'], 3.0)
+                self.assertEqual(production['production']['gas'], 4.5)
+                self.assertEqual(production['production']['oil'], 4.0)
+                self.assertEqual(production['production']['hydro'], 0.0)
+                self.assertEqual(production['production']['solar'], 0.4)
+                self.assertEqual(production['production']['wind'], 0.5)
                 self.assertEqual(production['storage']['hydro'], -5.0)
             elif self.afternoon == production['datetime']:
-                self.assertEqual(production['production']['gas'], 328.4)
-                self.assertEqual(production['production']['oil'], 656.5)
+                self.assertEqual(production['production']['gas'], 0.0)
+                self.assertEqual(production['production']['oil'], 1.7)
                 self.assertEqual(production['production']['hydro'], 0.0)
-                self.assertEqual(production['production']['solar'], 91.2)
-                self.assertEqual(production['production']['wind'], 69.5)
+                self.assertEqual(production['production']['solar'], 0.0)
+                self.assertEqual(production['production']['wind'], 1.6)
                 self.assertEqual(production['storage']['hydro'], -2.4)
             elif self.evening == production['datetime']:
-                self.assertEqual(production['production']['gas'], 27.0)
-                self.assertEqual(production['production']['oil'], 24.5)
-                self.assertEqual(production['production']['hydro'], 25.0)
-                self.assertEqual(production['production']['solar'], 2.0)
-                self.assertEqual(production['production']['wind'], 3.0)
+                self.assertEqual(production['production']['gas'], 4.5)
+                self.assertEqual(production['production']['oil'], 4.5)
+                self.assertEqual(production['production']['hydro'], 0.0)
+                self.assertEqual(production['production']['solar'], 0.0)
+                self.assertEqual(production['production']['wind'], 0.5)
                 self.assertEqual(production['storage']['hydro'], -3.0)