summaryrefslogtreecommitdiff
path: root/spec/frontend/import_entities/import_projects/components/bitbucket_status_table_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/import_entities/import_projects/components/bitbucket_status_table_spec.js')
-rw-r--r--spec/frontend/import_entities/import_projects/components/bitbucket_status_table_spec.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/spec/frontend/import_entities/import_projects/components/bitbucket_status_table_spec.js b/spec/frontend/import_entities/import_projects/components/bitbucket_status_table_spec.js
new file mode 100644
index 00000000000..8f8c01a8b81
--- /dev/null
+++ b/spec/frontend/import_entities/import_projects/components/bitbucket_status_table_spec.js
@@ -0,0 +1,59 @@
+import { nextTick } from 'vue';
+import { shallowMount } from '@vue/test-utils';
+
+import { GlAlert } from '@gitlab/ui';
+import BitbucketStatusTable from '~/import_entities/import_projects/components/bitbucket_status_table.vue';
+import ImportProjectsTable from '~/import_entities/import_projects/components/import_projects_table.vue';
+
+const ImportProjectsTableStub = {
+ name: 'ImportProjectsTable',
+ template:
+ '<div><slot name="incompatible-repos-warning"></slot><slot name="actions"></slot></div>',
+};
+
+describe('BitbucketStatusTable', () => {
+ let wrapper;
+
+ afterEach(() => {
+ if (wrapper) {
+ wrapper.destroy();
+ wrapper = null;
+ }
+ });
+
+ function createComponent(propsData, importProjectsTableStub = true, slots) {
+ wrapper = shallowMount(BitbucketStatusTable, {
+ propsData,
+ stubs: {
+ ImportProjectsTable: importProjectsTableStub,
+ },
+ slots,
+ });
+ }
+
+ it('renders import table component', () => {
+ createComponent({ providerTitle: 'Test' });
+ expect(wrapper.find(ImportProjectsTable).exists()).toBe(true);
+ });
+
+ it('passes alert in incompatible-repos-warning slot', () => {
+ createComponent({ providerTitle: 'Test' }, ImportProjectsTableStub);
+ expect(wrapper.find(GlAlert).exists()).toBe(true);
+ });
+
+ it('passes actions slot to import project table component', () => {
+ const actionsSlotContent = 'DEMO';
+ createComponent({ providerTitle: 'Test' }, ImportProjectsTableStub, {
+ actions: actionsSlotContent,
+ });
+ expect(wrapper.find(ImportProjectsTable).text()).toBe(actionsSlotContent);
+ });
+
+ it('dismisses alert when requested', async () => {
+ createComponent({ providerTitle: 'Test' }, ImportProjectsTableStub);
+ wrapper.find(GlAlert).vm.$emit('dismiss');
+ await nextTick();
+
+ expect(wrapper.find(GlAlert).exists()).toBe(false);
+ });
+});