/**
* 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.
*/
var App = require('app');
require('models/alert_definition');
var model;
describe('App.AlertDefinition', function () {
beforeEach(function () {
model = App.AlertDefinition.createRecord();
});
describe('#status', function () {
Em.A([
{
summary: {OK: 1, UNKNOWN: 1, WARNING: 2},
m: 'No CRITICAL',
e: 'OK (1) ' +
'WARN (2) ' +
'UNKWN (1)'
},
{
summary: {WARNING: 2, CRITICAL: 3, UNKNOWN: 1, OK: 1},
m: 'All states exists',
e: 'OK (1) ' +
'WARN (2) ' +
'CRIT (3) ' +
'UNKWN (1)'
},
{
summary: {OK: 1},
m: 'Single host',
e: 'OK'
},
{
summary: {},
m: 'Pending',
e: 'NONE'
}
]).forEach(function (test) {
it(test.m, function () {
model.set('summary', test.summary);
expect(model.get('status')).to.equal(test.e);
});
});
});
describe('#isCriticalOrWarning', function () {
Em.A([
{summary: {CRITICAL: 1}, e: true},
{summary: {WARNING: 1}, e: true},
{summary: {OK: 1}, e: false},
{summary: {UNKNOWN: 1}, e: false},
{summary: {}, e: false}
]).forEach(function (test, i) {
it('test ' + (i + 1), function () {
model.set('summary', test.summary);
expect(model.get('isCriticalOrWarning')).to.equal(test.e);
});
});
});
describe('#isCritical', function () {
Em.A([
{summary: {CRITICAL: 1}, e: true},
{summary: {WARNING: 1}, e: false},
{summary: {OK: 1}, e: false},
{summary: {UNKNOWN: 1}, e: false},
{summary: {}, e: false}
]).forEach(function (test, i) {
it('test ' + (i + 1), function () {
model.set('summary', test.summary);
expect(model.get('isCritical')).to.equal(test.e);
});
});
});
describe('#isWarning', function () {
Em.A([
{summary: {CRITICAL: 1}, e: false},
{summary: {WARNING: 1}, e: true},
{summary: {OK: 1}, e: false},
{summary: {UNKNOWN: 1}, e: false},
{summary: {}, e: false}
]).forEach(function (test, i) {
it('test ' + (i + 1), function () {
model.set('summary', test.summary);
expect(model.get('isWarning')).to.equal(test.e);
});
});
});
describe('#lastTriggeredAgoFormatted', function () {
it('should be empty', function () {
model.set('lastTriggered', 0);
expect(model.get('lastTriggeredAgoFormatted')).to.equal('');
});
it('should not be empty', function () {
model.set('lastTriggered', new Date().getTime() - 61000);
expect(model.get('lastTriggeredAgoFormatted')).to.equal('about a minute ago');
});
});
describe('#serviceDisplayName', function () {
it('should get name for non-existing service', function () {
model.set('serviceName', 'FOOBAR');
expect(model.get('serviceDisplayName')).to.equal('Foobar');
});
});
describe('#componentNameFormatted', function () {
beforeEach(function () {
sinon.stub(App.format, 'role', function (a) {
return 'role ' + a;
});
});
it('should wrap component name by App.format.role method', function () {
model.set('componentName', 'test');
var result = model.get('componentNameFormatted');
expect(result).to.equal('role test');
});
afterEach(function () {
App.format.role.restore();
});
});
});