Skip to content

Commit 79f4377

Browse files
authored
[camera_web] Remove mocktail dependency. (#9195)
Closes flutter/flutter#130757 ## Description - Removes `mocktail` dependency - Adds `mockito` and `build_runner` dependencies - Updates tests ## Pre-Review Checklist [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
1 parent 325f0fc commit 79f4377

File tree

9 files changed

+931
-249
lines changed

9 files changed

+931
-249
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
targets:
2+
$default:
3+
sources:
4+
- integration_test/**
5+
- lib/$lib$
6+
- $package$
7+
builders:
8+
mockito|mockBuilder:
9+
generate_for:
10+
- integration_test/**

packages/camera/camera_web/example/integration_test/camera_bitrate_test.dart

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import 'package:camera_web/src/camera.dart';
1212
import 'package:camera_web/src/types/types.dart';
1313
import 'package:flutter_test/flutter_test.dart';
1414
import 'package:integration_test/integration_test.dart';
15-
import 'package:mocktail/mocktail.dart';
15+
import 'package:mockito/mockito.dart';
1616
import 'package:web/web.dart';
1717

1818
import 'helpers/helpers.dart';
@@ -45,10 +45,6 @@ void main() {
4545
}
4646
}
4747

48-
setUpAll(() {
49-
registerFallbackValue(MockCameraOptions());
50-
});
51-
5248
testWidgets('Camera allows to control video bitrate',
5349
(WidgetTester tester) async {
5450
//const String supportedVideoType = 'video/webm';
@@ -97,14 +93,11 @@ void main() {
9793
final int cameraId = videoBitrate;
9894

9995
when(
100-
() {
101-
return cameraService.getMediaStreamForOptions(
102-
options,
103-
cameraId: cameraId,
104-
);
105-
},
106-
).thenAnswer(
107-
(_) => Future<MediaStream>.value(canvasElement.captureStream()));
96+
cameraService.getMediaStreamForOptions(
97+
options,
98+
cameraId: cameraId,
99+
),
100+
).thenAnswer((_) async => canvasElement.captureStream());
108101

109102
final Camera camera = Camera(
110103
textureId: cameraId,

packages/camera/camera_web/example/integration_test/camera_service_test.dart

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,12 @@ import 'dart:js_interop_unsafe';
99

1010
import 'package:camera_platform_interface/camera_platform_interface.dart';
1111
// ignore_for_file: implementation_imports
12-
import 'package:camera_web/src/camera.dart';
1312
import 'package:camera_web/src/camera_service.dart';
14-
import 'package:camera_web/src/shims/dart_js_util.dart';
1513
import 'package:camera_web/src/types/types.dart';
1614
import 'package:flutter/services.dart';
1715
import 'package:flutter_test/flutter_test.dart';
1816
import 'package:integration_test/integration_test.dart';
19-
import 'package:mocktail/mocktail.dart';
17+
import 'package:mockito/mockito.dart';
2018
import 'package:web/web.dart' as web;
2119

2220
import 'helpers/helpers.dart';
@@ -35,7 +33,7 @@ void main() {
3533
late web.Navigator navigator;
3634
late web.MediaDevices mediaDevices;
3735

38-
late JsUtil jsUtil;
36+
late MockJsUtil jsUtil;
3937

4038
late CameraService cameraService;
4139

@@ -54,10 +52,8 @@ void main() {
5452

5553
jsUtil = MockJsUtil();
5654

57-
registerFallbackValue(createJSInteropWrapper(MockWindow()));
58-
5955
// Mock JsUtil to return the real getProperty from dart:js_util.
60-
when<dynamic>(() => jsUtil.getProperty(any(), any())).thenAnswer(
56+
when(jsUtil.getProperty(any, any)).thenAnswer(
6157
(Invocation invocation) =>
6258
(invocation.positionalArguments[0] as JSObject)
6359
.getProperty(invocation.positionalArguments[1] as JSAny),
@@ -427,7 +423,7 @@ void main() {
427423
});
428424

429425
group('getZoomLevelCapabilityForCamera', () {
430-
late Camera camera;
426+
late MockCamera camera;
431427
late MockMediaStreamTrack mockVideoTrack;
432428
late List<web.MediaStreamTrack> videoTracks;
433429

@@ -440,8 +436,8 @@ void main() {
440436
as web.MediaStreamTrack,
441437
];
442438

443-
when(() => camera.textureId).thenReturn(0);
444-
when(() => camera.stream).thenReturn(
439+
when(camera.textureId).thenReturn(0);
440+
when(camera.stream).thenReturn(
445441
createJSInteropWrapper(FakeMediaStream(videoTracks))
446442
as web.MediaStream,
447443
);
@@ -512,7 +508,7 @@ void main() {
512508
}.toJS;
513509

514510
// Create a camera stream with no video tracks.
515-
when(() => camera.stream).thenReturn(
511+
when(camera.stream).thenReturn(
516512
createJSInteropWrapper(FakeMediaStream(<web.MediaStreamTrack>[]))
517513
as web.MediaStream,
518514
);
@@ -566,7 +562,7 @@ void main() {
566562
videoTrack =
567563
createJSInteropWrapper(mockVideoTrack) as web.MediaStreamTrack;
568564

569-
when(() => jsUtil.hasProperty(videoTrack, 'getCapabilities'.toJS))
565+
when(jsUtil.hasProperty(videoTrack, 'getCapabilities'.toJS))
570566
.thenReturn(true);
571567

572568
mockMediaDevices.getSupportedConstraints = () {
@@ -601,7 +597,7 @@ void main() {
601597
);
602598
}.toJS;
603599

604-
when(() => jsUtil.hasProperty(videoTrack, 'getCapabilities'.toJS))
600+
when(jsUtil.hasProperty(videoTrack, 'getCapabilities'.toJS))
605601
.thenReturn(true);
606602

607603
final String? facingMode =
@@ -636,7 +632,7 @@ void main() {
636632
return web.MediaTrackSettings(facingMode: '');
637633
}.toJS;
638634

639-
when(() => jsUtil.hasProperty(videoTrack, 'getCapabilities'.toJS))
635+
when(jsUtil.hasProperty(videoTrack, 'getCapabilities'.toJS))
640636
.thenReturn(false);
641637

642638
final String? facingMode =

packages/camera/camera_web/example/integration_test/camera_test.dart

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ import 'package:async/async.dart';
1111
import 'package:camera_platform_interface/camera_platform_interface.dart';
1212
// ignore_for_file: implementation_imports
1313
import 'package:camera_web/src/camera.dart';
14-
import 'package:camera_web/src/camera_service.dart';
1514
import 'package:camera_web/src/types/types.dart';
1615
import 'package:flutter_test/flutter_test.dart';
1716
import 'package:integration_test/integration_test.dart';
18-
import 'package:mocktail/mocktail.dart';
17+
import 'package:mockito/mockito.dart';
1918
import 'package:web/web.dart';
2019

2120
import 'helpers/helpers.dart';
@@ -35,7 +34,7 @@ void main() {
3534
late MediaDevices mediaDevices;
3635

3736
late MediaStream mediaStream;
38-
late CameraService cameraService;
37+
late MockCameraService cameraService;
3938

4039
setUp(() {
4140
mockWindow = MockWindow();
@@ -56,17 +55,13 @@ void main() {
5655
mediaStream = videoElement.captureStream();
5756

5857
when(
59-
() => cameraService.getMediaStreamForOptions(
60-
any(),
61-
cameraId: any(named: 'cameraId'),
58+
cameraService.getMediaStreamForOptions(
59+
any,
60+
cameraId: anyNamed('cameraId'),
6261
),
6362
).thenAnswer((_) => Future<MediaStream>.value(mediaStream));
6463
});
6564

66-
setUpAll(() {
67-
registerFallbackValue(MockCameraOptions());
68-
});
69-
7065
group('initialize', () {
7166
testWidgets(
7267
'calls CameraService.getMediaStreamForOptions '
@@ -87,7 +82,7 @@ void main() {
8782
await camera.initialize();
8883

8984
verify(
90-
() => cameraService.getMediaStreamForOptions(
85+
cameraService.getMediaStreamForOptions(
9186
options,
9287
cameraId: textureId,
9388
),
@@ -189,8 +184,12 @@ void main() {
189184
final Exception exception =
190185
Exception('A media stream exception occured.');
191186

192-
when(() => cameraService.getMediaStreamForOptions(any(),
193-
cameraId: any(named: 'cameraId'))).thenThrow(exception);
187+
when(
188+
cameraService.getMediaStreamForOptions(
189+
any,
190+
cameraId: anyNamed('cameraId'),
191+
),
192+
).thenThrow(exception);
194193

195194
final Camera camera = Camera(
196195
textureId: textureId,
@@ -253,7 +252,7 @@ void main() {
253252

254253
// Should be called twice: for initialize and play.
255254
verify(
256-
() => cameraService.getMediaStreamForOptions(
255+
cameraService.getMediaStreamForOptions(
257256
options,
258257
cameraId: textureId,
259258
),
@@ -697,12 +696,12 @@ void main() {
697696
as MediaStreamTrack,
698697
);
699698

700-
when(() => cameraService.getZoomLevelCapabilityForCamera(camera))
699+
when(cameraService.getZoomLevelCapabilityForCamera(camera))
701700
.thenReturn(zoomLevelCapability);
702701

703702
final double maximumZoomLevel = camera.getMaxZoomLevel();
704703

705-
verify(() => cameraService.getZoomLevelCapabilityForCamera(camera))
704+
verify(cameraService.getZoomLevelCapabilityForCamera(camera))
706705
.called(1);
707706

708707
expect(
@@ -729,12 +728,12 @@ void main() {
729728
as MediaStreamTrack,
730729
);
731730

732-
when(() => cameraService.getZoomLevelCapabilityForCamera(camera))
731+
when(cameraService.getZoomLevelCapabilityForCamera(camera))
733732
.thenReturn(zoomLevelCapability);
734733

735734
final double minimumZoomLevel = camera.getMinZoomLevel();
736735

737-
verify(() => cameraService.getZoomLevelCapabilityForCamera(camera))
736+
verify(cameraService.getZoomLevelCapabilityForCamera(camera))
738737
.called(1);
739738

740739
expect(
@@ -775,7 +774,7 @@ void main() {
775774
return Future<JSAny?>.value().toJS;
776775
}.toJS;
777776

778-
when(() => cameraService.getZoomLevelCapabilityForCamera(camera))
777+
when(cameraService.getZoomLevelCapabilityForCamera(camera))
779778
.thenReturn(zoomLevelCapability);
780779

781780
const double zoom = 75.0;
@@ -803,7 +802,7 @@ void main() {
803802
as MediaStreamTrack,
804803
);
805804

806-
when(() => cameraService.getZoomLevelCapabilityForCamera(camera))
805+
when(cameraService.getZoomLevelCapabilityForCamera(camera))
807806
.thenReturn(zoomLevelCapability);
808807

809808
expect(
@@ -839,7 +838,7 @@ void main() {
839838
as MediaStreamTrack,
840839
);
841840

842-
when(() => cameraService.getZoomLevelCapabilityForCamera(camera))
841+
when(cameraService.getZoomLevelCapabilityForCamera(camera))
843842
.thenReturn(zoomLevelCapability);
844843

845844
expect(
@@ -893,7 +892,7 @@ void main() {
893892
return MediaTrackSettings(facingMode: 'environment');
894893
}.toJS;
895894

896-
when(() => cameraService.mapFacingModeToLensDirection('environment'))
895+
when(cameraService.mapFacingModeToLensDirection('environment'))
897896
.thenReturn(CameraLensDirection.external);
898897

899898
expect(
@@ -1439,7 +1438,7 @@ void main() {
14391438
..isVideoTypeSupported = isVideoTypeSupported
14401439
..mediaRecorderOnErrorProvider = provider;
14411440

1442-
when(() => provider.forTarget(mediaRecorder))
1441+
when(provider.forTarget(mediaRecorder))
14431442
.thenAnswer((_) => onErrorStreamController.stream);
14441443

14451444
await camera.initialize();
@@ -1681,7 +1680,7 @@ void main() {
16811680
..mediaRecorder = mediaRecorder
16821681
..mediaRecorderOnErrorProvider = provider;
16831682

1684-
when(() => provider.forTarget(mediaRecorder))
1683+
when(provider.forTarget(mediaRecorder))
16851684
.thenAnswer((_) => errorController.stream);
16861685

16871686
final StreamQueue<ErrorEvent> streamQueue =

0 commit comments

Comments
 (0)