environment_table_spec.js.es6 2.76 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
const EnvironmentTable = require('~/environments/components/environments_table');

describe('Environment item', () => {
  preloadFixtures('static/environments/element.html.raw');
  beforeEach(() => {
    loadFixtures('static/environments/element.html.raw');
  });

  it('Should render a table', () => {
    const mockItem = {
      name: 'review',
Filipa Lacerda's avatar
Filipa Lacerda committed
12
      folderName: 'review',
13 14
      size: 3,
      isFolder: true,
Filipa Lacerda's avatar
Filipa Lacerda committed
15
      environment_path: 'url',
16 17 18 19 20
    };

    const component = new EnvironmentTable({
      el: document.querySelector('.test-dom-element'),
      propsData: {
Filipa Lacerda's avatar
Filipa Lacerda committed
21
        environments: [mockItem],
22 23
        canCreateDeployment: false,
        canReadEnvironment: true,
Filipa Lacerda's avatar
Filipa Lacerda committed
24 25 26
        toggleDeployBoard: () => {},
        store: {},
        service: {},
27 28 29 30 31
      },
    });

    expect(component.$el.tagName).toEqual('TABLE');
  });
Filipa Lacerda's avatar
Filipa Lacerda committed
32 33 34 35 36 37 38

  it('should render deploy board container when data is provided', () => {
    const mockItem = {
      name: 'review',
      size: 1,
      environment_path: 'url',
      id: 1,
39 40
      rollout_status: 'url',
      hasDeployBoard: true,
Filipa Lacerda's avatar
Filipa Lacerda committed
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
      deployBoardData: {
        instances: [
          { status: 'ready', tooltip: 'foo' },
        ],
        abort_url: 'url',
        rollback_url: 'url',
        completion: 100,
        is_completed: true,
      },
      isDeployBoardVisible: true,
    };

    const component = new EnvironmentTable({
      el: document.querySelector('.test-dom-element'),
      propsData: {
        environments: [mockItem],
        canCreateDeployment: true,
        canReadEnvironment: true,
        toggleDeployBoard: () => {},
        store: {},
        service: {},
      },
    });

    expect(component.$el.querySelector('.js-deploy-board-row')).toBeDefined();
Filipa Lacerda's avatar
Filipa Lacerda committed
66 67 68
    expect(
      component.$el.querySelector('.deploy-board-icon i').classList.contains('fa-caret-right'),
    ).toEqual(true);
Filipa Lacerda's avatar
Filipa Lacerda committed
69 70 71 72 73 74 75 76
  });

  it('should toggle deploy board visibility when arrow is clicked', () => {
    const mockItem = {
      name: 'review',
      size: 1,
      environment_path: 'url',
      id: 1,
77 78
      rollout_status: 'url',
      hasDeployBoard: true,
Filipa Lacerda's avatar
Filipa Lacerda committed
79 80 81 82 83 84 85 86 87 88 89 90
      deployBoardData: {
        instances: [
          { status: 'ready', tooltip: 'foo' },
        ],
        abort_url: 'url',
        rollback_url: 'url',
        completion: 100,
        is_completed: true,
      },
      isDeployBoardVisible: false,
    };

Filipa Lacerda's avatar
Filipa Lacerda committed
91 92
    const spy = jasmine.createSpy('spy');

Filipa Lacerda's avatar
Filipa Lacerda committed
93 94 95 96 97 98
    const component = new EnvironmentTable({
      el: document.querySelector('.test-dom-element'),
      propsData: {
        environments: [mockItem],
        canCreateDeployment: true,
        canReadEnvironment: true,
Filipa Lacerda's avatar
Filipa Lacerda committed
99
        toggleDeployBoard: spy,
Filipa Lacerda's avatar
Filipa Lacerda committed
100 101 102 103 104 105 106
        store: {},
        service: {},
      },
    });

    component.$el.querySelector('.deploy-board-icon').click();

Filipa Lacerda's avatar
Filipa Lacerda committed
107
    expect(spy).toHaveBeenCalled();
Filipa Lacerda's avatar
Filipa Lacerda committed
108
  });
109
});