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 * Showcase list of Features in Purchase Screen
* Fix: Payment slider being glitchy * Fix: Payment slider being glitchy
* Fix: MetaData Settings page crashing * Fix: MetaData Settings page crashing

View File

@ -114,9 +114,19 @@ TextEditingValue modifyCurrentLine(
// Check if already present // Check if already present
if (text.startsWith(char, lineStartPos)) { if (text.startsWith(char, lineStartPos)) {
//print('Removing `$char`'); //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( return TextEditingValue(
text: text.replaceFirst(char, '', lineStartPos), 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'; import 'package:gitjournal/widgets/markdown_toolbar.dart';
void main() { void main() {
void _testH1({ void _testLine({
@required String before, @required String before,
@required int beforeOffset, @required int beforeOffset,
@required String after, @required String after,
@required int afterOffset, @required int afterOffset,
@required String char,
}) { }) {
var val = TextEditingValue( var val = TextEditingValue(
text: before, text: before,
@ -20,8 +21,30 @@ void main() {
selection: TextSelection.collapsed(offset: afterOffset), selection: TextSelection.collapsed(offset: afterOffset),
); );
expect(modifyCurrentLine(val, '# '), expectedVal); expect(modifyCurrentLine(val, char), expectedVal);
expect(modifyCurrentLine(expectedVal, '# '), val); }
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', () { 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 test('Removes header when cursor is at the start of the line', () {
// Removes when cursor is in between '#' and ' ' _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: '# ',
);
});
} }