blob: 4098235dd6c0c53413194602973e2d472e945d33 [file]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
define([
"brooklyn", "backbone"
], function (B, Backbone) {
describe("view", function () {
describe("form", function() {
var formTemplate = _.template('<form>' +
'<input name="id" type="text"/>' +
'<input name="initialvalue" type="text" value="present"/>' +
'<button type="submit" class="submit">Submit</button>' +
'</form>');
it("should set existing values on the model", function() {
var form = new B.view.Form({template: formTemplate, onSubmit: function() {}});
expect(form.model.get("initialvalue")).toBe("present");
expect(form.model.get("id")).toBe("");
});
it("should maintain a model as inputs change", function () {
var form = new B.view.Form({
template: formTemplate,
onSubmit: function() {}
});
// simulate id entry
form.$("[name=id]").val("987");
form.$("[name=id]").trigger("change");
expect(form.model.get("id")).toBe("987");
});
it("should call the onSubmit callback when the form is submitted", function () {
var wasCalled = false;
var onSubmit = function (model) {
wasCalled = true;
};
var form = new B.view.Form({
template: formTemplate,
onSubmit: onSubmit
});
form.$("form").trigger("submit");
expect(wasCalled).toBe(true);
});
it("should fail if called without template or onSubmit", function () {
try {
new B.view.Form({template: ""});
fail;
} catch (e) {
// expected
}
try {
new B.view.Form({onSubmit: function() {}});
fail;
} catch (e) {
// expected
}
});
});
});
describe("_.stripComments", function () {
it("should strip a basic comment", function () {
var text = "<p>abc</p>\n <!-- comment-here --> <p>cba</p>";
expect(_.stripComments(text)).toBe("<p>abc</p>\n <p>cba</p>");
});
it("should return an empty string for an empty comment", function () {
expect(_.stripComments("<!---->")).toBe("");
expect(_.stripComments("<!-- -->")).toBe("");
});
it("should strip multiple comments", function () {
var text = "a<!-- one -->b<!--two-->c<!-- three -->";
expect(_.stripComments(text)).toBe("abc");
});
it("should strip trailing newlines", function () {
expect(_.stripComments("<!-- a -->\nb")).toBe("b");
expect(_.stripComments("<!-- a -->\rb")).toBe("b");
});
it("should leave text with no comments untouched", function () {
var text = "<p>abc</p>";
expect(_.stripComments(text)).toBe(text);
});
it("should remove the Apache license header from an HTML template", function () {
var text = "<!--\n" +
"Licensed to the Apache Software Foundation (ASF) under one\n" +
"or more contributor license agreements. See the NOTICE file\n" +
"distributed with this work for additional information\n" +
"regarding copyright ownership. The ASF licenses this file\n" +
"to you under the Apache License, Version 2.0 (the\n" +
"\"License\"); you may not use this file except in compliance\n" +
"with the License. You may obtain a copy of the License at\n" +
"\n" +
"http://www.apache.org/licenses/LICENSE-2.0\n" +
"\n" +
"Unless required by applicable law or agreed to in writing,\n" +
"software distributed under the License is distributed on an\n" +
"\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n" +
"KIND, either express or implied. See the License for the\n" +
"specific language governing permissions and limitations\n" +
"under the License.\n" +
"-->\n" +
"real content";
expect(_.stripComments(text)).toBe("real content");
});
});
});