summaryrefslogtreecommitdiffstats
path: root/spec/visitor.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/visitor.js')
-rw-r--r--spec/visitor.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/spec/visitor.js b/spec/visitor.js
new file mode 100644
index 0000000..b64dc56
--- /dev/null
+++ b/spec/visitor.js
@@ -0,0 +1,48 @@
+/*global Handlebars */
+
+describe('Visitor', function() {
+ if (!Handlebars.Visitor) {
+ return;
+ }
+
+ function ast_for(template) {
+ var ast = Handlebars.parse(template);
+ return Handlebars.print(ast);
+ }
+
+ it('should provide coverage', function() {
+ // Simply run the thing and make sure it does not fail and that all of the
+ // stub methods are executed
+ var visitor = new Handlebars.Visitor();
+ visitor.accept(Handlebars.parse('{{#foo (bar 1 "1" true) foo=@data}}{{!comment}}{{> bar }} {{/foo}}'));
+ });
+
+ it('should traverse to stubs', function() {
+ var visitor = new Handlebars.Visitor();
+
+ visitor.PARTIAL_NAME = function(partialName) {
+ equal(partialName.name, 'bar');
+ };
+
+ visitor.STRING = function(string) {
+ equal(string.string, '2');
+ };
+ visitor.NUMBER = function(number) {
+ equal(number.stringModeValue, 1);
+ };
+ visitor.BOOLEAN = function(bool) {
+ equal(bool.stringModeValue, true);
+ };
+ visitor.ID = function(id) {
+ equal(id.original, 'foo.bar');
+ };
+ visitor.content = function(content) {
+ equal(content.string, ' ');
+ };
+ visitor.comment = function(comment) {
+ equal(comment.comment, 'comment');
+ };
+
+ visitor.accept(Handlebars.parse('{{#foo.bar (foo.bar 1 "2" true) foo=@foo.bar}}{{!comment}}{{> bar }} {{/foo.bar}}'));
+ });
+});