@@ -147,42 +147,34 @@ void displayMinMaxPrices_withValidData() {
147147
148148 @ Test
149149 void displaySortedPrices_whenRequested () {
150- // This test ensures charging window can span days when next day data exists
151- LocalDate today = LocalDate .of (2025 , 9 , 4 );
152- LocalDate tomorrow = today .plusDays (1 );
153-
154- String mockJsonToday = """
155- [{"SEK_per_kWh":0.30,"EUR_per_kWh":0.03,"EXR":10.0,"time_start":"2025-09-04T20:00:00+02:00","time_end":"2025-09-04T21:00:00+02:00"},
156- {"SEK_per_kWh":0.10,"EUR_per_kWh":0.01,"EXR":10.0,"time_start":"2025-09-04T21:00:00+02:00","time_end":"2025-09-04T22:00:00+02:00"},
157- {"SEK_per_kWh":0.20,"EUR_per_kWh":0.02,"EXR":10.0,"time_start":"2025-09-04T22:00:00+02:00","time_end":"2025-09-04T23:00:00+02:00"},
158- {"SEK_per_kWh":0.10,"EUR_per_kWh":0.01,"EXR":10.0,"time_start":"2025-09-04T23:00:00+02:00","time_end":"2025-09-04T00:00:00+02:00"}]""" ;
159- String mockJsonTomorrow = """
160- [{"SEK_per_kWh":0.10,"EUR_per_kWh":0.01,"EXR":10.0,"time_start":"2025-09-05T00:00:00+02:00","time_end":"2025-09-05T01:00:00+02:00"},
161- {"SEK_per_kWh":0.15,"EUR_per_kWh":0.015,"EXR":10.0,"time_start":"2025-09-05T01:00:00+02:00","time_end":"2025-09-05T02:00:00+02:00"},
162- {"SEK_per_kWh":0.15,"EUR_per_kWh":0.015,"EXR":10.0,"time_start":"2025-09-05T02:00:00+02:00","time_end":"2025-09-05T03:00:00+02:00"}]""" ;
150+ String mockJson = """
151+ [{"SEK_per_kWh":0.30,"EUR_per_kWh":0.03,"EXR":10.0,"time_start":"2025-09-04T00:00:00+02:00","time_end":"2025-09-04T01:00:00+02:00"},
152+ {"SEK_per_kWh":0.10,"EUR_per_kWh":0.01,"EXR":10.0,"time_start":"2025-09-04T01:00:00+02:00","time_end":"2025-09-04T02:00:00+02:00"},
153+ {"SEK_per_kWh":0.20,"EUR_per_kWh":0.02,"EXR":10.0,"time_start":"2025-09-04T02:00:00+02:00","time_end":"2025-09-04T03:00:00+02:00"},
154+ {"SEK_per_kWh":0.10,"EUR_per_kWh":0.01,"EXR":10.0,"time_start":"2025-09-04T03:00:00+02:00","time_end":"2025-09-04T04:00:00+02:00"}]""" ;
163155
164- ElpriserAPI .setMockResponseForDate (today , mockJsonToday );
165- ElpriserAPI .setMockResponseForDate (tomorrow , mockJsonTomorrow );
156+ ElpriserAPI .setMockResponse (mockJson );
166157
167158 Main .main (new String []{"--zone" , "SE2" , "--date" , "2025-09-04" , "--sorted" });
168159
169160 String output = bos .toString ();
170161
171- // Expected sorted output (descending by price)
162+ // Expected sorted output (ascending by price)
172163 List <String > expectedOrder = List .of (
173- "20-21 30,00 öre" ,
174- "22-23 20,00 öre" ,
175- "01-02 15,00 öre" ,
176- "02-03 15,00 öre" ,
177- "21-22 10,00 öre" ,
178- "23-00 10,00 öre" ,
179- "00-01 10,00 öre"
164+ "2025-09-04 00-01 30,00 öre" ,
165+ "2025-09-04 00-01 30,00 öre" ,
166+ "2025-09-04 02-03 20,00 öre" ,
167+ "2025-09-04 02-03 20,00 öre" ,
168+ "2025-09-04 01-02 10,00 öre" ,
169+ "2025-09-04 03-04 10,00 öre" ,
170+ "2025-09-04 01-02 10,00 öre" ,
171+ "2025-09-04 03-04 10,00 öre"
180172 );
181173
182174 // Extract actual lines that match the pattern
183175 List <String > actualSortedLines = Arrays .stream (output .split ("\n " ))
184176 .map (String ::trim ) // 1. Trim leading/trailing whitespace
185- .filter (line -> line .matches ("^\\ d{2}-\\ d{2}\\ s+\\ d+,\\ d{2}\\ s+öre$" )) // 2. Use a more flexible regex
177+ .filter (line -> line .matches ("^\\ d{4}- \\ d{2}- \\ d{2} \\ s+ \\ d{ 2}-\\ d{2}\\ s+\\ d+,\\ d{2}\\ s+öre$" )) // 2. Use a more flexible regex
186178 .collect (Collectors .toList ());
187179
188180 // Assert that actual lines match expected order
0 commit comments