Skip to content

Commit 8b96d6c

Browse files
committed
fix tests
1 parent 9726aaa commit 8b96d6c

File tree

8 files changed

+50
-25
lines changed

8 files changed

+50
-25
lines changed

lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class WeatherApp extends ConsumerWidget {
2828
return initInfo.when(
2929
loading: () => const CircularProgressIndicator(),
3030
error: (err, stack) {
31-
print('Error during initialization: $err');
31+
//print('Error during initialization: $err');
3232
return Text('Error: $err, $stack');
3333
},
3434
data: (config) {

lib/services/open_mateo/open_mateo.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class OpenMateoService {
88

99
OpenMateoService(this.dio);
1010

11+
/// Fetch hourly weather data for the given latitude and longitude for the current 24 hours
1112
Future<Map<String, HourlyData>> fetchHourly({
1213
required double latitude,
1314
required double longitude,
@@ -36,6 +37,7 @@ class OpenMateoService {
3637
return result;
3738
}
3839

40+
/// Fetch daily weather data for the given latitude and longitude for the next 7 days
3941
Future<Map<String, DailyData>> fetchDaily({
4042
required double latitude,
4143
required double longitude,

lib/services/open_mateo/open_mateo_url.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class OpenMateoUrlBuilder {
2424
path: '/v1/forecast',
2525
);
2626

27+
/// Get the URL for fetching weather data for 24 hours of today
2728
String getHourlyDataUrl({
2829
required double latitude,
2930
required double longitude,
@@ -42,6 +43,7 @@ class OpenMateoUrlBuilder {
4243
).toString();
4344
}
4445

46+
/// Get the URL for fetching daily weather data for the next 7 days
4547
String getDailyDataUrl({
4648
required double latitude,
4749
required double longitude,
@@ -60,6 +62,7 @@ class OpenMateoUrlBuilder {
6062
).toString();
6163
}
6264

65+
/// Get the URL for fetching current weather data at a specific location
6366
String getWeatherAtLocationUrl({
6467
required double latitude,
6568
required double longitude,

test/services/open_mateo_test.dart

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,21 @@ void main() {
2020
}
2121
};
2222

23-
when(client.get(OpenMateoService.hourlyUri.toString())).thenAnswer(
23+
when(client.get(any)).thenAnswer(
2424
(_) async => dio.Response(
2525
data: data,
2626
statusCode: 200,
2727
requestOptions: dio.RequestOptions(),
2828
),
2929
);
3030

31-
final response = await service.fetchHourly();
31+
final response = await service.fetchHourly(
32+
latitude: 52.52,
33+
longitude: 13.405,
34+
timezone: 'America/New_York',
35+
);
36+
37+
// TODO: verify that the get method was called with the correct URL
3238

3339
expect(response, isA<Map<String, HourlyData>>());
3440
expect(response.length, 3);
@@ -63,15 +69,20 @@ void main() {
6369
}
6470
};
6571

66-
when(client.get(OpenMateoService.dailyUri.toString())).thenAnswer(
72+
when(client.get(any)).thenAnswer(
6773
(_) async => dio.Response(
6874
data: data,
6975
statusCode: 200,
7076
requestOptions: dio.RequestOptions(),
7177
),
7278
);
7379

74-
final response = await service.fetchDaily();
80+
final response = await service.fetchDaily(
81+
latitude: 52.52,
82+
longitude: 13.405,
83+
timezone: 'America/New_York',
84+
);
85+
7586
expect(response, isA<Map<String, DailyData>>());
7687
expect(response.length, 7);
7788

test/utils/data.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import 'package:weather/services/open_mateo/data.dart';
2+
3+
Map<String, HourlyData> getDummyHourlyData() {
4+
// Create hourly data for 24 hours
5+
Map<String, HourlyData> hourlyData = {};
6+
7+
var start = DateTime.parse('2024-10-10T00:00');
8+
9+
for (int i = 0; i < 24; i++) {
10+
var time = start.add(Duration(hours: i));
11+
var timeString = time.toIso8601String().substring(0, 16);
12+
hourlyData[timeString] = HourlyData(
13+
weather_code: (i % 12) * 10, // Just a sample pattern for weather codes
14+
time: timeString,
15+
temperature_2m: 15.0 + i, // Sample temperature increasing over the day
16+
);
17+
}
18+
19+
return hourlyData;
20+
}

test/utils/test_material_app.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class TestMaterialApp extends StatelessWidget {
2424
Widget build(BuildContext context) {
2525
return MaterialApp(
2626
debugShowCheckedModeBanner: false,
27-
theme: themeData,
27+
theme: getThemeData(Brightness.light),
2828
home: Scaffold(
2929
body: Center(
3030
child: child,

test/widgets/common/hours_row_test.dart

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,15 @@
11
import 'package:flutter_test/flutter_test.dart';
2-
import 'package:weather/services/open_mateo/data.dart';
32
import 'package:weather/widgets/common/hours_row.dart';
43

4+
import '../../utils/data.dart';
55
import '../../utils/test_material_app.dart';
66

77
void main() {
88
group('HoursRow', () {
99
testWidgets('golden test', (tester) async {
1010
await tester.setScreenSize(width: 400, height: 150);
1111

12-
var start = DateTime.parse('2024-10-10T00:00');
13-
14-
// Create hourly data for 24 hours
15-
Map<String, HourlyData> hourlyData = {};
16-
17-
for (int i = 0; i < 24; i++) {
18-
var time = start.add(Duration(hours: i));
19-
var timeString = time.toIso8601String().substring(0, 16);
20-
hourlyData[timeString] = HourlyData(
21-
weather_code:
22-
(i % 12) * 10, // Just a sample pattern for weather codes
23-
time: timeString,
24-
temperature_2m:
25-
15.0 + i, // Sample temperature increasing over the day
26-
);
27-
}
12+
final hourlyData = getDummyHourlyData();
2813

2914
await tester.pumpWidget(
3015
TestMaterialApp(

test/widgets/day/day_details_card/day_details_card_test.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:flutter_test/flutter_test.dart';
22
import 'package:weather/widgets/day/day_details_card/day_details_card.dart';
33

4+
import '../../../utils/data.dart';
45
import '../../../utils/test_material_app.dart';
56

67
void main() {
@@ -9,8 +10,11 @@ void main() {
910
await tester.setScreenSize(width: 250, height: 350);
1011

1112
await tester.pumpWidget(
12-
const TestMaterialApp(
13-
child: DayDetailsCard(),
13+
TestMaterialApp(
14+
child: DayDetailsCard(
15+
hourlyData: getDummyHourlyData(),
16+
localityName: 'New York',
17+
),
1418
),
1519
);
1620

0 commit comments

Comments
 (0)