summaryrefslogtreecommitdiff
path: root/spec/frontend/vue_shared/components/markdown/toolbar_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/vue_shared/components/markdown/toolbar_spec.js')
-rw-r--r--spec/frontend/vue_shared/components/markdown/toolbar_spec.js64
1 files changed, 52 insertions, 12 deletions
diff --git a/spec/frontend/vue_shared/components/markdown/toolbar_spec.js b/spec/frontend/vue_shared/components/markdown/toolbar_spec.js
index e7c31014bfc..eddc4033a65 100644
--- a/spec/frontend/vue_shared/components/markdown/toolbar_spec.js
+++ b/spec/frontend/vue_shared/components/markdown/toolbar_spec.js
@@ -1,35 +1,75 @@
-import Vue from 'vue';
-import mountComponent from 'helpers/vue_mount_component_helper';
-import toolbar from '~/vue_shared/components/markdown/toolbar.vue';
+import { mount } from '@vue/test-utils';
+import { isExperimentVariant } from '~/experimentation/utils';
+import InviteMembersTrigger from '~/invite_members/components/invite_members_trigger.vue';
+import { INVITE_MEMBERS_IN_COMMENT } from '~/invite_members/constants';
+import Toolbar from '~/vue_shared/components/markdown/toolbar.vue';
+
+jest.mock('~/experimentation/utils', () => ({ isExperimentVariant: jest.fn() }));
describe('toolbar', () => {
- let vm;
- const Toolbar = Vue.extend(toolbar);
- const props = {
- markdownDocsPath: '',
+ let wrapper;
+
+ const createMountedWrapper = (props = {}) => {
+ wrapper = mount(Toolbar, {
+ propsData: { markdownDocsPath: '', ...props },
+ stubs: { 'invite-members-trigger': true },
+ });
};
afterEach(() => {
- vm.$destroy();
+ wrapper.destroy();
+ isExperimentVariant.mockReset();
});
describe('user can attach file', () => {
beforeEach(() => {
- vm = mountComponent(Toolbar, props);
+ createMountedWrapper();
});
it('should render uploading-container', () => {
- expect(vm.$el.querySelector('.uploading-container')).not.toBeNull();
+ expect(wrapper.vm.$el.querySelector('.uploading-container')).not.toBeNull();
});
});
describe('user cannot attach file', () => {
beforeEach(() => {
- vm = mountComponent(Toolbar, { ...props, canAttachFile: false });
+ createMountedWrapper({ canAttachFile: false });
});
it('should not render uploading-container', () => {
- expect(vm.$el.querySelector('.uploading-container')).toBeNull();
+ expect(wrapper.vm.$el.querySelector('.uploading-container')).toBeNull();
+ });
+ });
+
+ describe('user can invite member', () => {
+ const findInviteLink = () => wrapper.find(InviteMembersTrigger);
+
+ beforeEach(() => {
+ isExperimentVariant.mockReturnValue(true);
+ createMountedWrapper();
+ });
+
+ it('should render the invite members trigger', () => {
+ expect(findInviteLink().exists()).toBe(true);
+ });
+
+ it('should have correct props', () => {
+ expect(findInviteLink().props().displayText).toBe('Invite Member');
+ expect(findInviteLink().props().trackExperiment).toBe(INVITE_MEMBERS_IN_COMMENT);
+ expect(findInviteLink().props().triggerSource).toBe(INVITE_MEMBERS_IN_COMMENT);
+ });
+ });
+
+ describe('user can not invite member', () => {
+ const findInviteLink = () => wrapper.find(InviteMembersTrigger);
+
+ beforeEach(() => {
+ isExperimentVariant.mockReturnValue(false);
+ createMountedWrapper();
+ });
+
+ it('should render the invite members trigger', () => {
+ expect(findInviteLink().exists()).toBe(false);
});
});
});