Add a test for the markdown node parsing

This way we will clearly know when the Markdown parsing fails because of
bugs in the markdown package.
This commit is contained in:
Vishesh Handa
2020-08-10 21:04:13 +02:00
parent 81debcf64c
commit 3e2306801b
2 changed files with 36 additions and 7 deletions

View File

@ -55,12 +55,6 @@ class NoteViewer extends StatelessWidget {
),
);
// It's important to add both these inline syntaxes before the other
// syntaxes as the LinkSyntax intefers with both of these
var markdownExtensions = md.ExtensionSet.gitHubFlavored;
markdownExtensions.inlineSyntaxes.insert(0, WikiLinkSyntax());
markdownExtensions.inlineSyntaxes.insert(1, TaskListSyntax());
final rootFolder = Provider.of<NotesFolderFS>(context);
var view = EditorScrollView(
child: Column(
@ -116,7 +110,7 @@ class NoteViewer extends StatelessWidget {
},
imageBuilder: (url, title, alt) => kDefaultImageBuilder(
url, note.parent.folderPath + p.separator, null, null),
extensionSet: markdownExtensions,
extensionSet: markdownExtensions(),
),
),
const SizedBox(height: 16.0),
@ -131,6 +125,15 @@ class NoteViewer extends StatelessWidget {
return view;
}
static md.ExtensionSet markdownExtensions() {
// It's important to add both these inline syntaxes before the other
// syntaxes as the LinkSyntax intefers with both of these
var markdownExtensions = md.ExtensionSet.gitHubFlavored;
markdownExtensions.inlineSyntaxes.insert(0, WikiLinkSyntax());
markdownExtensions.inlineSyntaxes.insert(1, TaskListSyntax());
return markdownExtensions;
}
/*
Widget _buildFooter(BuildContext context) {
return Padding(

View File

@ -0,0 +1,26 @@
import 'package:test/test.dart';
import 'package:markdown/markdown.dart' as md;
import 'package:gitjournal/widgets/note_viewer.dart';
void main() {
test('Parses Wiki Lnks and task items', () {
var body = "[[GitJournal]] should match.\n- [ ] task item";
var lines = body.split('\n');
var doc = md.Document(
encodeHtml: false,
extensionSet: NoteViewer.markdownExtensions(),
inlineSyntaxes: NoteViewer.markdownExtensions().inlineSyntaxes,
);
var nodes = doc.parseLines(lines);
var expected =
"""<p><a type="wiki" href="[[GitJournal]]" term="GitJournal">GitJournal</a> should match.</p>
<ul>
<li><input type="checkbox" disabled="true" checked="false"></input>task item</li>
</ul>""";
expect(md.renderToHtml(nodes), expected);
});
}