| /* |
| * 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. |
| */ |
| /** |
| * Test the ModalWizard can build a modal to view, edit and submit an application. |
| */ |
| define([ |
| "underscore", "jquery", "backbone", "codemirror", |
| "view/application-add-wizard", "model/application", "model/location" |
| // "text!tpl/home/step1.html", "text!tpl/home/step2.html", "text!tpl/home/step3.html", |
| // "text!tpl/home/step1-location-row.html", "text!tpl/home/step1-location-option.html", |
| // "text!tpl/home/step2-entity-entry.html", "text!tpl/home/step2-config-entry.html" |
| ], function (_, $, Backbone, AppAddWizard, Application, Locations |
| // , |
| // Entities, |
| // Step1Html, Step2Html, Step3Html, |
| // Step1LocationRowHtml, LocationOptionHtml, |
| // Step2EntityEntryHtml, Step2ConfigEntryHtml |
| ) { |
| |
| /* TEST disabled until we can more cleanly supply javascript. |
| * should probably move to have one big model, |
| * rather than passing around lots of small model items. |
| */ |
| |
| // Backbone.View.prototype.close = function () { |
| // if (this.beforeClose) { |
| // this.beforeClose() |
| // } |
| // this.remove() |
| // this.unbind() |
| // } |
| // |
| // var fakeRouter = new Backbone.Router() |
| // var modal = new ModalWizard({appRouter:fakeRouter}); |
| // |
| // describe("view/modal-wizard", function () { |
| // |
| // it("creates an empty Application.Spec", function () { |
| // expect(modal.model.get("name")).toBe("") |
| // expect(modal.model.get("entities")).toEqual([]) |
| // expect(modal.model.get("locations")).toEqual([]) |
| // }) |
| // |
| // it("creates a view for each of the 3 steps", function () { |
| // expect(modal.steps.length).toBe(3) |
| // expect(modal.steps[0].view instanceof ModalWizard.Step1).toBeTruthy() |
| // expect(modal.steps[1].view instanceof ModalWizard.Step2).toBeTruthy() |
| // expect(modal.steps[2].view instanceof ModalWizard.Step3).toBeTruthy() |
| // }) |
| // |
| // it("beforeClose method closes all 3 subviews", function () { |
| // spyOn(Backbone.View.prototype, "close").andCallThrough() |
| // modal.beforeClose() |
| // expect(modal.steps[0].view.close).toHaveBeenCalled() |
| // expect(modal.steps[1].view.close).toHaveBeenCalled() |
| // expect(modal.steps[2].view.close).toHaveBeenCalled() |
| // }) |
| // }) |
| // |
| // describe("view/modal-wizard step1", function () { |
| // var app, view |
| // |
| // beforeEach(function () { |
| // app = new Application.Spec |
| // view = new ModalWizard.Step1({model:app}) |
| // view.locations.url = "fixtures/location-list.json" |
| // view.locations.fetch({async:false}) |
| // view.render() |
| // }) |
| // |
| // afterEach(function () { |
| // view.close() |
| // }) |
| // |
| // it("does not validate empty view", function () { |
| // expect(view.validate()).toBe(false) |
| // expect(view.$("#app-locations ul").html()).toBe("") |
| // expect(view.$("#application-name").text()).toBe("") |
| // }) |
| // |
| // it("updates the name on blur", function () { |
| // view.$("#application-name").val("myapp") |
| // view.$("#application-name").trigger("blur") |
| // expect(app.get("name")).toBe("myapp") |
| // }) |
| // |
| // it("adds and removes location", function () { |
| // expect(app.get("locations").length).toBe(0) |
| // view.$("#add-app-location").trigger("click") |
| // expect(app.get("locations").length).toBe(1) |
| // view.$(".remove").trigger("click") |
| // expect(app.get("locations").length).toBe(0) |
| // }) |
| // |
| // }) |
| // |
| // describe("view/modal-wizard step2", function () { |
| // var app, view |
| // |
| // beforeEach(function () { |
| // app = new Application.Spec |
| // view = new ModalWizard.Step2({model:app}) |
| // // TODO supply catalog entities |
| // view.render() |
| // }) |
| // |
| // afterEach(function () { |
| // view.close() |
| // }) |
| // |
| // // to be added |
| // }) |
| // |
| // describe("view/modal-wizard step3", function () { |
| // var app, view |
| // |
| // beforeEach(function () { |
| // app = new Application.Spec |
| // view = new ModalWizard.Step3({model:app}) |
| // view.render() |
| // }) |
| // |
| // afterEach(function () { |
| // view.close() |
| // }) |
| // |
| // it("has #app-summary to render the application", function () { |
| // expect(view.$("#app-summary").length).toBe(1) |
| // }) |
| // |
| // it("validates only when application spec contains data", function () { |
| // expect(view.validate()).toBe(false) |
| // app.set({name:"myapp", locations:["/dummy/1"], entities:[ |
| // {} |
| // ]}) |
| // expect(view.validate()).toBe(true) |
| // }) |
| // }) |
| // |
| // describe('tpl/home/step1.html', function () { |
| // var $step = $(Step1Html) |
| // |
| // it('must have input#application-name', function () { |
| // expect($step.find('input#application-name').length).toEqual(1); |
| // }); |
| // |
| // it('must have div#app-locations', function () { |
| // var $appLocations = $step.filter('div#app-locations'); |
| // expect($appLocations.length).toEqual(1); |
| // expect($appLocations.find('h4').length).toEqual(1); |
| // expect($appLocations.find('ul').length).toEqual(1); |
| // expect($appLocations.find('button#toggle-selector-container').length).toEqual(1); |
| // }); |
| // |
| // it('must have select#select-location', function () { |
| // expect($step.find('select#select-location').length).toEqual(1); |
| // }); |
| // |
| // it('must have button#add-app-location', function () { |
| // expect($step.find('button#add-app-location').length).toEqual(1); |
| // }); |
| // it('must have div.info-message', function () { |
| // expect($step.filter('div.info-message').length).toEqual(1); |
| // }) |
| // }); |
| // |
| // describe('tpl/home/step2.html', function () { |
| // var $step = $(Step2Html); |
| // |
| // it('must have div#entities with h4 and ul', function () { |
| // var $div = $step.filter('div#entities'); |
| // expect($div.length).toEqual(1); |
| // expect($div.find('h4').length).toEqual(1); |
| // expect($div.find('ul').length).toEqual(1); |
| // expect($div.find('button#toggle-entity-form').length).toEqual(1); |
| // }); |
| // |
| // it('must have div#new-entity with all components', function () { |
| // var $div = $step.filter('div#new-entity'); |
| // expect($div.length).toEqual(1); |
| // expect($div.find('div#entity-form').length).toEqual(1); |
| // expect($div.find('button#add-app-entity').length).toEqual(1); |
| // expect($div.find('div.entity-info-message').length).toEqual(1); |
| // }); |
| // it('must have div.info-message', function () { |
| // expect($step.filter('div.info-message').length).toEqual(1); |
| // }); |
| // }); |
| // |
| // describe('tpl/home/step3.html', function () { |
| // var $step = $(Step3Html); |
| // it('div.body must have h3 and textarea#app-summary', function () { |
| // expect($step.find('h3').length).toEqual(1); |
| // expect($step.find('textarea#app-summary').length).toEqual(1); |
| // }); |
| // it('must have div.info-message', function () { |
| // expect($step.filter('div.info-message').length).toEqual(1); |
| // }); |
| // }); |
| }) |