From 7eb58d898df1b25f7ac437deef7f5ee1b047945d Mon Sep 17 00:00:00 2001
From: Viktor Andersson <30777521+VIKTORVAV99@users.noreply.github.com>
Date: Fri, 12 Jan 2024 11:14:42 +0100
Subject: [PATCH] Add snapshot test for ENTSO-E exchange functions (#6285)
* Add snapshot test for ENTSO-E exchange function
* add test case for exchange forecasts
* sort by datetime to match EventLists
* format
* account for change to proxy domain
---
.../ENTSOE/DK-DK1_GB_exchange_exports.xml | 236 +++++
.../ENTSOE/DK-DK1_GB_exchange_imports.xml | 236 +++++
...K-DK2_SE-SE4_exchange_forecast_exports.xml | 687 ++++++++++++++
...K-DK2_SE-SE4_exchange_forecast_imports.xml | 687 ++++++++++++++
parsers/test/snapshots/snap_test_ENTSOE.py | 851 ++++++++++++++++++
parsers/test/test_ENTSOE.py | 89 +-
6 files changed, 2785 insertions(+), 1 deletion(-)
create mode 100644 parsers/test/mocks/ENTSOE/DK-DK1_GB_exchange_exports.xml
create mode 100644 parsers/test/mocks/ENTSOE/DK-DK1_GB_exchange_imports.xml
create mode 100644 parsers/test/mocks/ENTSOE/DK-DK2_SE-SE4_exchange_forecast_exports.xml
create mode 100644 parsers/test/mocks/ENTSOE/DK-DK2_SE-SE4_exchange_forecast_imports.xml
create mode 100644 parsers/test/snapshots/snap_test_ENTSOE.py
diff --git a/parsers/test/mocks/ENTSOE/DK-DK1_GB_exchange_exports.xml b/parsers/test/mocks/ENTSOE/DK-DK1_GB_exchange_exports.xml
new file mode 100644
index 0000000000..d0a014ffa4
--- /dev/null
+++ b/parsers/test/mocks/ENTSOE/DK-DK1_GB_exchange_exports.xml
@@ -0,0 +1,236 @@
+
+
+ dceac22608ba4d82adab1f0e9e6d9b63
+ 1
+ A11
+ 10X1001A1001A450
+ A32
+ 10X1001A1001A450
+ A33
+ 2023-12-22T17:25:00Z
+
+ 2023-12-20T17:00Z
+ 2023-12-23T00:00Z
+
+
+ 1
+ A66
+ 10YGB----------A
+ 10YDK-1--------W
+ MAW
+ A01
+
+
+ 2023-12-20T17:00Z
+ 2023-12-22T08:00Z
+
+ PT60M
+
+ 1
+ 1362
+
+
+ 2
+ 102
+
+
+ 3
+ 0
+
+
+ 4
+ 0
+
+
+ 5
+ 0
+
+
+ 6
+ 0
+
+
+ 7
+ 0
+
+
+ 8
+ 0
+
+
+ 9
+ 0
+
+
+ 10
+ 0
+
+
+ 11
+ 0
+
+
+ 12
+ 0
+
+
+ 13
+ 0
+
+
+ 14
+ 0
+
+
+ 15
+ 0
+
+
+ 16
+ 0
+
+
+ 17
+ 0
+
+
+ 18
+ 0
+
+
+ 19
+ 0
+
+
+ 20
+ 0
+
+
+ 21
+ 0
+
+
+ 22
+ 0
+
+
+ 23
+ 0
+
+
+ 24
+ 0
+
+
+ 25
+ 0
+
+
+ 26
+ 0
+
+
+ 27
+ 2
+
+
+ 28
+ 1
+
+
+ 29
+ 1
+
+
+ 30
+ 1
+
+
+ 31
+ 1
+
+
+ 32
+ 1
+
+
+ 33
+ 1
+
+
+ 34
+ 1
+
+
+ 35
+ 1
+
+
+ 36
+ 1
+
+
+ 37
+ 1
+
+
+ 38
+ 1
+
+
+ 39
+ 1
+
+
+
+
+ 2
+ A66
+ 10YGB----------A
+ 10YDK-1--------W
+ MAW
+ A01
+
+
+ 2023-12-22T09:00Z
+ 2023-12-22T11:00Z
+
+ PT60M
+
+ 1
+ 1
+
+
+ 2
+ 1
+
+
+
+
+ 3
+ A66
+ 10YGB----------A
+ 10YDK-1--------W
+ MAW
+ A01
+
+
+ 2023-12-22T13:00Z
+ 2023-12-22T16:00Z
+
+ PT60M
+
+ 1
+ 0
+
+
+ 2
+ 0
+
+
+ 3
+ 0
+
+
+
+
\ No newline at end of file
diff --git a/parsers/test/mocks/ENTSOE/DK-DK1_GB_exchange_imports.xml b/parsers/test/mocks/ENTSOE/DK-DK1_GB_exchange_imports.xml
new file mode 100644
index 0000000000..42034cc4d7
--- /dev/null
+++ b/parsers/test/mocks/ENTSOE/DK-DK1_GB_exchange_imports.xml
@@ -0,0 +1,236 @@
+
+
+ 155f9f1423094d35a40a16f1c00ddfa1
+ 1
+ A11
+ 10X1001A1001A450
+ A32
+ 10X1001A1001A450
+ A33
+ 2023-12-22T17:24:59Z
+
+ 2023-12-20T17:00Z
+ 2023-12-23T00:00Z
+
+
+ 1
+ A66
+ 10YDK-1--------W
+ 10YGB----------A
+ MAW
+ A01
+
+
+ 2023-12-20T17:00Z
+ 2023-12-22T08:00Z
+
+ PT60M
+
+ 1
+ 0
+
+
+ 2
+ 0
+
+
+ 3
+ 0
+
+
+ 4
+ 0
+
+
+ 5
+ 0
+
+
+ 6
+ 0
+
+
+ 7
+ 0
+
+
+ 8
+ 0
+
+
+ 9
+ 0
+
+
+ 10
+ 0
+
+
+ 11
+ 0
+
+
+ 12
+ 0
+
+
+ 13
+ 0
+
+
+ 14
+ 0
+
+
+ 15
+ 0
+
+
+ 16
+ 0
+
+
+ 17
+ 38
+
+
+ 18
+ 710
+
+
+ 19
+ 732
+
+
+ 20
+ 1382
+
+
+ 21
+ 1400
+
+
+ 22
+ 1402
+
+
+ 23
+ 1406
+
+
+ 24
+ 1366
+
+
+ 25
+ 1326
+
+
+ 26
+ 96
+
+
+ 27
+ 0
+
+
+ 28
+ 0
+
+
+ 29
+ 0
+
+
+ 30
+ 0
+
+
+ 31
+ 0
+
+
+ 32
+ 0
+
+
+ 33
+ 0
+
+
+ 34
+ 0
+
+
+ 35
+ 0
+
+
+ 36
+ 0
+
+
+ 37
+ 0
+
+
+ 38
+ 0
+
+
+ 39
+ 0
+
+
+
+
+ 2
+ A66
+ 10YDK-1--------W
+ 10YGB----------A
+ MAW
+ A01
+
+
+ 2023-12-22T09:00Z
+ 2023-12-22T11:00Z
+
+ PT60M
+
+ 1
+ 0
+
+
+ 2
+ 0
+
+
+
+
+ 3
+ A66
+ 10YDK-1--------W
+ 10YGB----------A
+ MAW
+ A01
+
+
+ 2023-12-22T13:00Z
+ 2023-12-22T16:00Z
+
+ PT60M
+
+ 1
+ 2
+
+
+ 2
+ 0
+
+
+ 3
+ 0
+
+
+
+
diff --git a/parsers/test/mocks/ENTSOE/DK-DK2_SE-SE4_exchange_forecast_exports.xml b/parsers/test/mocks/ENTSOE/DK-DK2_SE-SE4_exchange_forecast_exports.xml
new file mode 100644
index 0000000000..aeb22ed234
--- /dev/null
+++ b/parsers/test/mocks/ENTSOE/DK-DK2_SE-SE4_exchange_forecast_exports.xml
@@ -0,0 +1,687 @@
+
+
+ 193626fb23784ea4a5dfaa40d3014339
+ 1
+ A09
+ 10X1001A1001A450
+ A32
+ 10X1001A1001A450
+ A33
+ 2023-12-23T12:28:54Z
+
+ 2023-12-20T23:00Z
+ 2023-12-24T23:00Z
+
+
+ 1
+ A06
+ 10Y1001A1001A47J
+ 10YDK-2--------M
+ A05
+ MAW
+ A01
+
+
+ 2023-12-20T23:00Z
+ 2023-12-21T23:00Z
+
+ PT60M
+
+ 1
+ 1264
+
+
+ 2
+ 990
+
+
+ 3
+ 862
+
+
+ 4
+ 1022
+
+
+ 5
+ 1078
+
+
+ 6
+ 1160
+
+
+ 7
+ 1259
+
+
+ 8
+ 913
+
+
+ 9
+ 719
+
+
+ 10
+ 808
+
+
+ 11
+ 817
+
+
+ 12
+ 753
+
+
+ 13
+ 1099
+
+
+ 14
+ 1212
+
+
+ 15
+ 1309
+
+
+ 16
+ 1218
+
+
+ 17
+ 1065
+
+
+ 18
+ 810
+
+
+ 19
+ 727
+
+
+ 20
+ 673
+
+
+ 21
+ 790
+
+
+ 22
+ 85
+
+
+ 23
+ 640
+
+
+ 24
+ 986
+
+
+
+
+ 2
+ A06
+ 10Y1001A1001A47J
+ 10YDK-2--------M
+ A05
+ MAW
+ A01
+
+
+ 2023-12-21T23:00Z
+ 2023-12-22T23:00Z
+
+ PT60M
+
+ 1
+ 1301
+
+
+ 2
+ 1236
+
+
+ 3
+ 1358
+
+
+ 4
+ 1455
+
+
+ 5
+ 1492
+
+
+ 6
+ 1465
+
+
+ 7
+ 1386
+
+
+ 8
+ 1381
+
+
+ 9
+ 721
+
+
+ 10
+ 1148
+
+
+ 11
+ 1244
+
+
+ 12
+ 1354
+
+
+ 13
+ 1314
+
+
+ 14
+ 1285
+
+
+ 15
+ 1272
+
+
+ 16
+ 582
+
+
+ 17
+ 1338
+
+
+ 18
+ 1432
+
+
+ 19
+ 1376
+
+
+ 20
+ 1421
+
+
+ 21
+ 1187
+
+
+ 22
+ 1249
+
+
+ 23
+ 1312
+
+
+ 24
+ 619
+
+
+
+
+ 3
+ A06
+ 10Y1001A1001A47J
+ 10YDK-2--------M
+ A05
+ MAW
+ A01
+
+
+ 2023-12-22T23:00Z
+ 2023-12-23T23:00Z
+
+ PT60M
+
+ 1
+ 631
+
+
+ 2
+ 1191
+
+
+ 3
+ 1192
+
+
+ 4
+ 1340
+
+
+ 5
+ 1477
+
+
+ 6
+ 1578
+
+
+ 7
+ 1625
+
+
+ 8
+ 1485
+
+
+ 9
+ 1413
+
+
+ 10
+ 432
+
+
+ 11
+ 1398
+
+
+ 12
+ 1118
+
+
+ 13
+ 130
+
+
+ 14
+ 622
+
+
+ 15
+ 708
+
+
+ 16
+ 193
+
+
+ 17
+ 26
+
+
+ 18
+ 13
+
+
+ 19
+ 22
+
+
+ 20
+ 163
+
+
+ 21
+ 179
+
+
+ 22
+ 344
+
+
+ 23
+ 251
+
+
+ 24
+ 45
+
+
+
+
+ 4
+ A06
+ 10Y1001A1001A47J
+ 10YDK-2--------M
+ A05
+ MAW
+ A01
+
+
+ 2023-12-23T23:00Z
+ 2023-12-24T23:00Z
+
+ PT60M
+
+ 1
+ 0
+
+
+ 2
+ 0
+
+
+ 3
+ 0
+
+
+ 4
+ 0
+
+
+ 5
+ 0
+
+
+ 6
+ 0
+
+
+ 7
+ 0
+
+
+ 8
+ 0
+
+
+ 9
+ 0
+
+
+ 10
+ 0
+
+
+ 11
+ 0
+
+
+ 12
+ 0
+
+
+ 13
+ 0
+
+
+ 14
+ 0
+
+
+ 15
+ 0
+
+
+ 16
+ 0
+
+
+ 17
+ 0
+
+
+ 18
+ 0
+
+
+ 19
+ 0
+
+
+ 20
+ 0
+
+
+ 21
+ 0
+
+
+ 22
+ 0
+
+
+ 23
+ 0
+
+
+ 24
+ 0
+
+
+
+
+ 5
+ A06
+ 10Y1001A1001A47J
+ 10YDK-2--------M
+ A01
+ MAW
+ A01
+
+
+ 2023-12-20T23:00Z
+ 2023-12-21T23:00Z
+
+ PT60M
+
+ 1
+ 770
+
+
+ 2
+ 805
+
+
+ 3
+ 685
+
+
+ 4
+ 714
+
+
+ 5
+ 775
+
+
+ 6
+ 853
+
+
+ 7
+ 931
+
+
+ 8
+ 913
+
+
+ 9
+ 714
+
+
+ 10
+ 808
+
+
+ 11
+ 817
+
+
+ 12
+ 753
+
+
+ 13
+ 805
+
+
+ 14
+ 846
+
+
+ 15
+ 899
+
+
+ 16
+ 835
+
+
+ 17
+ 734
+
+
+ 18
+ 533
+
+
+ 19
+ 0
+
+
+ 20
+ 0
+
+
+ 21
+ 0
+
+
+ 22
+ 14
+
+
+ 23
+ 377
+
+
+ 24
+ 556
+
+
+
+
+ 6
+ A06
+ 10Y1001A1001A47J
+ 10YDK-2--------M
+ A01
+ MAW
+ A01
+
+
+ 2023-12-22T23:00Z
+ 2023-12-23T23:00Z
+
+ PT60M
+
+ 1
+ 585
+
+
+ 2
+ 1093
+
+
+ 3
+ 1192
+
+
+ 4
+ 1240
+
+
+ 5
+ 1407
+
+
+ 6
+ 1465
+
+
+ 7
+ 1529
+
+
+ 8
+ 1464
+
+
+ 9
+ 1413
+
+
+ 10
+ 320
+
+
+ 11
+ 1398
+
+
+ 12
+ 1118
+
+
+ 13
+ 93
+
+
+ 14
+ 0
+
+
+ 15
+ 0
+
+
+ 16
+ 0
+
+
+ 17
+ 0
+
+
+ 18
+ 0
+
+
+ 19
+ 0
+
+
+ 20
+ 0
+
+
+ 21
+ 0
+
+
+ 22
+ 0
+
+
+ 23
+ 0
+
+
+ 24
+ 0
+
+
+
+
diff --git a/parsers/test/mocks/ENTSOE/DK-DK2_SE-SE4_exchange_forecast_imports.xml b/parsers/test/mocks/ENTSOE/DK-DK2_SE-SE4_exchange_forecast_imports.xml
new file mode 100644
index 0000000000..4391fdd1db
--- /dev/null
+++ b/parsers/test/mocks/ENTSOE/DK-DK2_SE-SE4_exchange_forecast_imports.xml
@@ -0,0 +1,687 @@
+
+
+ 98c8dff04ecc45dba48ea39fb0f1adb8
+ 1
+ A09
+ 10X1001A1001A450
+ A32
+ 10X1001A1001A450
+ A33
+ 2023-12-23T12:28:53Z
+
+ 2023-12-20T23:00Z
+ 2023-12-24T23:00Z
+
+
+ 1
+ A06
+ 10YDK-2--------M
+ 10Y1001A1001A47J
+ A05
+ MAW
+ A01
+
+
+ 2023-12-20T23:00Z
+ 2023-12-21T23:00Z
+
+ PT60M
+
+ 1
+ 0
+
+
+ 2
+ 0
+
+
+ 3
+ 0
+
+
+ 4
+ 0
+
+
+ 5
+ 0
+
+
+ 6
+ 0
+
+
+ 7
+ 0
+
+
+ 8
+ 182
+
+
+ 9
+ 0
+
+
+ 10
+ 232
+
+
+ 11
+ 275
+
+
+ 12
+ 37
+
+
+ 13
+ 0
+
+
+ 14
+ 0
+
+
+ 15
+ 0
+
+
+ 16
+ 0
+
+
+ 17
+ 0
+
+
+ 18
+ 0
+
+
+ 19
+ 294
+
+
+ 20
+ 795
+
+
+ 21
+ 1075
+
+
+ 22
+ 0
+
+
+ 23
+ 0
+
+
+ 24
+ 0
+
+
+
+
+ 2
+ A06
+ 10YDK-2--------M
+ 10Y1001A1001A47J
+ A05
+ MAW
+ A01
+
+
+ 2023-12-21T23:00Z
+ 2023-12-22T23:00Z
+
+ PT60M
+
+ 1
+ 0
+
+
+ 2
+ 8
+
+
+ 3
+ 172
+
+
+ 4
+ 259
+
+
+ 5
+ 158
+
+
+ 6
+ 210
+
+
+ 7
+ 506
+
+
+ 8
+ 674
+
+
+ 9
+ 191
+
+
+ 10
+ 109
+
+
+ 11
+ 413
+
+
+ 12
+ 85
+
+
+ 13
+ 225
+
+
+ 14
+ 121
+
+
+ 15
+ 154
+
+
+ 16
+ 0
+
+
+ 17
+ 997
+
+
+ 18
+ 1300
+
+
+ 19
+ 1300
+
+
+ 20
+ 1300
+
+
+ 21
+ 1057
+
+
+ 22
+ 1300
+
+
+ 23
+ 1300
+
+
+ 24
+ 481
+
+
+
+
+ 3
+ A06
+ 10YDK-2--------M
+ 10Y1001A1001A47J
+ A05
+ MAW
+ A01
+
+
+ 2023-12-22T23:00Z
+ 2023-12-23T23:00Z
+
+ PT60M
+
+ 1
+ 0
+
+
+ 2
+ 0
+
+
+ 3
+ 44
+
+
+ 4
+ 0
+
+
+ 5
+ 0
+
+
+ 6
+ 0
+
+
+ 7
+ 0
+
+
+ 8
+ 0
+
+
+ 9
+ 161
+
+
+ 10
+ 0
+
+
+ 11
+ 257
+
+
+ 12
+ 16
+
+
+ 13
+ 0
+
+
+ 14
+ 1092
+
+
+ 15
+ 1170
+
+
+ 16
+ 555
+
+
+ 17
+ 239
+
+
+ 18
+ 1261
+
+
+ 19
+ 1261
+
+
+ 20
+ 723
+
+
+ 21
+ 1174
+
+
+ 22
+ 724
+
+
+ 23
+ 253
+
+
+ 24
+ 322
+
+
+
+
+ 4
+ A06
+ 10YDK-2--------M
+ 10Y1001A1001A47J
+ A05
+ MAW
+ A01
+
+
+ 2023-12-23T23:00Z
+ 2023-12-24T23:00Z
+
+ PT60M
+
+ 1
+ 0
+
+
+ 2
+ 0
+
+
+ 3
+ 0
+
+
+ 4
+ 0
+
+
+ 5
+ 0
+
+
+ 6
+ 0
+
+
+ 7
+ 0
+
+
+ 8
+ 0
+
+
+ 9
+ 0
+
+
+ 10
+ 0
+
+
+ 11
+ 0
+
+
+ 12
+ 0
+
+
+ 13
+ 0
+
+
+ 14
+ 0
+
+
+ 15
+ 0
+
+
+ 16
+ 0
+
+
+ 17
+ 0
+
+
+ 18
+ 0
+
+
+ 19
+ 0
+
+
+ 20
+ 0
+
+
+ 21
+ 0
+
+
+ 22
+ 0
+
+
+ 23
+ 0
+
+
+ 24
+ 0
+
+
+
+
+ 5
+ A06
+ 10YDK-2--------M
+ 10Y1001A1001A47J
+ A01
+ MAW
+ A01
+
+
+ 2023-12-20T23:00Z
+ 2023-12-21T23:00Z
+
+ PT60M
+
+ 1
+ 0
+
+
+ 2
+ 0
+
+
+ 3
+ 0
+
+
+ 4
+ 0
+
+
+ 5
+ 0
+
+
+ 6
+ 0
+
+
+ 7
+ 0
+
+
+ 8
+ 0
+
+
+ 9
+ 0
+
+
+ 10
+ 0
+
+
+ 11
+ 0
+
+
+ 12
+ 0
+
+
+ 13
+ 0
+
+
+ 14
+ 0
+
+
+ 15
+ 0
+
+
+ 16
+ 0
+
+
+ 17
+ 0
+
+
+ 18
+ 0
+
+
+ 19
+ 294
+
+
+ 20
+ 795
+
+
+ 21
+ 1075
+
+
+ 22
+ 0
+
+
+ 23
+ 0
+
+
+ 24
+ 0
+
+
+
+
+ 6
+ A06
+ 10YDK-2--------M
+ 10Y1001A1001A47J
+ A01
+ MAW
+ A01
+
+
+ 2023-12-22T23:00Z
+ 2023-12-23T23:00Z
+
+ PT60M
+
+ 1
+ 0
+
+
+ 2
+ 0
+
+
+ 3
+ 0
+
+
+ 4
+ 0
+
+
+ 5
+ 0
+
+
+ 6
+ 0
+
+
+ 7
+ 0
+
+
+ 8
+ 0
+
+
+ 9
+ 0
+
+
+ 10
+ 0
+
+
+ 11
+ 0
+
+
+ 12
+ 0
+
+
+ 13
+ 0
+
+
+ 14
+ 1092
+
+
+ 15
+ 1170
+
+
+ 16
+ 555
+
+
+ 17
+ 239
+
+
+ 18
+ 1261
+
+
+ 19
+ 1261
+
+
+ 20
+ 723
+
+
+ 21
+ 1174
+
+
+ 22
+ 724
+
+
+ 23
+ 253
+
+
+ 24
+ 322
+
+
+
+
\ No newline at end of file
diff --git a/parsers/test/snapshots/snap_test_ENTSOE.py b/parsers/test/snapshots/snap_test_ENTSOE.py
new file mode 100644
index 0000000000..06d8fd82fd
--- /dev/null
+++ b/parsers/test/snapshots/snap_test_ENTSOE.py
@@ -0,0 +1,851 @@
+# snapshottest: v1 - https://goo.gl/zC4yUc
+
+from snapshottest import Snapshot
+
+snapshots = Snapshot()
+
+snapshots["TestFetchExchange::test_fetch_exchange 1"] = [
+ {
+ "datetime": "2023-12-20T17:00:00+00:00",
+ "netFlow": 1362.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-20T18:00:00+00:00",
+ "netFlow": 102.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-20T19:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-20T20:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-20T21:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-20T22:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-20T23:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T00:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T01:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T02:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T03:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T04:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T05:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T06:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T07:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T08:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T09:00:00+00:00",
+ "netFlow": -38.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T10:00:00+00:00",
+ "netFlow": -710.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T11:00:00+00:00",
+ "netFlow": -732.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T12:00:00+00:00",
+ "netFlow": -1382.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T13:00:00+00:00",
+ "netFlow": -1400.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T14:00:00+00:00",
+ "netFlow": -1402.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T15:00:00+00:00",
+ "netFlow": -1406.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T16:00:00+00:00",
+ "netFlow": -1366.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T17:00:00+00:00",
+ "netFlow": -1326.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T18:00:00+00:00",
+ "netFlow": -96.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T19:00:00+00:00",
+ "netFlow": 2.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T20:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T21:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T22:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T23:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T00:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T01:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T02:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T03:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T04:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T05:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T06:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T07:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T09:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T10:00:00+00:00",
+ "netFlow": 1.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T13:00:00+00:00",
+ "netFlow": -2.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T14:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T15:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK1->GB",
+ "source": "entsoe.eu",
+ },
+]
+
+snapshots["TestFetchExchangeForecast::test_fetch_exchange_forecast 1"] = [
+ {
+ "datetime": "2023-12-20T23:00:00+00:00",
+ "netFlow": 1264.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T00:00:00+00:00",
+ "netFlow": 990.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T01:00:00+00:00",
+ "netFlow": 862.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T02:00:00+00:00",
+ "netFlow": 1022.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T03:00:00+00:00",
+ "netFlow": 1078.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T04:00:00+00:00",
+ "netFlow": 1160.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T05:00:00+00:00",
+ "netFlow": 1259.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T06:00:00+00:00",
+ "netFlow": 731.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T07:00:00+00:00",
+ "netFlow": 719.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T08:00:00+00:00",
+ "netFlow": 576.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T09:00:00+00:00",
+ "netFlow": 542.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T10:00:00+00:00",
+ "netFlow": 716.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T11:00:00+00:00",
+ "netFlow": 1099.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T12:00:00+00:00",
+ "netFlow": 1212.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T13:00:00+00:00",
+ "netFlow": 1309.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T14:00:00+00:00",
+ "netFlow": 1218.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T15:00:00+00:00",
+ "netFlow": 1065.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T16:00:00+00:00",
+ "netFlow": 810.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T17:00:00+00:00",
+ "netFlow": 433.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T18:00:00+00:00",
+ "netFlow": -122.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T19:00:00+00:00",
+ "netFlow": -285.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T20:00:00+00:00",
+ "netFlow": 85.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T21:00:00+00:00",
+ "netFlow": 640.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T22:00:00+00:00",
+ "netFlow": 986.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-21T23:00:00+00:00",
+ "netFlow": 1301.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T00:00:00+00:00",
+ "netFlow": 1228.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T01:00:00+00:00",
+ "netFlow": 1186.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T02:00:00+00:00",
+ "netFlow": 1196.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T03:00:00+00:00",
+ "netFlow": 1334.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T04:00:00+00:00",
+ "netFlow": 1255.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T05:00:00+00:00",
+ "netFlow": 880.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T06:00:00+00:00",
+ "netFlow": 707.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T07:00:00+00:00",
+ "netFlow": 530.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T08:00:00+00:00",
+ "netFlow": 1039.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T09:00:00+00:00",
+ "netFlow": 831.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T10:00:00+00:00",
+ "netFlow": 1269.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T11:00:00+00:00",
+ "netFlow": 1089.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T12:00:00+00:00",
+ "netFlow": 1164.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T13:00:00+00:00",
+ "netFlow": 1118.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T14:00:00+00:00",
+ "netFlow": 582.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T15:00:00+00:00",
+ "netFlow": 341.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T16:00:00+00:00",
+ "netFlow": 132.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T17:00:00+00:00",
+ "netFlow": 76.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T18:00:00+00:00",
+ "netFlow": 121.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T19:00:00+00:00",
+ "netFlow": 130.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T20:00:00+00:00",
+ "netFlow": -51.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T21:00:00+00:00",
+ "netFlow": 12.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T22:00:00+00:00",
+ "netFlow": 138.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-22T23:00:00+00:00",
+ "netFlow": 631.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T00:00:00+00:00",
+ "netFlow": 1191.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T01:00:00+00:00",
+ "netFlow": 1148.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T02:00:00+00:00",
+ "netFlow": 1340.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T03:00:00+00:00",
+ "netFlow": 1477.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T04:00:00+00:00",
+ "netFlow": 1578.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T05:00:00+00:00",
+ "netFlow": 1625.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T06:00:00+00:00",
+ "netFlow": 1485.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T07:00:00+00:00",
+ "netFlow": 1252.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T08:00:00+00:00",
+ "netFlow": 432.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T09:00:00+00:00",
+ "netFlow": 1141.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T10:00:00+00:00",
+ "netFlow": 1102.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T11:00:00+00:00",
+ "netFlow": 130.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T12:00:00+00:00",
+ "netFlow": -470.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T13:00:00+00:00",
+ "netFlow": -462.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T14:00:00+00:00",
+ "netFlow": -362.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T15:00:00+00:00",
+ "netFlow": -213.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T16:00:00+00:00",
+ "netFlow": -1248.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T17:00:00+00:00",
+ "netFlow": -1239.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T18:00:00+00:00",
+ "netFlow": -560.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T19:00:00+00:00",
+ "netFlow": -995.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T20:00:00+00:00",
+ "netFlow": -380.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T21:00:00+00:00",
+ "netFlow": -2.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T22:00:00+00:00",
+ "netFlow": -277.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-23T23:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T00:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T01:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T02:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T03:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T04:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T05:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T06:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T07:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T08:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T09:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T10:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T11:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T12:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T13:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T14:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T15:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T16:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T17:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T18:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T19:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T20:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T21:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+ {
+ "datetime": "2023-12-24T22:00:00+00:00",
+ "netFlow": -0.0,
+ "sortedZoneKeys": "DK-DK2->SE-SE4",
+ "source": "entsoe.eu",
+ },
+]
diff --git a/parsers/test/test_ENTSOE.py b/parsers/test/test_ENTSOE.py
index 838822f6fc..3bd6b5a119 100644
--- a/parsers/test/test_ENTSOE.py
+++ b/parsers/test/test_ENTSOE.py
@@ -6,12 +6,13 @@
from requests import Session
from requests_mock import ANY, GET, Adapter
+from snapshottest import TestCase
from electricitymap.contrib.lib.types import ZoneKey
from parsers import ENTSOE
-class TestENTSOE(unittest.TestCase):
+class TestENTSOE(TestCase):
def setUp(self) -> None:
super().setUp()
os.environ["ENTSOE_TOKEN"] = "token"
@@ -160,6 +161,92 @@ def test_fetch_with_negative_values(self):
mock_warning.assert_called()
+class TestFetchExchange(TestENTSOE):
+ def test_fetch_exchange(self):
+ imports = None
+ exports = None
+ # Read import data from mockfile
+ with open(
+ "parsers/test/mocks/ENTSOE/DK-DK1_GB_exchange_imports.xml", "rb"
+ ) as import_file:
+ imports = import_file.read()
+ # Read export data from mockfile
+ with open(
+ "parsers/test/mocks/ENTSOE/DK-DK1_GB_exchange_exports.xml", "rb"
+ ) as export_file:
+ exports = export_file.read()
+ self.adapter.register_uri(
+ GET,
+ "?documentType=A11&in_Domain=10YDK-1--------W&out_Domain=10YGB----------A",
+ content=imports,
+ )
+ self.adapter.register_uri(
+ GET,
+ "?documentType=A11&in_Domain=10YGB----------A&out_Domain=10YDK-1--------W",
+ content=exports,
+ )
+ exchange = ENTSOE.fetch_exchange(
+ zone_key1=ZoneKey("DK-DK1"), zone_key2=ZoneKey("GB"), session=self.session
+ )
+ exchange.sort(key=lambda x: x["datetime"])
+ self.assertMatchSnapshot(
+ [
+ {
+ "datetime": element["datetime"].isoformat(),
+ "netFlow": element["netFlow"],
+ "source": element["source"],
+ "sortedZoneKeys": element["sortedZoneKeys"],
+ }
+ for element in exchange
+ ]
+ )
+
+
+class TestFetchExchangeForecast(TestENTSOE):
+ def test_fetch_exchange_forecast(self):
+ imports = None
+ exports = None
+ # Read import data from mockfile
+ with open(
+ "parsers/test/mocks/ENTSOE/DK-DK2_SE-SE4_exchange_forecast_imports.xml",
+ "rb",
+ ) as import_file:
+ imports = import_file.read()
+ # Read export data from mockfile
+ with open(
+ "parsers/test/mocks/ENTSOE/DK-DK2_SE-SE4_exchange_forecast_exports.xml",
+ "rb",
+ ) as export_file:
+ exports = export_file.read()
+ self.adapter.register_uri(
+ GET,
+ "?documentType=A09&in_Domain=10YDK-2--------M&out_Domain=10Y1001A1001A47J",
+ content=imports,
+ )
+ self.adapter.register_uri(
+ GET,
+ "?documentType=A09&in_Domain=10Y1001A1001A47J&out_Domain=10YDK-2--------M",
+ content=exports,
+ )
+ exchange_forecast = ENTSOE.fetch_exchange_forecast(
+ zone_key1=ZoneKey("DK-DK2"),
+ zone_key2=ZoneKey("SE-SE4"),
+ session=self.session,
+ )
+ exchange_forecast.sort(key=lambda x: x["datetime"])
+ self.assertMatchSnapshot(
+ [
+ {
+ "datetime": element["datetime"].isoformat(),
+ "netFlow": element["netFlow"],
+ "source": element["source"],
+ "sortedZoneKeys": element["sortedZoneKeys"],
+ }
+ for element in exchange_forecast
+ ]
+ )
+
+
class TestENTSOE_Refetch(unittest.TestCase):
def test_fetch_uses_normal_url(self):
os.environ["ENTSOE_TOKEN"] = "proxy"