为什么:上一批归档只覆盖了「已跟踪文件的修改」,原型阶段新增的文件(app_config、theme、 home_feed/play_ticket 模型、catalog_api、测试目录等)还是未入库状态 —— 而已入库的代码会 import 它们, 留在工作区会导致 HEAD 处的代码编译不过。一并归档,让 HEAD 自洽。 纯归档,无行为改动。
45 lines
1.2 KiB
Dart
45 lines
1.2 KiB
Dart
import 'package:nontonki/core/data/repositories/watch_history_repository.dart';
|
|
|
|
/// Records every history interaction so tests can assert on the key it used.
|
|
class FakeWatchHistory implements WatchHistoryRepository {
|
|
final List<String> reads = [];
|
|
final List<String> writes = [];
|
|
|
|
/// Position returned by [positionFor] when [failReads] is false.
|
|
Duration? saved;
|
|
|
|
/// Last episode returned by [lastEpisodeId].
|
|
String? lastEpisode;
|
|
|
|
bool failReads = false;
|
|
bool failWrites = false;
|
|
|
|
@override
|
|
Future<Duration?> positionFor(
|
|
String profileId,
|
|
String dramaId,
|
|
String episodeId,
|
|
) async {
|
|
reads.add('$profileId|$dramaId|$episodeId');
|
|
if (failReads) throw StateError('history unavailable');
|
|
return saved;
|
|
}
|
|
|
|
@override
|
|
Future<String?> lastEpisodeId(String profileId, String dramaId) async {
|
|
if (failReads) throw StateError('history unavailable');
|
|
return lastEpisode;
|
|
}
|
|
|
|
@override
|
|
Future<void> save(
|
|
String profileId,
|
|
String dramaId,
|
|
String episodeId,
|
|
Duration position,
|
|
) async {
|
|
if (failWrites) throw StateError('history unavailable');
|
|
writes.add('$profileId|$dramaId|$episodeId|${position.inMilliseconds}');
|
|
}
|
|
}
|