summaryrefslogtreecommitdiff
path: root/spec/javascripts/environments/confirm_rollback_modal_spec.js
blob: 05715bce38feb3fed75bc0f1a53238c9200963eb (plain)
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
import { shallowMount } from '@vue/test-utils';
import { GlModal } from '@gitlab/ui';
import ConfirmRollbackModal from '~/environments/components/confirm_rollback_modal.vue';
import eventHub from '~/environments/event_hub';

describe('Confirm Rollback Modal Component', () => {
  let environment;

  beforeEach(() => {
    environment = {
      name: 'test',
      last_deployment: {
        commit: {
          short_id: 'abc0123',
        },
      },
      modalId: 'test',
    };
  });

  it('should show "Rollback" when isLastDeployment is false', () => {
    const component = shallowMount(ConfirmRollbackModal, {
      propsData: {
        environment: {
          ...environment,
          isLastDeployment: false,
        },
      },
    });
    const modal = component.find(GlModal);

    expect(modal.attributes('title')).toContain('Rollback');
    expect(modal.attributes('title')).toContain('test');
    expect(modal.attributes('ok-title')).toBe('Rollback');
    expect(modal.text()).toContain('commit abc0123');
    expect(modal.text()).toContain('Are you sure you want to continue?');
  });

  it('should show "Re-deploy" when isLastDeployment is true', () => {
    const component = shallowMount(ConfirmRollbackModal, {
      propsData: {
        environment: {
          ...environment,
          isLastDeployment: true,
        },
      },
    });
    const modal = component.find(GlModal);

    expect(modal.attributes('title')).toContain('Re-deploy');
    expect(modal.attributes('title')).toContain('test');
    expect(modal.attributes('ok-title')).toBe('Re-deploy');
    expect(modal.text()).toContain('commit abc0123');
    expect(modal.text()).toContain('Are you sure you want to continue?');
  });

  it('should emit the "rollback" event when "ok" is clicked', () => {
    environment = { ...environment, isLastDeployment: true };
    const component = shallowMount(ConfirmRollbackModal, {
      propsData: {
        environment,
      },
    });
    const eventHubSpy = spyOn(eventHub, '$emit');
    const modal = component.find(GlModal);
    modal.vm.$emit('ok');

    expect(eventHubSpy).toHaveBeenCalledWith('rollbackEnvironment', environment);
  });
});