require('./helper');

describe('Mustache.render', function () {
  beforeEach(function () {
    Mustache.clearCache();
  });

  it('requires template to be a string', function () {
    assert.throws(function () {
      Mustache.render(['dummy template'], ['foo', 'bar']);
    }, TypeError, 'Invalid template! Template should be a "string" but ' +
                  '"array" was given as the first argument ' +
                  'for mustache#render(template, view, partials)');
  });

  var i;
  var tests = {{{.}}};

  for (i = 0; i < tests.length; i++) {

    (function indexClosure(test) {
        var view = eval(test.view);

        it('knows how to render ' + test.name, function () {

          var output;
          if (test.partial) {
            output = Mustache.render(test.template, view, { partial: test.partial });
          } else {
            output = Mustache.render(test.template, view);
          }

          assert.equal(output, test.expect);
        });
    })(tests[i]);

  }
});