summaryrefslogtreecommitdiff
path: root/spec/frontend/terraform/components/states_table_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/terraform/components/states_table_spec.js')
-rw-r--r--spec/frontend/terraform/components/states_table_spec.js41
1 files changed, 32 insertions, 9 deletions
diff --git a/spec/frontend/terraform/components/states_table_spec.js b/spec/frontend/terraform/components/states_table_spec.js
index fa9c8320b4f..16ffd2b7013 100644
--- a/spec/frontend/terraform/components/states_table_spec.js
+++ b/spec/frontend/terraform/components/states_table_spec.js
@@ -2,6 +2,8 @@ import { GlBadge, GlLoadingIcon, GlTooltip } from '@gitlab/ui';
import { mount } from '@vue/test-utils';
import { nextTick } from 'vue';
import { useFakeDate } from 'helpers/fake_date';
+import { createMockDirective, getBinding } from 'helpers/vue_mock_directive';
+import { extendedWrapper } from 'helpers/vue_test_utils_helper';
import StatesTable from '~/terraform/components/states_table.vue';
import StateActions from '~/terraform/components/states_table_actions.vue';
@@ -104,11 +106,31 @@ describe('StatesTable', () => {
updatedAt: '2020-10-10T00:00:00Z',
latestVersion: null,
},
+ {
+ _showDetails: false,
+ errorMessages: [],
+ name: 'state-6',
+ loadingLock: false,
+ loadingRemove: false,
+ lockedAt: null,
+ lockedByUser: null,
+ updatedAt: '2020-10-10T00:00:00Z',
+ deletedAt: '2022-02-02T00:00:00Z',
+ latestVersion: null,
+ },
],
};
const createComponent = async (propsData = defaultProps) => {
- wrapper = mount(StatesTable, { propsData });
+ wrapper = extendedWrapper(
+ mount(StatesTable, {
+ propsData,
+ provide: { projectPath: 'path/to/project' },
+ directives: {
+ GlTooltip: createMockDirective(),
+ },
+ }),
+ );
await nextTick();
};
@@ -124,27 +146,28 @@ describe('StatesTable', () => {
});
it.each`
- name | toolTipText | locked | loading | lineNumber
+ name | toolTipText | hasBadge | loading | lineNumber
${'state-1'} | ${'Locked by user-1 2 days ago'} | ${true} | ${false} | ${0}
${'state-2'} | ${'Locking state'} | ${false} | ${true} | ${1}
${'state-3'} | ${'Unlocking state'} | ${false} | ${true} | ${2}
${'state-4'} | ${'Locked by Unknown User 5 days ago'} | ${true} | ${false} | ${3}
${'state-5'} | ${'Removing'} | ${false} | ${true} | ${4}
+ ${'state-6'} | ${'Deletion in progress'} | ${true} | ${false} | ${5}
`(
'displays the name and locked information "$name" for line "$lineNumber"',
- ({ name, toolTipText, locked, loading, lineNumber }) => {
+ ({ name, toolTipText, hasBadge, loading, lineNumber }) => {
const states = wrapper.findAll('[data-testid="terraform-states-table-name"]');
-
const state = states.at(lineNumber);
- const toolTip = state.find(GlTooltip);
expect(state.text()).toContain(name);
- expect(state.find(GlBadge).exists()).toBe(locked);
+ expect(state.find(GlBadge).exists()).toBe(hasBadge);
expect(state.find(GlLoadingIcon).exists()).toBe(loading);
- expect(toolTip.exists()).toBe(locked);
- if (locked) {
- expect(toolTip.text()).toMatchInterpolatedText(toolTipText);
+ if (hasBadge) {
+ const badge = wrapper.findByTestId(`state-badge-${name}`);
+
+ expect(getBinding(badge.element, 'gl-tooltip')).toBeDefined();
+ expect(badge.attributes('title')).toMatchInterpolatedText(toolTipText);
}
},
);