blob: 26309ae44e54ea686f8ddbba7bf9f4a443fe7501 [file] [log] [blame]
/**
* 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/alerts/alert_definition');
var model;
function getModel() {
return App.AlertDefinition.createRecord();
}
describe('App.AlertDefinition', function () {
beforeEach(function () {
model = getModel();
});
App.TestAliases.testAsComputedAnd(getModel(), 'isHostAlertDefinition', ['isAmbariService', 'isAmbariAgentComponent']);
describe('#isCriticalOrWarning', function () {
Em.A([
{summary: {CRITICAL: {count: 1, maintenanceCount: 0}}, e: true},
{summary: {CRITICAL: {count: 0, maintenanceCount: 1}}, e: false},
{summary: {CRITICAL: {count: 1, maintenanceCount: 1}}, e: true},
{summary: {WARNING: {count: 1, maintenanceCount: 0}}, e: true},
{summary: {OK: {count: 1, maintenanceCount: 0}}, e: false},
{summary: {UNKNOWN: {count: 1, maintenanceCount: 0}}, 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: {count: 1, maintenanceCount: 0}}, e: true},
{summary: {WARNING: {count: 1, maintenanceCount: 0}}, e: false},
{summary: {OK: {count: 1, maintenanceCount: 0}}, e: false},
{summary: {UNKNOWN: {count: 1, maintenanceCount: 0}}, 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: {count: 1, maintenanceCount: 0}}, e: false},
{summary: {WARNING: {count: 1, maintenanceCount: 0}}, e: true},
{summary: {OK: {count: 1, maintenanceCount: 0}}, e: false},
{summary: {UNKNOWN: {count: 1, maintenanceCount: 0}}, 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('#isOK', function () {
Em.A([
{summary: {CRITICAL: {count: 1, maintenanceCount: 0}}, e: false},
{summary: {WARNING: {count: 1, maintenanceCount: 0}}, e: false},
{summary: {OK: {count: 1, maintenanceCount: 0}}, e: true},
{summary: {UNKNOWN: {count: 1, maintenanceCount: 0}}, e: false},
{summary: {}, e: false}
]).forEach(function (test, i) {
it('test ' + (i + 1), function () {
model.set('summary', test.summary);
expect(model.get('isOK')).to.equal(test.e);
});
});
});
describe('#isUnknown', function () {
Em.A([
{summary: {CRITICAL: {count: 1, maintenanceCount: 0}}, e: false},
{summary: {WARNING: {count: 1, maintenanceCount: 0}}, e: false},
{summary: {OK: {count: 1, maintenanceCount: 0}}, e: false},
{summary: {UNKNOWN: {count: 1, maintenanceCount: 0}}, e: true},
{summary: {}, e: false}
]).forEach(function (test, i) {
it('test ' + (i + 1), function () {
model.set('summary', test.summary);
expect(model.get('isUnknown')).to.equal(test.e);
});
});
});
describe('#lastTriggeredAgoFormatted', function () {
it('should be empty', function () {
model.set('lastTriggeredRaw', 0);
expect(model.get('lastTriggeredAgoFormatted')).to.equal('');
});
it('should not be empty', function () {
model.set('lastTriggeredRaw', 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();
});
});
App.TestAliases.testAsComputedGetByKey(getModel(), 'typeIconClass', 'typeIcons', 'type', {map: {
METRIC: 'glyphicon glyphicon-flash',
SCRIPT: 'glyphicon glyphicon-file',
WEB: 'glyphicon glyphicon-globe',
PORT: 'glyphicon glyphicon-log-in',
AGGREGATE: 'glyphicon glyphicon-plus',
SERVER: 'glyphicon glyphicon-oil',
RECOVERY: 'glyphicon glyphicon-oil'
}});
describe('#lastTriggeredFormatted', function () {
it('should be empty', function () {
model.set('lastTriggered', 0);
expect(model.get('lastTriggeredFormatted')).to.be.equal('');
});
});
describe('REOPEN', function () {
describe('#getSortDefinitionsByStatus', function () {
Em.A([
{
a: App.AlertDefinition.createRecord({summary: {OK: {count: 1, maintenanceCount: 0}, WARNING: {count: 1, maintenanceCount: 0}}}),
b: App.AlertDefinition.createRecord({summary: {WARNING: {count: 1, maintenanceCount: 0}}}),
order: true,
e: -1
},
{
a: App.AlertDefinition.createRecord({summary: {OK: {count: 1, maintenanceCount: 0}, WARNING: {count: 2, maintenanceCount: 0}}}),
b: App.AlertDefinition.createRecord({summary: {OK: {count: 1, maintenanceCount: 0}, WARNING: {count: 1, maintenanceCount: 0}}}),
order: true,
e: -1
},
{
a: App.AlertDefinition.createRecord({summary: {OK: {count: 1, maintenanceCount: 0}, WARNING: {count: 1, maintenanceCount: 0}}}),
b: App.AlertDefinition.createRecord({summary: {WARNING: {count: 1, maintenanceCount: 0}}}),
order: false,
e: 1
},
{
a: App.AlertDefinition.createRecord({summary: {OK: {count: 1, maintenanceCount: 0}, WARNING: {count: 2, maintenanceCount: 0}}}),
b: App.AlertDefinition.createRecord({summary: {OK: {count: 1, maintenanceCount: 0}, WARNING: {count: 1, maintenanceCount: 0}}}),
order: false,
e: 1
}
]).forEach(function(test, i) {
it('test #' + (i + 1), function () {
var func = App.AlertDefinition.getSortDefinitionsByStatus(test.order);
expect(func(test.a, test.b)).to.equal(test.e);
});
});
});
});
});