actionbardeleteitem_component_test.js 2.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
// Copyright 2015 Google Inc. All Rights Reserved.
//
// Licensed 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.

import {breadcrumbsConfig} from 'common/components/breadcrumbs/breadcrumbs_service';
import componentsModule from 'common/components/components_module';

describe('Actionbar delete item component', () => {
  /** @type {BreadcrumbsController} */
  let ctrl;
  /** @type {ui.router.$state} */
  let state;
  /** @type !{!common/resource/verber_service.VerberService} */
  let kdResourceVerberService;
  /** @type {!angular.$q} **/
  let q;
  /** @type {!angular.$scope} **/
  let scope;

  /**
   * Create simple mock object for state.
   *
   * @param {string} stateName
   * @param {string} stateLabel
   * @param {string} stateParent
   * @return {{name: string, kdBreadcrumbs: {label: string}}}
   */
  function getStateMock(stateName, stateLabel, stateParent) {
    return {
      name: stateName,
      data: {
        [breadcrumbsConfig]: {
          label: stateLabel,
          parent: stateParent,
        },
      },
    };
  }

  beforeEach(() => {
    angular.mock.module(componentsModule.name);

    angular.mock.inject(
        ($componentController, $state, _kdBreadcrumbsService_, _kdResourceVerberService_, $q,
         $rootScope) => {
          state = $state;
          kdResourceVerberService = _kdResourceVerberService_;
          q = $q;
          scope = $rootScope.$new();
          ctrl = $componentController(
              'kdActionbarDeleteItem', {
                $state: state,
                kdBreadcrumbsService: _kdBreadcrumbsService_,
                kdResourceVerberService: _kdResourceVerberService_,
              },
              {
                resourceKindName: 'resource',
                typeMeta: {},
                objectMeta: {},
              });
        });
  });

  it('should go to parent state on delete success', () => {
    // given
    let deferred = q.defer();
    let httpStatusOk = 200;
    spyOn(kdResourceVerberService, 'showDeleteDialog').and.returnValue(deferred.promise);
    spyOn(state, 'go');
    state.$current = getStateMock('testState', 'testLabel', 'testParent');

    // when
    ctrl.remove();
    deferred.resolve(httpStatusOk);
    scope.$digest();

    // then
    expect(state.go).toHaveBeenCalledWith('testParent');
  });
});