diff options
Diffstat (limited to 'spec/frontend/environments/environment_delete_spec.js')
-rw-r--r-- | spec/frontend/environments/environment_delete_spec.js | 64 |
1 files changed, 49 insertions, 15 deletions
diff --git a/spec/frontend/environments/environment_delete_spec.js b/spec/frontend/environments/environment_delete_spec.js index 2d8cff0c74a..057cb9858c4 100644 --- a/spec/frontend/environments/environment_delete_spec.js +++ b/spec/frontend/environments/environment_delete_spec.js @@ -1,37 +1,71 @@ import { GlDropdownItem } from '@gitlab/ui'; - import { shallowMount } from '@vue/test-utils'; +import Vue from 'vue'; +import VueApollo from 'vue-apollo'; +import setEnvironmentToDelete from '~/environments/graphql/mutations/set_environment_to_delete.mutation.graphql'; import DeleteComponent from '~/environments/components/environment_delete.vue'; import eventHub from '~/environments/event_hub'; +import createMockApollo from 'helpers/mock_apollo_helper'; +import { resolvedEnvironment } from './graphql/mock_data'; describe('External URL Component', () => { let wrapper; - const createWrapper = () => { + const createWrapper = (props = {}, options = {}) => { wrapper = shallowMount(DeleteComponent, { + ...options, propsData: { - environment: {}, + environment: resolvedEnvironment, + ...props, }, }); }; const findDropdownItem = () => wrapper.find(GlDropdownItem); - beforeEach(() => { - jest.spyOn(window, 'confirm'); + describe('event hub', () => { + beforeEach(() => { + createWrapper(); + }); - createWrapper(); - }); + it('should render a dropdown item to delete the environment', () => { + expect(findDropdownItem().exists()).toBe(true); + expect(wrapper.text()).toEqual('Delete environment'); + expect(findDropdownItem().attributes('variant')).toBe('danger'); + }); - it('should render a dropdown item to delete the environment', () => { - expect(findDropdownItem().exists()).toBe(true); - expect(wrapper.text()).toEqual('Delete environment'); - expect(findDropdownItem().attributes('variant')).toBe('danger'); + it('emits requestDeleteEnvironment in the event hub when button is clicked', () => { + jest.spyOn(eventHub, '$emit'); + findDropdownItem().vm.$emit('click'); + expect(eventHub.$emit).toHaveBeenCalledWith('requestDeleteEnvironment', resolvedEnvironment); + }); }); - it('emits requestDeleteEnvironment in the event hub when button is clicked', () => { - jest.spyOn(eventHub, '$emit'); - findDropdownItem().vm.$emit('click'); - expect(eventHub.$emit).toHaveBeenCalledWith('requestDeleteEnvironment', wrapper.vm.environment); + describe('graphql', () => { + Vue.use(VueApollo); + let mockApollo; + + beforeEach(() => { + mockApollo = createMockApollo(); + createWrapper( + { graphql: true, environment: resolvedEnvironment }, + { apolloProvider: mockApollo }, + ); + }); + + it('should render a dropdown item to delete the environment', () => { + expect(findDropdownItem().exists()).toBe(true); + expect(wrapper.text()).toEqual('Delete environment'); + expect(findDropdownItem().attributes('variant')).toBe('danger'); + }); + + it('emits requestDeleteEnvironment in the event hub when button is clicked', () => { + jest.spyOn(mockApollo.defaultClient, 'mutate'); + findDropdownItem().vm.$emit('click'); + expect(mockApollo.defaultClient.mutate).toHaveBeenCalledWith({ + mutation: setEnvironmentToDelete, + variables: { environment: resolvedEnvironment }, + }); + }); }); }); |