Files
ReelShort/test/support/fake_notice_repository.dart
T

33 lines
1.0 KiB
Dart

// Author: fruit.com.cn
import 'package:fruitshorts/core/data/models/notice.dart';
import 'package:fruitshorts/core/data/repositories/notice_repository.dart';
/// Scripted notice repository for controller and widget tests.
class FakeNoticeRepository implements NoticeRepository {
FakeNoticeRepository({List<NoticePage>? pages, this.error, this.delay})
: pages = pages ?? [];
final List<NoticePage> pages;
Object? error;
Duration? delay;
final List<FakeNoticeCall> calls = [];
@override
Future<NoticePage> page({required int pageIndex, int pageSize = 20}) async {
calls.add(FakeNoticeCall(pageIndex: pageIndex, pageSize: pageSize));
if (delay != null) await Future<void>.delayed(delay!);
if (error != null) throw error!;
if (pages.isEmpty) return const NoticePage(total: 0);
return pages.removeAt(0);
}
}
/// Captured notice page request.
class FakeNoticeCall {
const FakeNoticeCall({required this.pageIndex, required this.pageSize});
final int pageIndex;
final int pageSize;
}