69 lines
2.0 KiB
Dart
69 lines
2.0 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:smplayer/core/contracts/playback.dart';
|
|
import 'package:smplayer/core/domain/ports/emby_gateway.dart';
|
|
import 'package:smplayer/features/player/services/emby_playback_reporter.dart';
|
|
|
|
class _CountingEmbyGateway implements EmbyGateway {
|
|
int startedCount = 0;
|
|
int progressCount = 0;
|
|
int stoppedCount = 0;
|
|
|
|
@override
|
|
Future<void> reportPlaybackProgress({
|
|
required AuthedRequestContext ctx,
|
|
required PlaybackReportPayload payload,
|
|
}) async {
|
|
progressCount++;
|
|
}
|
|
|
|
@override
|
|
Future<void> reportPlaybackStarted({
|
|
required AuthedRequestContext ctx,
|
|
required PlaybackReportPayload payload,
|
|
}) async {
|
|
startedCount++;
|
|
}
|
|
|
|
@override
|
|
Future<void> reportPlaybackStopped({
|
|
required AuthedRequestContext ctx,
|
|
required PlaybackReportPayload payload,
|
|
}) async {
|
|
stoppedCount++;
|
|
}
|
|
|
|
@override
|
|
dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
|
|
}
|
|
|
|
void main() {
|
|
test('禁用的上报器不会向 Emby 发送任何播放事件', () async {
|
|
final gateway = _CountingEmbyGateway();
|
|
final reporter = EmbyPlaybackReporter(
|
|
gateway: gateway,
|
|
context: const AuthedRequestContext(baseUrl: '', token: '', userId: ''),
|
|
enabled: false,
|
|
);
|
|
addTearDown(reporter.dispose);
|
|
const payload = PlaybackReportPayload(itemId: 'direct', positionTicks: 0);
|
|
|
|
await reporter.reportStarted(payload);
|
|
await reporter.reportProgress(payload);
|
|
await reporter.reportStopped(payload);
|
|
reporter.startProgressTimer(
|
|
({required bool isPaused, String? eventName}) => PlaybackReportPayload(
|
|
itemId: 'direct',
|
|
positionTicks: 0,
|
|
isPaused: isPaused,
|
|
eventName: eventName,
|
|
),
|
|
);
|
|
|
|
expect(gateway.startedCount, 0);
|
|
expect(gateway.progressCount, 0);
|
|
expect(gateway.stoppedCount, 0);
|
|
expect(reporter.startedReported, isFalse);
|
|
expect(reporter.stoppedReported, isFalse);
|
|
});
|
|
}
|