mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 18:38:36 +08:00
MarkdownToolBar: Test h1 removal
And fix cursor position after removing of the header
This commit is contained in:
@ -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
|
||||
|
@ -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),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -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: '# ',
|
||||
);
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user