Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 8ba7d13

Browse files
committed
upgrade all tests
1 parent 672cebb commit 8ba7d13

File tree

18 files changed

+326
-224
lines changed

18 files changed

+326
-224
lines changed

‎integration_test/app_test.dart

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_test/flutter_test.dart';
3+
import 'package:integration_test/integration_test.dart';
4+
import 'main.dart' as app;
5+
6+
void main() {
7+
group('Testing App Performance Tests', () {
8+
final binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized() as IntegrationTestWidgetsFlutterBinding;
9+
10+
binding.framePolicy = LiveTestWidgetsFlutterBindingFramePolicy.fullyLive;
11+
12+
testWidgets('starts with topRated', (tester) async {
13+
app.main();
14+
await tester.pumpAndSettle();
15+
16+
// Movie 1
17+
final titleTextFinder1 = find.byKey(Key('1-title'));
18+
final overviewTextFinder1 = find.byKey(Key('1-overview'));
19+
final releaseTextFinder1 = find.byKey(Key('1-releaseDate'));
20+
// checking widget present or not
21+
expect(titleTextFinder1, findsOneWidget);
22+
expect(overviewTextFinder1, findsOneWidget);
23+
expect(releaseTextFinder1, findsOneWidget);
24+
25+
// checking values
26+
expect((titleTextFinder1.evaluate().single.widget as Text).data, 'Fight Club');
27+
expect((overviewTextFinder1.evaluate().single.widget as Text).data, 'Overview 1');
28+
expect((releaseTextFinder1.evaluate().single.widget as Text).data, '1999年10月12日');
29+
30+
// Movie 2
31+
final titleTextFinder2 = find.byKey(Key('2-title'));
32+
final overviewTextFinder2 = find.byKey(Key('2-overview'));
33+
final releaseTextFinder2 = find.byKey(Key('2-releaseDate'));
34+
// checking widget present or not
35+
expect(titleTextFinder2, findsOneWidget);
36+
expect(overviewTextFinder2, findsOneWidget);
37+
expect(releaseTextFinder2, findsOneWidget);
38+
39+
// checking values
40+
expect((titleTextFinder2.evaluate().single.widget as Text).data, 'Fight Club 2');
41+
expect((overviewTextFinder2.evaluate().single.widget as Text).data, 'Overview 2');
42+
expect((releaseTextFinder2.evaluate().single.widget as Text).data, '1999年10月20日');
43+
});
44+
});
45+
}

‎integration_test/driver.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import 'package:integration_test/integration_test_driver.dart';
2+
3+
Future<void> main() => integrationDriver();
Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'dart:convert';
22

33
import 'package:flutter/material.dart';
4-
import 'package:flutter_driver/driver_extension.dart';
54
import 'package:flutter_movie_deep_dive_test/src/app.dart';
65
import 'package:flutter_movie_deep_dive_test/src/providers/providers.dart';
76
import 'package:http/http.dart';
@@ -10,17 +9,12 @@ import 'package:http/testing.dart';
109
import '../test/src/common.dart';
1110

1211
void main() {
13-
// This line enables the extension.
14-
enableFlutterDriverExtension();
15-
1612
final mockClient = MockClient((request) async {
1713
return Response(json.encode(exampleJsonResponse2), 200);
1814
});
1915

20-
// Call the `main()` function of the app, or call `runApp` with
21-
// any widget you are interested in testing.
22-
runApp(AppProvider(
16+
return runApp(AppProvider(
2317
httpClient: mockClient,
2418
child: MyApp(),
2519
));
26-
}
20+
}

‎lib/src/blocs/app_bloc.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class AppBloc extends Bloc<AppEvent, AppState> {
1313

1414
@override
1515
Stream<AppState> mapEventToState(AppEvent event) async* {
16+
yield initWithState;
1617
//
1718
// FETCH
1819
//

‎lib/src/models/movies.dart

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@ class MoviesResponse extends Equatable {
2323
required this.movies,
2424
});
2525

26-
factory MoviesResponse.fromJson(Map<String, dynamic> json) =>
27-
_$MoviesResponseFromJson(json);
26+
factory MoviesResponse.fromJson(Map<String, dynamic> json) => _$MoviesResponseFromJson(json);
2827

2928
@override
30-
List<Object> get props => [
29+
List<dynamic> get props => [
3130
this.page,
3231
this.totalPages,
3332
this.totalResults,
@@ -37,66 +36,66 @@ class MoviesResponse extends Equatable {
3736

3837
@JsonSerializable()
3938
class Movie extends Equatable {
40-
final int id;
39+
final int? id;
4140

42-
final bool video;
41+
final bool? video;
4342

4443
@JsonKey(name: 'vote_count')
45-
final int voteCount;
44+
final int? voteCount;
4645

4746
@JsonKey(name: 'vote_average')
48-
final double voteAverage;
47+
final double? voteAverage;
4948

50-
final String title;
49+
final String? title;
5150

5251
@JsonKey(name: 'poster_path')
53-
final String posterPath;
52+
final String? posterPath;
5453

5554
@JsonKey(name: 'original_language')
56-
final String originalLanguage;
55+
final String? originalLanguage;
5756

5857
@JsonKey(name: 'original_title')
59-
final String originalTitle;
58+
final String? originalTitle;
6059

61-
final bool adult;
60+
final bool? adult;
6261

63-
final String overview;
62+
final String? overview;
6463

6564
@JsonKey(name: 'gender_ids')
66-
final List genreIds = [];
65+
final List? genreIds = [];
6766

6867
@JsonKey(name: 'backdrop_path')
69-
final String backdropPath;
68+
final String? backdropPath;
7069

71-
final double popularity;
70+
final double? popularity;
7271

7372
@JsonKey(name: 'release_date')
74-
final String releaseDate;
73+
final String? releaseDate;
7574

7675
@JsonKey(defaultValue: false)
77-
final bool favorite;
76+
final bool? favorite;
7877

7978
Movie({
80-
requiredthis.id,
81-
requiredthis.video,
82-
requiredthis.voteCount,
83-
requiredthis.voteAverage,
84-
requiredthis.title,
85-
requiredthis.posterPath,
86-
requiredthis.originalLanguage,
87-
requiredthis.originalTitle,
88-
requiredthis.adult,
89-
requiredthis.overview,
90-
requiredthis.backdropPath,
91-
requiredthis.popularity,
92-
requiredthis.releaseDate,
93-
requiredthis.favorite,
79+
this.id,
80+
this.video,
81+
this.voteCount,
82+
this.voteAverage,
83+
this.title,
84+
this.posterPath,
85+
this.originalLanguage,
86+
this.originalTitle,
87+
this.adult,
88+
this.overview,
89+
this.backdropPath,
90+
this.popularity,
91+
this.releaseDate,
92+
this.favorite,
9493
});
9594

9695
factory Movie.fromJson(Map<String, dynamic> json) => _$MovieFromJson(json);
9796

9897
@override
99-
List<Object> get props => [
98+
List<dynamic> get props => [
10099
this.id,
101100
this.video,
102101
this.voteCount,
@@ -113,7 +112,6 @@ class Movie extends Equatable {
113112
this.favorite,
114113
];
115114

116-
String get posterPathResolved => posterPath == null
117-
? 'https://via.placeholder.com/300'
118-
: 'http://image.tmdb.org/t/p/w185/$posterPath';
115+
String get posterPathResolved =>
116+
posterPath == null ? 'https://via.placeholder.com/300' : 'http://image.tmdb.org/t/p/w185/$posterPath';
119117
}

‎lib/src/models/movies.g.dart

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎lib/src/widgets/movie_card.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@ class MovieCard extends StatelessWidget {
2727
Padding(
2828
padding: const EdgeInsets.all(8.0),
2929
child: Text(
30-
data.title,
31-
key: Key("${data.id}-title"),
30+
data.title??"",
31+
key: Key('${data.id}-title'),
3232
textAlign: TextAlign.left,
3333
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18),
3434
),
3535
),
3636
Text(
37-
data.overview,
37+
data.overview??"",
3838
key: Key("${data.id}-overview"),
3939
style: TextStyle(color: Colors.black54),
4040
),
@@ -48,7 +48,7 @@ class MovieCard extends StatelessWidget {
4848
child: Padding(
4949
padding: const EdgeInsets.only(left: 8),
5050
child: Text(
51-
data.releaseDate,
51+
data.releaseDate??"",
5252
key: Key("${data.id}-releaseDate"),
5353
),
5454
),

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /