Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/src/view/broadcast/broadcast_list_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ class _BodyState extends ConsumerState<_Body> {
slivers: [
for (final section in sections)
SliverMainAxisGroup(
key: ValueKey(section),
key: ValueKey(section.$1),
slivers: [
if (section.$3.isNotEmpty)
if (Theme.of(context).platform == TargetPlatform.iOS)
Expand Down
16 changes: 4 additions & 12 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1054,14 +1054,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.0"
mockito:
dependency: transitive
description:
name: mockito
sha256: f99d8d072e249f719a5531735d146d8cf04c580d93920b04de75bef6dfb2daf6
url: "https://pub.dev"
source: hosted
version: "5.4.5"
mocktail:
dependency: "direct dev"
description:
Expand All @@ -1070,14 +1062,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.4"
network_image_mock:
mocktail_image_network:
dependency: "direct dev"
description:
name: network_image_mock
sha256: "855cdd01d42440e0cffee0d6c2370909fc31b3bcba308a59829f24f64be42db7"
name: mocktail_image_network
sha256: a1fccbba780343517cfc552e0af2b3834d8bdb8f9f55a746c4d495ed1a8d50d6
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "1.2.0"
nm:
dependency: transitive
description:
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ dev_dependencies:
json_serializable: ^6.5.4
lint: ^2.0.1
mocktail: ^1.0.0
network_image_mock: ^2.1.1
mocktail_image_network: ^1.2.0
riverpod_generator: ^2.1.0
riverpod_lint: ^2.3.3
sqflite_common_ffi: ^2.2.3
Expand Down
81 changes: 38 additions & 43 deletions test/view/broadcast/broadcast_list_screen_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import 'package:lichess_mobile/src/model/broadcast/broadcast_providers.dart';
import 'package:lichess_mobile/src/network/http.dart';
import 'package:lichess_mobile/src/utils/image.dart';
import 'package:lichess_mobile/src/view/broadcast/broadcast_list_screen.dart';
import 'package:network_image_mock/network_image_mock.dart';

import '../../test_helpers.dart';
import '../../test_provider_scope.dart';
Expand Down Expand Up @@ -46,51 +45,47 @@ final client = MockClient((request) {
void main() {
group('BroadcastListScreen', () {
testWidgets('Displays broadcast tournament screen', variant: kPlatformVariant, (tester) async {
mockNetworkImagesFor(() async {
final app = await makeTestProviderScopeApp(
tester,
home: const BroadcastListScreen(),
overrides: [
lichessClientProvider.overrideWith((ref) => LichessClient(client, ref)),
broadcastImageWorkerFactoryProvider.overrideWith(
(ref) => FakeBroadcastImageWorkerFactory(),
),
],
);

await tester.pumpWidget(app);

expect(find.byType(CircularProgressIndicator), findsOneWidget);

// wait for broadcast tournaments to load
await tester.pump(const Duration(milliseconds: 100));

expect(find.byType(BroadcastListTile), findsAtLeast(1));
});
final app = await makeTestProviderScopeApp(
tester,
home: const BroadcastListScreen(),
overrides: [
lichessClientProvider.overrideWith((ref) => LichessClient(client, ref)),
broadcastImageWorkerFactoryProvider.overrideWith(
(ref) => FakeBroadcastImageWorkerFactory(),
),
],
);

await tester.pumpWidget(app);

expect(find.byType(CircularProgressIndicator), findsOneWidget);

// Load the broadcast tournaments
await tester.pump();

expect(find.byType(BroadcastListTile), findsAtLeast(1));
});

testWidgets('Scroll broadcast tournament screen', variant: kPlatformVariant, (tester) async {
mockNetworkImagesFor(() async {
final app = await makeTestProviderScopeApp(
tester,
home: const BroadcastListScreen(),
overrides: [
lichessClientProvider.overrideWith((ref) => LichessClient(client, ref)),
broadcastImageWorkerFactoryProvider.overrideWith(
(ref) => FakeBroadcastImageWorkerFactory(),
),
],
);

await tester.pumpWidget(app);

expect(find.byType(CircularProgressIndicator), findsOneWidget);

// wait for broadcast tournaments to load
await tester.pump(const Duration(milliseconds: 100));

await tester.scrollUntilVisible(find.text('Past broadcasts'), 100.0);
});
final app = await makeTestProviderScopeApp(
tester,
home: const BroadcastListScreen(),
overrides: [
lichessClientProvider.overrideWith((ref) => LichessClient(client, ref)),
broadcastImageWorkerFactoryProvider.overrideWith(
(ref) => FakeBroadcastImageWorkerFactory(),
),
],
);

await tester.pumpWidget(app);

expect(find.byType(CircularProgressIndicator), findsOneWidget);

// Load the broadcast tournaments
await tester.pump();

await tester.scrollUntilVisible(find.byKey(const ValueKey('past')), 100.0);
});
});
}
Expand Down
96 changes: 47 additions & 49 deletions test/view/broadcast/broadcast_round_screen_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import 'package:lichess_mobile/src/model/common/id.dart';
import 'package:lichess_mobile/src/network/http.dart';
import 'package:lichess_mobile/src/view/broadcast/broadcast_round_screen.dart';
import 'package:lichess_mobile/src/widgets/board_thumbnail.dart';
import 'package:network_image_mock/network_image_mock.dart';
import 'package:mocktail_image_network/mocktail_image_network.dart';

import '../../test_helpers.dart';
import '../../test_provider_scope.dart';
Expand Down Expand Up @@ -119,55 +119,53 @@ void main() {
testWidgets('Test overview tab with an upcoming tournament', variant: kPlatformVariant, (
tester,
) async {
mockNetworkImagesFor(() async {
final client = MockClient((request) {
if (request.url.path == '/api/broadcast/KnP1dgul') {
return mockResponse(
_upcomingTournamentResponse,
200,
headers: {'content-type': 'application/json; charset=utf-8'},
);
}
if (request.url.path == '/api/broadcast/-/-/UN587WBI') {
return mockResponse(
_upcomingRoundResponse,
200,
headers: {'content-type': 'application/json; charset=utf-8'},
);
}
return mockResponse('', 404);
});

final app = await makeTestProviderScopeApp(
tester,
home: BroadcastRoundScreen(broadcast: _upcomingBroadcast),
overrides: [lichessClientProvider.overrideWith((ref) => LichessClient(client, ref))],
);

await tester.pumpWidget(app);

expect(find.byType(CircularProgressIndicator), findsOneWidget);

// Load the tournament
await tester.pump();

expect(find.byType(CircularProgressIndicator), findsOneWidget);

// Load the overview
await tester.pump();

final startsAt = DateTime.fromMillisecondsSinceEpoch(1736526600000);
final endsAt = DateTime.fromMillisecondsSinceEpoch(1737189000000);
final f = DateFormat.MMMd();

expect(find.text('${f.format(startsAt)} - ${f.format(endsAt)}'), findsOneWidget);
expect(find.text('9-round Swiss'), findsOneWidget);
expect(find.text('90 min + 30 sec / move'), findsOneWidget);
expect(find.text('Seville, Spain'), findsOneWidget);
expect(find.text('Xu, Bonelli, Jacobson'), findsOneWidget);
expect(find.text('Official website'), findsOneWidget);
expect(find.text('Standings'), findsOneWidget);
final client = MockClient((request) {
if (request.url.path == '/api/broadcast/KnP1dgul') {
return mockResponse(
_upcomingTournamentResponse,
200,
headers: {'content-type': 'application/json; charset=utf-8'},
);
}
if (request.url.path == '/api/broadcast/-/-/UN587WBI') {
return mockResponse(
_upcomingRoundResponse,
200,
headers: {'content-type': 'application/json; charset=utf-8'},
);
}
return mockResponse('', 404);
});

final app = await makeTestProviderScopeApp(
tester,
home: BroadcastRoundScreen(broadcast: _upcomingBroadcast),
overrides: [lichessClientProvider.overrideWith((ref) => LichessClient(client, ref))],
);

await tester.pumpWidget(app);

expect(find.byType(CircularProgressIndicator), findsOneWidget);

// Load the tournament
await tester.pump();

expect(find.byType(CircularProgressIndicator), findsOneWidget);

// Load the overview
await mockNetworkImages(() => tester.pump());

final startsAt = DateTime.fromMillisecondsSinceEpoch(1736526600000);
final endsAt = DateTime.fromMillisecondsSinceEpoch(1737189000000);
final f = DateFormat.MMMd();

expect(find.text('${f.format(startsAt)} - ${f.format(endsAt)}'), findsOneWidget);
expect(find.text('9-round Swiss'), findsOneWidget);
expect(find.text('90 min + 30 sec / move'), findsOneWidget);
expect(find.text('Seville, Spain'), findsOneWidget);
expect(find.text('Xu, Bonelli, Jacobson'), findsOneWidget);
expect(find.text('Official website'), findsOneWidget);
expect(find.text('Standings'), findsOneWidget);
});

testWidgets('Test clocks are ticking with a live round', variant: kPlatformVariant, (
Expand Down