You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
meshcore-client/test/widgets/mention_autocomplete_enter_...

91 lines
2.4 KiB

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:meshcore_open/widgets/mention_autocomplete.dart';
void main() {
testWidgets('Enter inserts the highlighted emoji, not literal text (#231)', (
tester,
) async {
final controller = TextEditingController();
final focusNode = FocusNode();
addTearDown(() {
controller.dispose();
focusNode.dispose();
});
await tester.pumpWidget(
MaterialApp(
home: Scaffold(
body: MentionAutocompleteField(
maxBytes: 200,
controller: controller,
focusNode: focusNode,
// Ambiguous query: ':shr' matches both, so the pre-#231 code would
// have sent the literal ':shr' instead of the highlighted glyph.
emojiShortcodes: const {
'shrug': '\u{1F937}',
'shrimp': '\u{1F990}',
},
),
),
),
);
focusNode.requestFocus();
await tester.pump();
controller.value = const TextEditingValue(
text: ':shr',
selection: TextSelection.collapsed(offset: 4),
);
await tester.pump();
await tester.sendKeyEvent(LogicalKeyboardKey.enter);
await tester.pump();
expect(controller.text.contains(':shr'), isFalse);
expect(
controller.text.contains('\u{1F937}') ||
controller.text.contains('\u{1F990}'),
isTrue,
);
});
testWidgets('Enter inserts the highlighted mention (#231)', (tester) async {
final controller = TextEditingController();
final focusNode = FocusNode();
addTearDown(() {
controller.dispose();
focusNode.dispose();
});
await tester.pumpWidget(
MaterialApp(
home: Scaffold(
body: MentionAutocompleteField(
maxBytes: 200,
controller: controller,
focusNode: focusNode,
candidates: const [MentionCandidate(name: 'Bob', recent: false)],
),
),
),
);
focusNode.requestFocus();
await tester.pump();
controller.value = const TextEditingValue(
text: '@Bo',
selection: TextSelection.collapsed(offset: 3),
);
await tester.pump();
await tester.sendKeyEvent(LogicalKeyboardKey.enter);
await tester.pump();
expect(controller.text, contains('@[Bob]'));
});
}

Powered by TurnKey Linux.