Unverified Commit 898c3d40 authored by Dennis Schubert's avatar Dennis Schubert Committed by Jonne Haß
Browse files

Throw exception if no templateName gets provided but allow setting templateName to false explicitly

closes #6877
parent 3ae3bfe5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
## Refactor

* Removed the publisher from a user's photo stream due to various issues [#6851](https://github.com/diaspora/diaspora/pull/6851)
* Don't implicitly ignore missing templateName in app.views.Base [#6877](https://github.com/diaspora/diaspora/pull/6877)

## Bug fixes

+2 −0
Original line number Diff line number Diff line
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later

app.pages.Profile = app.views.Base.extend({
  templateName: false,

  events: {
    'click #block_user_button': 'blockPerson',
    'click #unblock_user_button': 'unblockPerson'
+10 −2
Original line number Diff line number Diff line
@@ -38,11 +38,19 @@ app.views.Base = Backbone.View.extend({
  renderTemplate : function(){
    var presenter = _.isFunction(this.presenter) ? this.presenter() : this.presenter;
    this.template = HandlebarsTemplates[this.templateName+"_tpl"];
    if(!this.template) {
      console.log(this.templateName ? ("no template for " + this.templateName) : "no templateName specified");

    if (this.templateName === false) {
      return;
    }

    if (!this.templateName) {
      throw new Error("No templateName set, set to false to ignore.");
    }

    if (!this.template) {
      throw new Error("Invalid templateName provided: " + this.templateName);
    }

    this.$el
      .html(this.template(presenter))
      .attr("data-template", _.last(this.templateName.split("/")));
+24 −0
Original line number Diff line number Diff line
@@ -8,6 +8,30 @@ describe("app.views.Base", function(){
      this.view.render();
    });

    it("throws an exception if no templateName was provided", function() {
      expect(function() {
        new app.views.Base().render();
      }).toThrow(new Error("No templateName set, set to false to ignore."));
    });

    it("does not throw an exception if templateName is set to false", function() {
      var ViewClass = app.views.Base.extend({
        templateName: false
      });

      new ViewClass().render();
    });

    it("throws an exception if an invalid templateName was provided", function() {
      expect(function() {
        var ViewClass = app.views.Base.extend({
          templateName: "noiamnotavalidtemplate"
        });

        new ViewClass().render();
      }).toThrow(new Error("Invalid templateName provided: noiamnotavalidtemplate"));
    });

    it("renders the template with the presenter", function(){
      expect($(this.view.el).text().trim()).toBe("model attributes are in the default presenter");
    });