/** * 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'); describe('BulkOperationsController', function () { var hostController; describe('#bulkOperation', function() { beforeEach(function() { hostController = App.BulkOperationsController.create({}); sinon.stub(hostController, 'bulkOperationForHostsRestart', Em.K); sinon.stub(hostController, 'bulkOperationForHosts', Em.K); sinon.stub(hostController, 'bulkOperationForHostsReinstall', Em.K); sinon.stub(hostController, 'bulkOperationForHostComponentsRestart', Em.K); sinon.stub(hostController, 'bulkOperationForHostComponentsDecommission', Em.K); sinon.stub(hostController, 'bulkOperationForHostComponents', Em.K); sinon.stub(hostController, 'bulkOperationForHostsPassiveState', Em.K); }); afterEach(function() { hostController.bulkOperationForHosts.restore(); hostController.bulkOperationForHostsRestart.restore(); hostController.bulkOperationForHostsReinstall.restore(); hostController.bulkOperationForHostComponentsRestart.restore(); hostController.bulkOperationForHostComponentsDecommission.restore(); hostController.bulkOperationForHostComponents.restore(); hostController.bulkOperationForHostsPassiveState.restore(); }); it('RESTART for hosts', function() { var operationData = { action: 'RESTART' }; hostController.bulkOperation(operationData, []); expect(hostController.bulkOperationForHostsRestart.calledOnce).to.equal(true); }); it('START for hosts', function() { var operationData = { action: 'STARTED' }; hostController.bulkOperation(operationData, []); expect(hostController.bulkOperationForHosts.calledOnce).to.equal(true); }); it('STOP for hosts', function() { var operationData = { action: 'INSTALLED' }; hostController.bulkOperation(operationData, []); expect(hostController.bulkOperationForHosts.calledOnce).to.equal(true); }); it('REINSTALL for hosts', function() { var operationData = { action: 'REINSTALL' }; hostController.bulkOperation(operationData, []); expect(hostController.bulkOperationForHostsReinstall.calledOnce).to.equal(true); }); it('PASSIVE_STATE for hosts', function() { var operationData = { action: 'PASSIVE_STATE' }; hostController.bulkOperation(operationData, []); expect(hostController.bulkOperationForHostsPassiveState.calledOnce).to.equal(true); }); it('RESTART for hostComponents', function() { var operationData = { action: 'RESTART', componentNameFormatted: 'DataNodes' }; hostController.bulkOperation(operationData, []); expect(hostController.bulkOperationForHostComponentsRestart.calledOnce).to.equal(true); }); it('START for hostComponents', function() { var operationData = { action: 'STARTED', componentNameFormatted: 'DataNodes' }; hostController.bulkOperation(operationData, []); expect(hostController.bulkOperationForHostComponents.calledOnce).to.equal(true); }); it('STOP for hostComponents', function() { var operationData = { action: 'INSTALLED', componentNameFormatted: 'DataNodes' }; hostController.bulkOperation(operationData, []); expect(hostController.bulkOperationForHostComponents.calledOnce).to.equal(true); }); it('DECOMMISSION for hostComponents', function() { var operationData = { action: 'DECOMMISSION', componentNameFormatted: 'DataNodes' }; hostController.bulkOperation(operationData, []); expect(hostController.bulkOperationForHostComponentsDecommission.calledOnce).to.equal(true); }); it('RECOMMISSION for hostComponents', function() { var operationData = { action: 'DECOMMISSION_OFF', componentNameFormatted: 'DataNodes' }; hostController.bulkOperation(operationData, []); expect(hostController.bulkOperationForHostComponentsDecommission.calledOnce).to.equal(true); }); }); describe('#warnBeforeDecommissionSuccess()', function () { var mock = { showHbaseActiveWarning: Em.K, checkRegionServerState: Em.K }; beforeEach(function () { hostController = App.BulkOperationsController.create({}); sinon.stub(App.router, 'get', function () { return mock; }); sinon.spy(mock, 'showHbaseActiveWarning'); sinon.spy(mock, 'checkRegionServerState'); }); afterEach(function () { App.router.get.restore(); mock.showHbaseActiveWarning.restore(); mock.checkRegionServerState.restore(); }); it('items length more than 0', function () { hostController.warnBeforeDecommissionSuccess({items: [1]}, {}, {}); expect(mock.showHbaseActiveWarning.calledOnce).to.be.true; }); it('items length equal 0', function () { hostController.warnBeforeDecommissionSuccess({items: []}, {}, {hostNames: 'host1'}); expect(mock.checkRegionServerState.calledWith('host1')).to.be.true; }); }); });