blob: 1b76e3b2a6ab48414ad1435f878e503a90a28226 [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([
"model/application", "model/entity"
], function (Application, Entity) {
$.ajaxSetup({ async:false });
describe('model/application Application model', function () {
var application = new Application.Model()
application.url = 'fixtures/application.json'
application.fetch({async:false})
it('loads all model properties defined in fixtures/application.json', function () {
expect(application.get("status")).toEqual('STARTING')
expect(application.getLinkByName('self')).toEqual('/v1/applications/myapp')
expect(application.getLinkByName('entities')).toEqual('fixtures/entity-summary-list.json')
})
it("loads the spec from fixtures/application.json", function () {
var applicationSpec = application.getSpec(),
entity = new Entity.Model(applicationSpec.get("entities")[0])
expect(applicationSpec.get("name")).toEqual('myapp')
expect(applicationSpec.get("locations")[0]).toEqual('/v1/locations/1')
expect(entity.get("name")).toEqual('Vanilla Java App')
})
it('fetches entities from the spec url: fixtures/entity-summary-list.json', function () {
expect(application.getLinkByName('entities')).toBe('fixtures/entity-summary-list.json')
})
})
describe('model/application', function () {
var spec, location, entity
beforeEach(function () {
spec = new Application.Spec
location = "/v1/locations/2"
entity = new Entity.Model({name:'test'})
spec.url = 'fixtures/application-spec.json'
spec.fetch({async:false})
})
it('loads the properties from fixtures/application-spec.json', function () {
expect(spec.get("name")).toEqual('myapp')
expect(spec.get("locations")[0]).toEqual('/v1/locations/1')
expect(spec.get("entities").length).toBe(1)
})
it("loads the entity from fixtures/application-spec.json", function () {
var entity = new Entity.Model(spec.get("entities")[0])
expect(entity.get("name")).toEqual('Vanilla Java App')
expect(entity.get("type")).toEqual('org.apache.brooklyn.entity.java.VanillaJavaApp')
expect(entity.getConfigByName('initialSize')).toEqual('1')
expect(entity.getConfigByName('creationScriptUrl')).toEqual('http://my.brooklyn.io/storage/foo.sql')
})
it("triggers 'change' when we add a location", function () {
spyOn(spec, "trigger").andCallThrough()
spec.addLocation(location)
expect(spec.trigger).toHaveBeenCalled()
expect(spec.get("locations").length).toEqual(2)
})
it("triggers 'change' when we remove a location", function () {
spec.addLocation(location)
spyOn(spec, "trigger").andCallThrough()
spec.removeLocation('/v1/invalid/location')
expect(spec.trigger).not.toHaveBeenCalled()
spec.removeLocation(location)
expect(spec.trigger).toHaveBeenCalled()
expect(spec.get("locations").length).toEqual(1)
})
it('allows you to add the same location twice', function () {
var spec = new Application.Spec,
location = '/ion/23'
spec.addLocation(location)
spec.addLocation(location)
expect(spec.get("locations").length).toEqual(2)
})
it("triggers 'change' when you add an entity", function () {
spyOn(spec, "trigger").andCallThrough()
spec.removeEntityByName(entity.get("name"))
expect(spec.trigger).not.toHaveBeenCalled()
spec.addEntity(entity)
expect(spec.trigger).toHaveBeenCalled()
})
it("triggers 'change' when you remove an entity", function () {
spec.addEntity(entity)
spyOn(spec, "trigger").andCallThrough()
spec.removeEntityByName(entity.get("name"))
expect(spec.trigger).toHaveBeenCalled()
})
it('allows you to add the same entity twice', function () {
var spec = new Application.Spec,
entity = new Entity.Model({ name:'test-entity'})
spec.addEntity(entity)
spec.addEntity(entity)
expect(spec.get("entities").length).toEqual(2)
})
})
})