Unverified Commit 73208301 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[null-safety] remove mockito from text control a11y test (#62869)

parent 3aa0b48a
...@@ -13,9 +13,9 @@ import 'package:flutter/material.dart'; ...@@ -13,9 +13,9 @@ import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:mockito/mockito.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import '../flutter_test_alternative.dart' show Fake;
import '../rendering/mock_canvas.dart'; import '../rendering/mock_canvas.dart';
import 'editable_text_utils.dart'; import 'editable_text_utils.dart';
import 'semantics_tester.dart'; import 'semantics_tester.dart';
...@@ -2559,18 +2559,15 @@ void main() { ...@@ -2559,18 +2559,15 @@ void main() {
TextSelection.collapsed(offset: controller.text.length); TextSelection.collapsed(offset: controller.text.length);
controls = MockTextSelectionControls(); controls = MockTextSelectionControls();
when(controls.buildHandle(any, any, any)).thenReturn(Container());
when(controls.buildToolbar(any, any, any, any, any, any, any))
.thenReturn(Container());
}); });
testWidgets('are exposed', (WidgetTester tester) async { testWidgets('are exposed', (WidgetTester tester) async {
final SemanticsTester semantics = SemanticsTester(tester); final SemanticsTester semantics = SemanticsTester(tester);
addTearDown(semantics.dispose); addTearDown(semantics.dispose);
when(controls.canCopy(any)).thenReturn(false); controls.testCanCopy = false;
when(controls.canCut(any)).thenReturn(false); controls.testCanCut = false;
when(controls.canPaste(any)).thenReturn(false); controls.testCanPaste = false;
await _buildApp(controls, tester); await _buildApp(controls, tester);
await tester.tap(find.byType(EditableText)); await tester.tap(find.byType(EditableText));
...@@ -2588,7 +2585,7 @@ void main() { ...@@ -2588,7 +2585,7 @@ void main() {
), ),
); );
when(controls.canCopy(any)).thenReturn(true); controls.testCanCopy = true;
await _buildApp(controls, tester); await _buildApp(controls, tester);
expect( expect(
semantics, semantics,
...@@ -2603,8 +2600,8 @@ void main() { ...@@ -2603,8 +2600,8 @@ void main() {
), ),
); );
when(controls.canCopy(any)).thenReturn(false); controls.testCanCopy = false;
when(controls.canPaste(any)).thenReturn(true); controls.testCanPaste = true;
await _buildApp(controls, tester); await _buildApp(controls, tester);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect( expect(
...@@ -2620,8 +2617,8 @@ void main() { ...@@ -2620,8 +2617,8 @@ void main() {
), ),
); );
when(controls.canPaste(any)).thenReturn(false); controls.testCanPaste = false;
when(controls.canCut(any)).thenReturn(true); controls.testCanCut = true;
await _buildApp(controls, tester); await _buildApp(controls, tester);
expect( expect(
semantics, semantics,
...@@ -2636,9 +2633,9 @@ void main() { ...@@ -2636,9 +2633,9 @@ void main() {
), ),
); );
when(controls.canCopy(any)).thenReturn(true); controls.testCanCopy = true;
when(controls.canCut(any)).thenReturn(true); controls.testCanCut = true;
when(controls.canPaste(any)).thenReturn(true); controls.testCanPaste = true;
await _buildApp(controls, tester); await _buildApp(controls, tester);
expect( expect(
semantics, semantics,
...@@ -2659,9 +2656,9 @@ void main() { ...@@ -2659,9 +2656,9 @@ void main() {
testWidgets('can copy/cut/paste with a11y', (WidgetTester tester) async { testWidgets('can copy/cut/paste with a11y', (WidgetTester tester) async {
final SemanticsTester semantics = SemanticsTester(tester); final SemanticsTester semantics = SemanticsTester(tester);
when(controls.canCopy(any)).thenReturn(true); controls.testCanCopy = true;
when(controls.canCut(any)).thenReturn(true); controls.testCanCut = true;
when(controls.canPaste(any)).thenReturn(true); controls.testCanPaste = true;
await _buildApp(controls, tester); await _buildApp(controls, tester);
await tester.tap(find.byType(EditableText)); await tester.tap(find.byType(EditableText));
await tester.pump(); await tester.pump();
...@@ -2717,13 +2714,13 @@ void main() { ...@@ -2717,13 +2714,13 @@ void main() {
); );
owner.performAction(expectedNodeId, SemanticsAction.copy); owner.performAction(expectedNodeId, SemanticsAction.copy);
verify(controls.handleCopy(any, any)).called(1); expect(controls.copyCount, 1);
owner.performAction(expectedNodeId, SemanticsAction.cut); owner.performAction(expectedNodeId, SemanticsAction.cut);
verify(controls.handleCut(any)).called(1); expect(controls.cutCount, 1);
owner.performAction(expectedNodeId, SemanticsAction.paste); owner.performAction(expectedNodeId, SemanticsAction.paste);
verify(controls.handlePaste(any)).called(1); expect(controls.pasteCount, 1);
semantics.dispose(); semantics.dispose();
}); });
...@@ -5263,7 +5260,17 @@ class MockTextFormatter extends TextInputFormatter { ...@@ -5263,7 +5260,17 @@ class MockTextFormatter extends TextInputFormatter {
} }
} }
class MockTextSelectionControls extends Mock implements TextSelectionControls { class MockTextSelectionControls extends Fake implements TextSelectionControls {
@override
Widget buildToolbar(BuildContext context, Rect globalEditableRegion, double textLineHeight, Offset position, List<TextSelectionPoint> endpoints, TextSelectionDelegate delegate, ClipboardStatusNotifier clipboardStatus) {
return Container();
}
@override
Widget buildHandle(BuildContext context, TextSelectionHandleType type, double textLineHeight) {
return Container();
}
@override @override
Size getHandleSize(double textLineHeight) { Size getHandleSize(double textLineHeight) {
return Size.zero; return Size.zero;
...@@ -5273,6 +5280,44 @@ class MockTextSelectionControls extends Mock implements TextSelectionControls { ...@@ -5273,6 +5280,44 @@ class MockTextSelectionControls extends Mock implements TextSelectionControls {
Offset getHandleAnchor(TextSelectionHandleType type, double textLineHeight) { Offset getHandleAnchor(TextSelectionHandleType type, double textLineHeight) {
return Offset.zero; return Offset.zero;
} }
bool testCanCut = false;
bool testCanCopy = false;
bool testCanPaste = false;
int cutCount = 0;
int pasteCount = 0;
int copyCount = 0;
@override
void handleCopy(TextSelectionDelegate delegate, ClipboardStatusNotifier clipboardStatus) {
copyCount += 1;
}
@override
Future<void> handlePaste(TextSelectionDelegate delegate) async {
pasteCount += 1;
}
@override
void handleCut(TextSelectionDelegate delegate) {
cutCount += 1;
}
@override
bool canCut(TextSelectionDelegate delegate) {
return testCanCut;
}
@override
bool canCopy(TextSelectionDelegate delegate) {
return testCanCopy;
}
@override
bool canPaste(TextSelectionDelegate delegate) {
return testCanPaste;
}
} }
class CustomStyleEditableText extends EditableText { class CustomStyleEditableText extends EditableText {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment