/**
 * 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');
var hostsUtils = require('utils/hosts');
var validator = require('utils/validator');
var testHelpers = require('test/helpers');

describe('hosts utils', function () {

  describe('#launchHostsSelectionDialog', function () {

    var popup,
      mock = {
        callback: Em.K
      };

    beforeEach(function () {
      sinon.stub(App.ModalPopup, 'show', Em.K);
    });

    afterEach(function () {
      App.ModalPopup.show.restore();
    });

    describe('popup header and message', function () {

      var cases = [
        {
          popupDescription: {},
          header: Em.I18n.t('hosts.selectHostsDialog.title'),
          dialogMessage: Em.I18n.t('hosts.selectHostsDialog.message'),
          title: 'default header and message'
        },
        {
          popupDescription: {
            dialogMessage: 'Message 0'
          },
          header: Em.I18n.t('hosts.selectHostsDialog.title'),
          dialogMessage: 'Message 0',
          title: 'default header, custom message'
        },
        {
          popupDescription: {
            header: 'Header 0'
          },
          header: 'Header 0',
          dialogMessage: Em.I18n.t('hosts.selectHostsDialog.message'),
          title: 'custom header, default message'
        },
        {
          popupDescription: {
            header: 'Header 1',
            dialogMessage: 'Message 1'
          },
          header: 'Header 1',
          dialogMessage: 'Message 1',
          title: 'custom header and message'
        }
      ];

      cases.forEach(function (item) {

        describe(item.title, function () {

          beforeEach(function () {
            hostsUtils.launchHostsSelectionDialog(null, null, null, null, null, item.popupDescription);
            popup = Em.Object.create(App.ModalPopup.show.firstCall.args[0]);
          });

          it('header', function () {
            expect(popup.get('header')).to.equal(item.header);
          });

          it('message', function () {
            expect(popup.get('dialogMessage')).to.equal(item.dialogMessage);
          });

        });

      });

    });

    describe('#onPrimary', function () {

      var cases = [
        {
          selectAtleastOneHost: true,
          availableHosts: [],
          warningMessage: Em.I18n.t('hosts.selectHostsDialog.message.warning'),
          callbackCallCount: 0,
          hideCallCount: 0,
          title: 'no hosts available'
        },
        {
          selectAtleastOneHost: false,
          availableHosts: [],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: [],
          hideCallCount: 1,
          title: 'no hosts available, no selection requirement'
        },
        {
          selectAtleastOneHost: true,
          availableHosts: [
            {},
            {
              selected: 1
            },
            {
              selected: 'true'
            }
          ],
          warningMessage: Em.I18n.t('hosts.selectHostsDialog.message.warning'),
          callbackCallCount: 0,
          hideCallCount: 0,
          title: 'no selection state info'
        },
        {
          selectAtleastOneHost: false,
          availableHosts: [
            {},
            {
              selected: 1
            },
            {
              selected: 'true'
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: [],
          hideCallCount: 1,
          title: 'no selection state info, no selection requirement'
        },
        {
          selectAtleastOneHost: true,
          availableHosts: [
            {
              selected: false
            },
            {
              selected: false
            },
            {},
            {
              selected: 1
            },
            {
              selected: 'true'
            }
          ],
          warningMessage: Em.I18n.t('hosts.selectHostsDialog.message.warning'),
          callbackCallCount: 0,
          hideCallCount: 0,
          title: 'no hosts selected'
        },
        {
          selectAtleastOneHost: false,
          availableHosts: [
            {
              selected: false
            },
            {
              selected: false
            },
            {},
            {
              selected: 1
            },
            {
              selected: 'true'
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: [],
          hideCallCount: 1,
          title: 'no hosts selected, no selection requirement'
        },
        {
          selectAtleastOneHost: true,
          availableHosts: [
            {
              selected: true
            },
            {
              selected: false
            },
            {},
            {
              selected: 1
            },
            {
              selected: 'true'
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: [undefined],
          hideCallCount: 1,
          title: '1 host selected, no host info'
        },
        {
          selectAtleastOneHost: false,
          availableHosts: [
            {
              selected: true
            },
            {
              selected: false
            },
            {},
            {
              selected: 1
            },
            {
              selected: 'true'
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: [undefined],
          hideCallCount: 1,
          title: '1 host selected, no host info, no selection requirement'
        },
        {
          selectAtleastOneHost: true,
          availableHosts: [
            {
              selected: true,
              host: {}
            },
            {
              selected: false
            },
            {},
            {
              selected: 1
            },
            {
              selected: 'true'
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: [undefined],
          hideCallCount: 1,
          title: '1 host selected, no host id'
        },
        {
          selectAtleastOneHost: false,
          availableHosts: [
            {
              selected: true,
              host: {}
            },
            {
              selected: false
            },
            {},
            {
              selected: 1
            },
            {
              selected: 'true'
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: [undefined],
          hideCallCount: 1,
          title: '1 host selected, no host id, no selection requirement'
        },
        {
          selectAtleastOneHost: true,
          availableHosts: [
            {
              selected: true,
              host: {
                id: 'h0'
              }
            },
            {
              selected: false,
              host: {
                id: 'h1'
              }
            },
            {
              host: {
                id: 'h2'
              }
            },
            {
              selected: 1,
              host: {
                id: 'h3'
              }
            },
            {
              selected: 'true',
              host: {
                id: 'h4'
              }
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: ['h0'],
          hideCallCount: 1,
          title: '1 host selected, host id available'
        },
        {
          selectAtleastOneHost: false,
          availableHosts: [
            {
              selected: true,
              host: {
                id: 'h5'
              }
            },
            {
              selected: false,
              host: {
                id: 'h6'
              }
            },
            {
              host: {
                id: 'h7'
              }
            },
            {
              selected: 1,
              host: {
                id: 'h8'
              }
            },
            {
              selected: 'true',
              host: {
                id: 'h9'
              }
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: ['h5'],
          hideCallCount: 1,
          title: '1 host selected, host id available, no selection requirement'
        },
        {
          selectAtleastOneHost: true,
          availableHosts: [
            {
              selected: true
            },
            {
              selected: true
            },
            {
              selected: false
            },
            {},
            {
              selected: 1
            },
            {
              selected: 'true'
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: [undefined, undefined],
          hideCallCount: 1,
          title: 'more than 1 host selected, no host info'
        },
        {
          selectAtleastOneHost: false,
          availableHosts: [
            {
              selected: true
            },
            {
              selected: true
            },
            {
              selected: false
            },
            {},
            {
              selected: 1
            },
            {
              selected: 'true'
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: [undefined, undefined],
          hideCallCount: 1,
          title: 'more than 1 host selected, no host info, no selection requirement'
        },
        {
          selectAtleastOneHost: true,
          availableHosts: [
            {
              selected: true,
              host: {}
            },
            {
              selected: true,
              host: {}
            },
            {
              selected: false
            },
            {},
            {
              selected: 1
            },
            {
              selected: 'true'
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: [undefined, undefined],
          hideCallCount: 1,
          title: 'more than 1 host selected, no host id'
        },
        {
          selectAtleastOneHost: false,
          availableHosts: [
            {
              selected: true,
              host: {}
            },
            {
              selected: true,
              host: {}
            },
            {
              selected: false
            },
            {},
            {
              selected: 1
            },
            {
              selected: 'true'
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: [undefined, undefined],
          hideCallCount: 1,
          title: 'more than 1 host selected, no host id, no selection requirement'
        },
        {
          selectAtleastOneHost: true,
          availableHosts: [
            {
              selected: true,
              host: {
                id: 'h10'
              }
            },
            {
              selected: true,
              host: {
                id: 'h11'
              }
            },
            {
              selected: false,
              host: {
                id: 'h12'
              }
            },
            {
              host: {
                id: 'h13'
              }
            },
            {
              selected: 1,
              host: {
                id: 'h14'
              }
            },
            {
              selected: 'true',
              host: {
                id: 'h15'
              }
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: ['h10', 'h11'],
          hideCallCount: 1,
          title: 'more than 1 host selected, host ids available'
        },
        {
          selectAtleastOneHost: false,
          availableHosts: [
            {
              selected: true,
              host: {
                id: 'h16'
              }
            },
            {
              selected: true,
              host: {
                id: 'h17'
              }
            },
            {
              selected: false,
              host: {
                id: 'h18'
              }
            },
            {
              host: {
                id: 'h19'
              }
            },
            {
              selected: 1,
              host: {
                id: 'h20'
              }
            },
            {
              selected: 'true',
              host: {
                id: 'h21'
              }
            }
          ],
          warningMessage: null,
          callbackCallCount: 1,
          arrayOfSelectedHosts: ['h16', 'h17'],
          hideCallCount: 1,
          title: 'more than 1 host selected, host ids available, no selection requirement'
        }
      ];

      cases.forEach(function (item) {

        describe(item.title, function () {

          beforeEach(function () {
            sinon.spy(mock, 'callback');
            hostsUtils.launchHostsSelectionDialog(null, null, item.selectAtleastOneHost, null, mock.callback, {});
            popup = Em.Object.create(App.ModalPopup.show.firstCall.args[0], {
              warningMessage: '',
              availableHosts: item.availableHosts,
              hide: Em.K
            });
            sinon.spy(popup, 'hide');
            popup.onPrimary();
          });

          afterEach(function () {
            mock.callback.restore();
            popup.hide.restore();
          });

          it('warning message', function () {
            expect(popup.get('warningMessage')).to.equal(item.warningMessage);
          });

          it('callback', function () {
            expect(mock.callback.callCount).to.equal(item.callbackCallCount);
          });

          if (item.callbackCallCount) {
            it('callback argument', function () {
              expect(mock.callback.firstCall.args).to.eql([item.arrayOfSelectedHosts]);
            });
          }

          it('hide popup', function () {
            expect(popup.hide.callCount).to.equal(item.hideCallCount);
          });

        });

      });

    });

    describe('#disablePrimary', function () {

      var cases = [
        {
          isLoaded: true,
          disablePrimary: false,
          title: 'enable button'
        },
        {
          isLoaded: false,
          disablePrimary: true,
          title: 'disable button'
        }
      ];

      cases.forEach(function (item) {

        it(item.title, function () {
          hostsUtils.launchHostsSelectionDialog(null, null, null, null, null, item.popupDescription);
          popup = Em.Object.create(App.ModalPopup.show.firstCall.args[0], {
            isLoaded: item.isLoaded
          });
          expect(popup.get('disablePrimary')).to.equal(item.disablePrimary);
        });

      });

    });

    describe('#onSecondary', function () {

      beforeEach(function () {
        sinon.spy(mock, 'callback');
        hostsUtils.launchHostsSelectionDialog(null, null, null, null, mock.callback, {});
        popup = Em.Object.create(App.ModalPopup.show.firstCall.args[0], {
          hide: Em.K
        });
        sinon.spy(popup, 'hide');
        popup.onSecondary();
      });

      afterEach(function () {
        mock.callback.restore();
        popup.hide.restore();
      });

      it('callback', function () {
        expect(mock.callback.calledOnce).to.be.true;
      });

      it('callback argument', function () {
        expect(mock.callback.firstCall.args).to.eql([null]);
      });

      it('hide popup', function () {
        expect(popup.hide.calledOnce).to.be.true;
      });

    });

    describe('#bodyClass', function () {

      var view,
        validComponents = [
          {
            componentName: 'c0'
          },
          {
            componentName: 'c1'
          }
        ];

      beforeEach(function () {
        hostsUtils.launchHostsSelectionDialog([
          {
            host: {
              id: 'h0'
            },
            filtered: false
          },
          {
            host: {
              id: 'h1'
            }
          }
        ], null, null, validComponents, null, {});
        popup = Em.Object.create(App.ModalPopup.show.firstCall.args[0]);
        view = popup.get('bodyClass').create({
          parentView: popup
        });
      });

      describe('#filteredContentObs', function () {

        beforeEach(function () {
          sinon.stub(view, 'filteredContentObsOnce', Em.K);
          sinon.stub(view, 'filterHosts', Em.K);
          sinon.stub(Em.run, 'once', function (context, callback) {
            callback.call(context);
          });
        });

        afterEach(function () {
          view.filteredContentObsOnce.restore();
          view.filterHosts.restore();
          Em.run.once.restore();
        });

        it('should run filteredContentObsOnce', function () {
          popup.set('availableHosts', [
            {
              filtered: true
            }
          ]);
          expect(view.filteredContentObsOnce.calledOnce).to.be.true;
        });

      });

      describe('#filteredContentObsOnce', function () {

        var cases = [
          {
            availableHosts: [],
            filteredContent: [],
            title: 'no hosts available'
          },
          {
            availableHosts: [
              {},
              {
                filtered: false
              },
              {
                filtered: null
              },
              {
                filtered: 0
              }
            ],
            filteredContent: [],
            title: 'no hosts filtered'
          },
          {
            availableHosts: [
              {},
              {
                filtered: false
              },
              {
                filtered: null
              },
              {
                filtered: 0
              },
              {
                filtered: true
              },
              {
                filtered: 'true'
              },
              {
                filtered: 1
              }
            ],
            filteredContent: [
              {
                filtered: true
              },
              {
                filtered: 'true'
              },
              {
                filtered: 1
              }
            ],
            title: 'filtered hosts present'
          }
        ];

        beforeEach(function () {
          sinon.stub(view, 'filteredContentObs', Em.K);
          sinon.stub(view, 'filterHosts', Em.K);
        });

        afterEach(function () {
          view.filteredContentObs.restore();
          view.filterHosts.restore();
        });

        cases.forEach(function (item) {

          it(item.title, function () {
            popup.set('availableHosts', item.availableHosts);
            view.filteredContentObsOnce();
            expect(view.get('filteredContent')).to.eql(item.filteredContent);
          });

        });

      });

      describe('#filterComponents', function () {

        it('should be set from validComponents', function () {
          expect(view.get('filterComponents')).to.eql(validComponents);
        });

      });

      describe('#isDisabled', function () {

        var cases = [
          {
            isLoaded: true,
            isDisabled: false,
            title: 'enabled'
          },
          {
            isLoaded: false,
            isDisabled: true,
            title: 'disabled'
          }
        ];

        cases.forEach(function (item) {

          it(item.title, function () {
            popup.set('isLoaded', item.isLoaded);
            expect(view.get('isDisabled')).to.equal(item.isDisabled);
          });

        });

      });

      describe('#didInsertElement', function () {

        beforeEach(function () {
          sinon.stub(view, 'filterHosts', Em.K);
          sinon.stub(view, 'filteredContentObs', Em.K);
          sinon.stub(view, 'filteredContentObsOnce', Em.K);
          view.get('filterColumns').setEach('selected', false);
          view.get('filterColumns').findProperty('id', 'cpu').set('selected', true);
          view.didInsertElement();
        });

        afterEach(function () {
          view.filterHosts.restore();
          view.filteredContentObs.restore();
          view.filteredContentObsOnce.restore();
        });

        it('column for filter', function () {
          expect(view.get('filterColumn')).to.eql(Em.Object.create({
            id: 'cpu',
            name: 'CPU',
            selected: true
          }));
        });

        it('available hosts', function () {
          expect(view.get('parentView.availableHosts').toArray()).to.eql([
            {
              host: {
                id: 'h0'
              },
              filtered: true
            },
            {
              host: {
                id: 'h1'
              },
              filtered: true
            }
          ]);
        });

        it('isLoaded', function () {
          expect(view.get('parentView.isLoaded')).to.be.true;
        });

        it('observer called', function () {
          expect(view.filteredContentObsOnce.calledOnce).to.be.true;
        });

      });

      describe('#filterHosts', function () {

        var cases = [
          {
            filterText: '',
            filterComponent: null,
            showOnlySelectedHosts: true,
            availableHosts: [
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                selected: false
              })
            ],
            result: [
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                selected: false,
                filterColumnValue: 'centos7',
                filtered: false
              })
            ],
            title: 'no filter text, no component for filter, show selected hosts only'
          },
          {
            filterText: '',
            filterComponent: null,
            showOnlySelectedHosts: false,
            availableHosts: [
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                selected: false
              })
            ],
            result: [
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                selected: false,
                filterColumnValue: 'centos7',
                filtered: true
              })
            ],
            title: 'no filter text, no component for filter, show all hosts'
          },
          {
            filterText: 'n',
            filterComponent: null,
            showOnlySelectedHosts: true,
            availableHosts: [
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h0'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h1'
                }),
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn2'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn3'
                }),
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h4',
                  osType: 'centos6'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h5',
                  osType: 'centos6'
                }),
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn6',
                  osType: 'centos6'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn7',
                  osType: 'centos6'
                }),
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h8',
                  osType: 'suse11'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h9',
                  osType: 'suse11'
                }),
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn10',
                  osType: 'suse11'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn11',
                  osType: 'suse11'
                }),
                selected: false
              })
            ],
            result: [
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h0'
                }),
                selected: true,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h1'
                }),
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn2'
                }),
                selected: true,
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn3'
                }),
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h4',
                  osType: 'centos6'
                }),
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h5',
                  osType: 'centos6'
                }),
                selected: false,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn6',
                  osType: 'centos6'
                }),
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn7',
                  osType: 'centos6'
                }),
                selected: false,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h8',
                  osType: 'suse11'
                }),
                selected: true,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h9',
                  osType: 'suse11'
                }),
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn10',
                  osType: 'suse11'
                }),
                selected: true,
                filterColumnValue: 'suse11',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn11',
                  osType: 'suse11'
                }),
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              })
            ],
            title: 'filter text set, no component for filter, show selected hosts only'
          },
          {
            filterText: 'n',
            filterComponent: null,
            showOnlySelectedHosts: false,
            availableHosts: [
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h0'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h1'
                }),
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn2'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn3'
                }),
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h4',
                  osType: 'centos6'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h5',
                  osType: 'centos6'
                }),
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn6',
                  osType: 'centos6'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn7',
                  osType: 'centos6'
                }),
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h8',
                  osType: 'suse11'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h9',
                  osType: 'suse11'
                }),
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn10',
                  osType: 'suse11'
                }),
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn11',
                  osType: 'suse11'
                }),
                selected: false
              })
            ],
            result: [
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h0'
                }),
                selected: true,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h1'
                }),
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn2'
                }),
                selected: true,
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn3'
                }),
                selected: false,
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h4',
                  osType: 'centos6'
                }),
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h5',
                  osType: 'centos6'
                }),
                selected: false,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn6',
                  osType: 'centos6'
                }),
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn7',
                  osType: 'centos6'
                }),
                selected: false,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h8',
                  osType: 'suse11'
                }),
                selected: true,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h9',
                  osType: 'suse11'
                }),
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn10',
                  osType: 'suse11'
                }),
                selected: true,
                filterColumnValue: 'suse11',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn11',
                  osType: 'suse11'
                }),
                selected: false,
                filterColumnValue: 'suse11',
                filtered: true
              })
            ],
            title: 'filter text set, no component for filter, show all hosts'
          },
          {
            filterText: '',
            filterComponent: Em.Object.create({
              componentName: 'c0'
            }),
            showOnlySelectedHosts: true,
            availableHosts: [
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                hostComponentNames: ['c1', 'c2'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                hostComponentNames: ['c1', 'c2'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false
              })
            ],
            result: [
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                hostComponentNames: [],
                selected: false,
                filterColumnValue: 'centos7',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                hostComponentNames: ['c1', 'c2'],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                hostComponentNames: ['c1', 'c2'],
                selected: false,
                filterColumnValue: 'centos7',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false,
                filterColumnValue: 'centos7',
                filtered: false
              })
            ],
            title: 'no filter text, component filter set, show selected hosts only'
          },
          {
            filterText: '',
            filterComponent: Em.Object.create({
              componentName: 'c1'
            }),
            showOnlySelectedHosts: false,
            availableHosts: [
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                hostComponentNames: ['c1', 'c2'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                hostComponentNames: ['c1', 'c2'],
                selected: false
              })
            ],
            result: [
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                hostComponentNames: [],
                selected: false,
                filterColumnValue: 'centos7',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false,
                filterColumnValue: 'centos7',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos6'
                }),
                hostComponentNames: ['c1', 'c2'],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  osType: 'centos7'
                }),
                hostComponentNames: ['c1', 'c2'],
                selected: false,
                filterColumnValue: 'centos7',
                filtered: true
              })
            ],
            title: 'no filter text, component filter set, show all hosts'
          },
          {
            filterText: 'n',
            filterComponent: Em.Object.create({
              componentName: 'c2'
            }),
            showOnlySelectedHosts: true,
            availableHosts: [
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h0'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h1'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn2'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn3'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h4',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h5',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn6',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn7',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h8',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h9',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn10',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn11',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h12'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h13'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn14'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn15'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h16',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h17',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn18',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn19',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h20',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h21',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn22',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn23',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h24'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h25'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn26'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn27'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h28',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h29',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn30',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn31',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h32',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h33',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn34',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn35',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false
              })
            ],
            result: [
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h0'
                }),
                hostComponentNames: [],
                selected: true,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h1'
                }),
                hostComponentNames: [],
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn2'
                }),
                hostComponentNames: [],
                selected: true,
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn3'
                }),
                hostComponentNames: [],
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h4',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h5',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: false,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn6',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn7',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: false,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h8',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: true,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h9',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn10',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: true,
                filterColumnValue: 'suse11',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn11',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h12'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h13'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn14'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn15'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h16',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h17',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn18',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn19',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h20',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h21',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn22',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn23',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h24'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h25'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn26'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true,
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn27'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h28',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h29',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn30',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn31',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h32',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h33',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn34',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: true,
                filterColumnValue: 'suse11',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn35',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c2'],
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              })
            ],
            title: 'filter text set, component filter set, show selected hosts only'
          },
          {
            filterText: 'n',
            filterComponent: Em.Object.create({
              componentName: 'c3'
            }),
            showOnlySelectedHosts: false,
            availableHosts: [
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h0'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h1'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn2'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn3'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h4',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h5',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn6',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn7',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h8',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h9',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn10',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn11',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h12'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h13'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn14'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn15'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h16',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h17',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn18',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn19',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h20',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h21',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn22',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn23',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h24'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h25'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn26'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn27'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h28',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h29',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn30',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn31',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h32',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h33',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn34',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn35',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: false
              })
            ],
            result: [
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h0'
                }),
                hostComponentNames: [],
                selected: true,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h1'
                }),
                hostComponentNames: [],
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn2'
                }),
                hostComponentNames: [],
                selected: true,
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn3'
                }),
                hostComponentNames: [],
                selected: false,
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h4',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h5',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: false,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn6',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn7',
                  osType: 'centos6'
                }),
                hostComponentNames: [],
                selected: false,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h8',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: true,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h9',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn10',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: true,
                filterColumnValue: 'suse11',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn11',
                  osType: 'suse11'
                }),
                hostComponentNames: [],
                selected: false,
                filterColumnValue: 'suse11',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h12'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h13'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn14'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn15'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h16',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h17',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn18',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn19',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false,
                filterColumnValue: 'centos6',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h20',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h21',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn22',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: true,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn23',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c1'],
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h24'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: true,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h25'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: false,
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn26'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: true,
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn27'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: false,
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h28',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h29',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: false,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn30',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: true,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn31',
                  osType: 'centos6'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: false,
                filterColumnValue: 'centos6',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h32',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: true,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'h33',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: false,
                filterColumnValue: 'suse11',
                filtered: false
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn34',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: true,
                filterColumnValue: 'suse11',
                filtered: true
              }),
              Em.Object.create({
                host: Em.Object.create({
                  publicHostName: 'hn35',
                  osType: 'suse11'
                }),
                hostComponentNames: ['c0', 'c3'],
                selected: false,
                filterColumnValue: 'suse11',
                filtered: true
              })
            ],
            title: 'filter text set, component filter set, show all hosts'
          }
        ];

        cases.forEach(function (item) {

          var arrayForCheck;

          it(item.title, function () {
            view.setProperties({
              'showOnlySelectedHosts': item.showOnlySelectedHosts,
              'filterText': item.filterText,
              'filterComponent': item.filterComponent,
              'filterColumn': {
                id: 'osType'
              },
              'parentView.availableHosts': item.availableHosts
            });
            item.result.forEach(function (host) {
              if (!host.hasOwnProperty('filterColumnValue')) {
                host.set('filterColumnValue', undefined);
              }
            });
            arrayForCheck = view.get('parentView.availableHosts').toArray();
            arrayForCheck.forEach(function (host) {
              var hostComponentNames = host.get('hostComponentNames');
              if (host.get('hostComponentNames')) {
                host.set('hostComponentNames', hostComponentNames.toArray());
              }
            });
            expect(arrayForCheck).to.eql(item.result);
          });

        });

        it('start index', function () {
          view.set('startIndex', 0);
          view.set('parentView.availableHosts', []);
          view.propertyDidChange('filterColumn');
          expect(view.get('startIndex')).to.equal(0);
        });

      });

      describe('#hostSelectMessage', function () {

        beforeEach(function () {
          sinon.stub(view, 'filterHosts', Em.K);
          sinon.stub(view, 'filteredContentObs', Em.K);
          sinon.stub(view, 'filteredContentObsOnce', Em.K);
        });

        afterEach(function () {
          view.filterHosts.restore();
          view.filteredContentObs.restore();
          view.filteredContentObsOnce.restore();
        });

        it('correct message formatting', function () {
          view.set('parentView.availableHosts', [
            {
              selected: true
            },
            {
              selected: false
            },
            {
              selected: true
            }
          ]);
          expect(view.get('hostSelectMessage')).to.equal(Em.I18n.t('hosts.selectHostsDialog.selectedHostsLink').format(2, 3));
        });

      });

      describe('#selectFilterColumn', function () {

        var columnObject = {
            selected: true
          },
          cases = [
            {
              event: null,
              filterColumn: Em.Object.create(columnObject),
              isPreviousColumnSelected: true,
              title: 'no event data'
            },
            {
              event: {},
              filterColumn: Em.Object.create(columnObject),
              isPreviousColumnSelected: true,
              title: 'no context'
            },
            {
              event: {
                context: null
              },
              filterColumn: Em.Object.create(columnObject),
              isPreviousColumnSelected: true,
              title: 'empty context'
            },
            {
              event: {
                context: Em.Object.create()
              },
              filterColumn: Em.Object.create(columnObject),
              isPreviousColumnSelected: true,
              title: 'no id'
            },
            {
              event: {
                context: Em.Object.create({
                  id: null
                })
              },
              filterColumn: Em.Object.create(columnObject),
              isPreviousColumnSelected: true,
              title: 'invalid id'
            },
            {
              event: {
                context: Em.Object.create({
                  id: 0
                })
              },
              filterColumn: Em.Object.create({
                id: 0,
                selected: true
              }),
              isPreviousColumnSelected: false,
              title: 'valid id'
            }
          ];

        cases.forEach(function (item) {

          describe(item.title, function () {

            var column = Em.Object.create(columnObject);

            beforeEach(function () {
              view.set('filterColumn', column);
              view.selectFilterColumn(item.event);
            });

            it('new column', function () {
              expect(view.get('filterColumn')).to.eql(item.filterColumn);
            });

            it('should deselect previous column', function () {
              expect(column.get('selected')).to.equal(item.isPreviousColumnSelected);
            });

          });

        });

      });

      describe('#selectFilterComponent', function () {

        var componentObject = {
            selected: true
          },
          cases = [
            {
              event: null,
              filterComponent: Em.Object.create(componentObject),
              title: 'no event data'
            },
            {
              event: {},
              filterComponent: Em.Object.create(componentObject),
              title: 'no context'
            },
            {
              event: {
                context: null
              },
              filterComponent: Em.Object.create(componentObject),
              title: 'empty context'
            },
            {
              event: {
                context: Em.Object.create()
              },
              filterComponent: Em.Object.create(componentObject),
              title: 'no component name'
            },
            {
              event: {
                context: Em.Object.create({
                  componentName: null
                })
              },
              filterComponent: Em.Object.create(componentObject),
              title: 'invalid component name'
            },
            {
              event: {
                context: Em.Object.create({
                  componentName: 'c0'
                })
              },
              filterComponent: Em.Object.create({
                componentName: 'c0',
                selected: true
              }),
              title: 'valid component name'
            },
            {
              event: {
                context: Em.Object.create({
                  componentName: 'c0'
                })
              },
              previousFilterComponent: Em.Object.create({
                componentName: 'c0',
                selected: true
              }),
              filterComponent: null,
              title: 'manual deselection'
            },
            {
              event: {
                context: Em.Object.create({
                  componentName: 'c0'
                })
              },
              previousFilterComponent: Em.Object.create({
                componentName: 'c1',
                selected: true
              }),
              filterComponent: Em.Object.create({
                componentName: 'c0',
                selected: true
              }),
              title: 'no manual deselection'
            }
          ];

        cases.forEach(function (item) {

          it(item.title, function () {
            var component = item.previousFilterComponent || Em.Object.create(componentObject);
            view.set('filterComponent', component);
            view.selectFilterComponent(item.event);
            expect(view.get('filterComponent')).to.eql(item.filterComponent);
          });

        });

      });

      describe('#toggleSelectAllHosts', function () {

        var cases = [
          {
            allHostsSelected: true,
            availableHosts: [
              {
                host: {
                  id: 'h0'
                },
                filtered: true,
                selected: true
              },
              {
                host: {
                  id: 'h1'
                },
                filtered: false
              },
              {
                host: {
                  id: 'h2'
                },
                filtered: 'true',
                selected: true
              },
              {
                host: {
                  id: 'h3'
                },
                filtered: 1,
                selected: true
              },
              {
                host: {
                  id: 'h4'
                }
              }
            ],
            title: 'select all hosts'
          },
          {
            allHostsSelected: false,
            availableHosts: [
              {
                host: {
                  id: 'h0'
                },
                filtered: true,
                selected: false
              },
              {
                host: {
                  id: 'h1'
                },
                filtered: false
              },
              {
                host: {
                  id: 'h2'
                },
                filtered: 'true',
                selected: false
              },
              {
                host: {
                  id: 'h3'
                },
                filtered: 1,
                selected: false
              },
              {
                host: {
                  id: 'h4'
                }
              }
            ],
            title: 'deselect all hosts'
          }
        ];

        beforeEach(function () {
          sinon.stub(view, 'filterHosts', Em.K);
          sinon.stub(view, 'filteredContentObs', Em.K);
          sinon.stub(view, 'filteredContentObsOnce', Em.K);
        });

        afterEach(function () {
          view.filterHosts.restore();
          view.filteredContentObs.restore();
          view.filteredContentObsOnce.restore();
        });

        cases.forEach(function (item) {

          it(item.title, function () {
            view.setProperties({
              'allHostsSelected': !item.allHostsSelected,
              'parentView.availableHosts': [
                {
                  host: {
                    id: 'h0'
                  },
                  filtered: true
                },
                {
                  host: {
                    id: 'h1'
                  },
                  filtered: false
                },
                {
                  host: {
                    id: 'h2'
                  },
                  filtered: 'true'
                },
                {
                  host: {
                    id: 'h3'
                  },
                  filtered: 1
                },
                {
                  host: {
                    id: 'h4'
                  }
                }
              ]
            });
            view.toggleProperty('allHostsSelected');
            expect(view.get('parentView.availableHosts').toArray()).to.eql(item.availableHosts);
          });

        });

      });

      describe('#toggleShowSelectedHosts', function () {

        var cases = [
          {
            showOnlySelectedHosts: true,
            title: 'no component for filter'
          },
          {
            showOnlySelectedHosts: false,
            filterComponent: null,
            title: 'empty component for filter'
          },
          {
            showOnlySelectedHosts: true,
            filterComponent: Em.Object.create(),
            title: 'component for filter set'
          }
        ];

        cases.forEach(function (item) {

          describe(item.title, function () {

            beforeEach(function () {
              view.setProperties({
                showOnlySelectedHosts: item.showOnlySelectedHosts,
                filterComponent: item.filterComponent,
                filterText: ''
              });
              view.toggleShowSelectedHosts();
            });

            it('clear component filter', function () {
              expect(view.get('filterComponent')).to.be.null;
            });

            it('clear text filter', function () {
              expect(view.get('filterText')).to.be.null;
            });

            it('toggle hosts display mode', function () {
              expect(view.get('showOnlySelectedHosts')).to.equal(!item.showOnlySelectedHosts);
            });

          });

        });

      });

    });

  });

  describe('#setRackInfo', function () {

    beforeEach(function () {
      sinon.stub(App.ModalPopup, 'show', function (obj) {
        return Em.Object.create(obj);
      });
    });

    afterEach(function () {
      App.ModalPopup.show.restore();
    });

    describe('#bodyClass', function () {

      describe('#validation', function () {

        var popup,
          view,
          cases = [
            {
              isValidRackId: false,
              errorMessage: Em.I18n.t('hostPopup.setRackId.invalid'),
              disablePrimary: true,
              title: 'invalid rack id'
            },
            {
              isValidRackId: true,
              errorMessage: '',
              disablePrimary: false,
              title: 'valid rack id'
            }
          ];

        cases.forEach(function (item) {

          describe(item.title, function () {

            beforeEach(function () {
              sinon.stub(validator, 'isValidRackId').returns(item.isValidRackId);
              popup = hostsUtils.setRackInfo(null, [], '');
              view = popup.get('bodyClass').create({
                parentView: popup
              });
              view.propertyDidChange('parentView.rackId');
            });

            afterEach(function () {
              validator.isValidRackId.restore();
            });

            it('isValid', function () {
              expect(view.get('isValid')).to.equal(item.isValidRackId);
            });

            it('errorMessage', function () {
              expect(view.get('errorMessage')).to.equal(item.errorMessage);
            });

            it('disablePrimary', function () {
              expect(view.get('parentView.disablePrimary')).to.equal(item.disablePrimary);
            });

          });

        });

      });

    });

    describe('#onPrimary', function () {

      var popup,
        cases = [
          {
            hosts: [],
            ajaxCallArguments: undefined,
            title: 'no hosts'
          },
          {
            hosts: [
              {
                hostName: 'h0'
              },
              {
                hostName: 'h1'
              }
            ],
            ajaxCallArguments: [{
              name: 'bulk_request.hosts.update_rack_id',
              sender: hostsUtils,
              data: {
                hostNames: 'h0,h1',
                requestInfo: 'msg',
                rackId: '/default-rack',
                hostNamesArray: ['h0', 'h1']
              },
              success: 'successRackId',
              error: 'errorRackId'
            }],
            title: 'hosts passed'
          }
        ];

      cases.forEach(function (item) {

        describe(item.title, function () {

          beforeEach(function () {
            popup = hostsUtils.setRackInfo({
              message: 'msg'
            }, item.hosts, '/default-rack');
            popup.set('hide', Em.K);
            sinon.spy(popup, 'hide');
            popup.onPrimary();
          });

          afterEach(function () {
            popup.hide.restore();
          });

          it('AJAX call', function () {
            expect(testHelpers.findAjaxRequest('name', 'bulk_request.hosts.update_rack_id')).to.eql(item.ajaxCallArguments);
          });

          it('hide popup', function () {
            expect(popup.hide.calledOnce).to.be.true;
          });

        });

      });

    });

  });

  describe('#successRackId', function () {

    var hosts = [
      Em.Object.create({
        hostName: 'h0'
      }),
      Em.Object.create({
        hostName: 'h1'
      }),
      Em.Object.create({
        hostName: 'h2'
      })
    ];

    beforeEach(function () {
      sinon.stub(App.Host, 'find').returns(hosts);
    });

    afterEach(function () {
      App.Host.find.restore();
    });

    it('should set rack ids for the proper hosts', function () {
      hostsUtils.successRackId(null, null, {
        hostNamesArray: ['h0', 'h2'],
        rackId: '/default-rack'
      });
      expect(hosts).to.eql([
        Em.Object.create({
          hostName: 'h0',
          rack: '/default-rack'
        }),
        Em.Object.create({
          hostName: 'h1'
        }),
        Em.Object.create({
          hostName: 'h2',
          rack: '/default-rack'
        })
      ]);
    });

  });

  describe('#errorRackId', function () {

    beforeEach(function () {
      sinon.stub(App, 'showAlertPopup', Em.K);
    });

    afterEach(function () {
      App.showAlertPopup.restore();
    });

    it('should show alert popup', function () {
      hostsUtils.errorRackId();
      expect(App.showAlertPopup.calledOnce).to.be.true;
    });

  });

});
