Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-12-16 21:10:10 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-12-16 21:10:10 +0300
commitd755061465c24de58568183df5e7b826e934ae5d (patch)
treeb378078e37c3ae384ea7e3b7ca91398754fd7fac /spec/frontend/terraform
parent6364c14cc1f445d471bca118dca5af5a85b2c5dc (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/terraform')
-rw-r--r--spec/frontend/terraform/components/states_table_actions_spec.js53
1 files changed, 51 insertions, 2 deletions
diff --git a/spec/frontend/terraform/components/states_table_actions_spec.js b/spec/frontend/terraform/components/states_table_actions_spec.js
index bbbac2dd9d9..264f4b7939a 100644
--- a/spec/frontend/terraform/components/states_table_actions_spec.js
+++ b/spec/frontend/terraform/components/states_table_actions_spec.js
@@ -1,9 +1,10 @@
-import { GlDropdown } from '@gitlab/ui';
+import { GlDropdown, GlModal, GlSprintf } from '@gitlab/ui';
import { createLocalVue, shallowMount } from '@vue/test-utils';
import createMockApollo from 'jest/helpers/mock_apollo_helper';
import VueApollo from 'vue-apollo';
import StateActions from '~/terraform/components/states_table_actions.vue';
import lockStateMutation from '~/terraform/graphql/mutations/lock_state.mutation.graphql';
+import removeStateMutation from '~/terraform/graphql/mutations/remove_state.mutation.graphql';
import unlockStateMutation from '~/terraform/graphql/mutations/unlock_state.mutation.graphql';
const localVue = createLocalVue();
@@ -11,6 +12,7 @@ localVue.use(VueApollo);
describe('StatesTableActions', () => {
let lockResponse;
+ let removeResponse;
let unlockResponse;
let wrapper;
@@ -26,12 +28,17 @@ describe('StatesTableActions', () => {
const createMockApolloProvider = () => {
lockResponse = jest.fn().mockResolvedValue({ data: { terraformStateLock: { errors: [] } } });
+ removeResponse = jest
+ .fn()
+ .mockResolvedValue({ data: { terraformStateDelete: { errors: [] } } });
+
unlockResponse = jest
.fn()
.mockResolvedValue({ data: { terraformStateUnlock: { errors: [] } } });
return createMockApollo([
[lockStateMutation, lockResponse],
+ [removeStateMutation, removeResponse],
[unlockStateMutation, unlockResponse],
]);
};
@@ -43,7 +50,7 @@ describe('StatesTableActions', () => {
apolloProvider,
localVue,
propsData,
- stubs: { GlDropdown },
+ stubs: { GlDropdown, GlModal, GlSprintf },
});
return wrapper.vm.$nextTick();
@@ -52,6 +59,8 @@ describe('StatesTableActions', () => {
const findLockBtn = () => wrapper.find('[data-testid="terraform-state-lock"]');
const findUnlockBtn = () => wrapper.find('[data-testid="terraform-state-unlock"]');
const findDownloadBtn = () => wrapper.find('[data-testid="terraform-state-download"]');
+ const findRemoveBtn = () => wrapper.find('[data-testid="terraform-state-remove"]');
+ const findRemoveModal = () => wrapper.find(GlModal);
beforeEach(() => {
return createComponent();
@@ -59,6 +68,7 @@ describe('StatesTableActions', () => {
afterEach(() => {
lockResponse = null;
+ removeResponse = null;
unlockResponse = null;
wrapper.destroy();
});
@@ -137,4 +147,43 @@ describe('StatesTableActions', () => {
});
});
});
+
+ describe('remove button', () => {
+ it('displays a remove button', () => {
+ expect(findRemoveBtn().text()).toBe(StateActions.i18n.remove);
+ });
+
+ describe('when clicking the remove button', () => {
+ beforeEach(() => {
+ findRemoveBtn().vm.$emit('click');
+ return wrapper.vm.$nextTick();
+ });
+
+ it('displays a remove modal', () => {
+ expect(findRemoveModal().text()).toContain(
+ `You are about to remove the State file ${defaultProps.state.name}`,
+ );
+ });
+
+ describe('when submitting the remove modal', () => {
+ it('does not call the remove mutation when state name is missing', async () => {
+ findRemoveModal().vm.$emit('ok');
+ await wrapper.vm.$nextTick();
+
+ expect(removeResponse).not.toHaveBeenCalledWith();
+ });
+
+ it('calls the remove mutation when state name is present', async () => {
+ await wrapper.setData({ removeConfirmText: defaultProps.state.name });
+
+ findRemoveModal().vm.$emit('ok');
+ await wrapper.vm.$nextTick();
+
+ expect(removeResponse).toHaveBeenCalledWith({
+ stateID: defaultProps.state.id,
+ });
+ });
+ });
+ });
+ });
});