Add more partials tests
diff --git a/test/mustache_test.dart b/test/mustache_test.dart
index ef0b9e4..94dae11 100644
--- a/test/mustache_test.dart
+++ b/test/mustache_test.dart
@@ -235,7 +235,17 @@
});
group('Partial tag', () {
-
+
+ String _partialTest(Map values, Map sources, String renderTemplate, {bool lenient: false}) {
+ var templates = new Map<String, Template>();
+ for (var k in sources.keys) {
+ templates[k] = parse(sources[k], templateName: k, lenient: lenient);
+ }
+ var resolver = (name) => templates[name];
+ var renderer = new TemplateRenderer(resolver, lenient: lenient);
+ return renderer.renderString(renderTemplate, values);
+ }
+
test('TemplateRenderer', () {
var template = parse('{{>partial}}');
var includedTemplate = parse('{{foo}}');
@@ -245,7 +255,60 @@
var output = renderer.renderString('root', {'foo': 'bar'});
expect(output, 'bar');
});
-
+
+ test('basic', () {
+ var output = _partialTest(
+ {'foo': 'bar'},
+ {'root': '{{>partial}}', 'partial': '{{foo}}'},
+ 'root');
+ expect(output, 'bar');
+ });
+
+ test('missing partial strict', () {
+ var threw = false;
+ try {
+ _partialTest(
+ {'foo': 'bar'},
+ {'root': '{{>partial}}'},
+ 'root',
+ lenient: false);
+ } catch (e) {
+ expect(e is MustacheFormatException, isTrue);
+ print(e);
+ threw = true;
+ }
+ expect(threw, isTrue);
+ });
+
+ test('missing partial lenient', () {
+ var output = _partialTest(
+ {'foo': 'bar'},
+ {'root': '{{>partial}}'},
+ 'root',
+ lenient: true);
+ expect(output, equals(''));
+ });
+
+ test('context', () {
+ var output = _partialTest(
+ {'text': 'content'},
+ {'root': '"{{>partial}}"',
+ 'partial': '*{{text}}*'},
+ 'root',
+ lenient: true);
+ expect(output, equals('"*content*"'));
+ });
+
+ test('recursion', () {
+ var output = _partialTest(
+ { 'content': "X", 'nodes': [ { 'content': "Y", 'nodes': [] } ] },
+ {'root': '{{>node}}',
+ 'node': '{{content}}<{{#nodes}}{{>node}}{{/nodes}}>'},
+ 'root',
+ lenient: true);
+ expect(output, equals('X<Y<>>'));
+ });
+
});
group('Other', () {