MarkdownToolBar: Test h1 removal

And fix cursor position after removing of the header
This commit is contained in:
Vishesh Handa
2020-08-13 01:14:06 +02:00
parent 8668b88a95
commit c38f823ae3
3 changed files with 57 additions and 7 deletions

View File

@ -1,4 +1,4 @@
## [1.63] - 2020-08-12
## [1.64] - 2020-08-12
* Showcase list of Features in Purchase Screen
* Fix: Payment slider being glitchy
* Fix: MetaData Settings page crashing

View File

@ -114,9 +114,19 @@ TextEditingValue modifyCurrentLine(
// Check if already present
if (text.startsWith(char, lineStartPos)) {
//print('Removing `$char`');
var endOffset = cursorPos;
//print("End Offset: $endOffset");
if (endOffset > lineStartPos) {
endOffset -= char.length;
//print("End Offset min char: $endOffset");
}
if (endOffset < lineStartPos) {
endOffset = lineStartPos;
//print("End Offset equal LineStartPos: $endOffset");
}
return TextEditingValue(
text: text.replaceFirst(char, '', lineStartPos),
selection: TextSelection.collapsed(offset: cursorPos - char.length),
selection: TextSelection.collapsed(offset: endOffset),
);
}

View File

@ -4,11 +4,12 @@ import 'package:test/test.dart';
import 'package:gitjournal/widgets/markdown_toolbar.dart';
void main() {
void _testH1({
void _testLine({
@required String before,
@required int beforeOffset,
@required String after,
@required int afterOffset,
@required String char,
}) {
var val = TextEditingValue(
text: before,
@ -20,8 +21,30 @@ void main() {
selection: TextSelection.collapsed(offset: afterOffset),
);
expect(modifyCurrentLine(val, '# '), expectedVal);
expect(modifyCurrentLine(expectedVal, '# '), val);
expect(modifyCurrentLine(val, char), expectedVal);
}
void _testH1({
@required String before,
@required int beforeOffset,
@required String after,
@required int afterOffset,
}) {
_testLine(
before: before,
beforeOffset: beforeOffset,
after: after,
afterOffset: afterOffset,
char: '# ',
);
_testLine(
before: after,
beforeOffset: afterOffset,
after: before,
afterOffset: beforeOffset,
char: '# ',
);
}
test('Adds a header to the first line correctly', () {
@ -60,6 +83,23 @@ void main() {
);
});
// Removes when cursor is at the start of the line
// Removes when cursor is in between '#' and ' '
test('Removes header when cursor is at the start of the line', () {
_testLine(
before: 'Hi\n# Hello Darkness\nFire',
beforeOffset: 3,
after: 'Hi\nHello Darkness\nFire',
afterOffset: 3,
char: '# ',
);
});
test("Removes header when cursor is in between '#' and ' '", () {
_testLine(
before: 'Hi\n# Hello Darkness\nFire',
beforeOffset: 4,
after: 'Hi\nHello Darkness\nFire',
afterOffset: 3,
char: '# ',
);
});
}