@@ -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