summaryrefslogtreecommitdiff
path: root/spec/frontend/boards/components/board_top_bar_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/boards/components/board_top_bar_spec.js')
-rw-r--r--spec/frontend/boards/components/board_top_bar_spec.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/spec/frontend/boards/components/board_top_bar_spec.js b/spec/frontend/boards/components/board_top_bar_spec.js
new file mode 100644
index 00000000000..997768a0cc7
--- /dev/null
+++ b/spec/frontend/boards/components/board_top_bar_spec.js
@@ -0,0 +1,88 @@
+import { shallowMount } from '@vue/test-utils';
+import Vue from 'vue';
+import Vuex from 'vuex';
+
+import BoardTopBar from '~/boards/components/board_top_bar.vue';
+import BoardAddNewColumnTrigger from '~/boards/components/board_add_new_column_trigger.vue';
+import BoardsSelector from '~/boards/components/boards_selector.vue';
+import ConfigToggle from '~/boards/components/config_toggle.vue';
+import IssueBoardFilteredSearch from '~/boards/components/issue_board_filtered_search.vue';
+import NewBoardButton from '~/boards/components/new_board_button.vue';
+import ToggleFocus from '~/boards/components/toggle_focus.vue';
+
+describe('BoardTopBar', () => {
+ let wrapper;
+
+ Vue.use(Vuex);
+
+ const createStore = ({ mockGetters = {} } = {}) => {
+ return new Vuex.Store({
+ state: {},
+ getters: {
+ isEpicBoard: () => false,
+ ...mockGetters,
+ },
+ });
+ };
+
+ const createComponent = ({ provide = {}, mockGetters = {} } = {}) => {
+ const store = createStore({ mockGetters });
+ wrapper = shallowMount(BoardTopBar, {
+ store,
+ provide: {
+ swimlanesFeatureAvailable: false,
+ canAdminList: false,
+ isSignedIn: false,
+ fullPath: 'gitlab-org',
+ boardType: 'group',
+ releasesFetchPath: '/releases',
+ ...provide,
+ },
+ stubs: { IssueBoardFilteredSearch },
+ });
+ };
+
+ afterEach(() => {
+ wrapper.destroy();
+ });
+
+ describe('base template', () => {
+ beforeEach(() => {
+ createComponent();
+ });
+
+ it('renders BoardsSelector component', () => {
+ expect(wrapper.findComponent(BoardsSelector).exists()).toBe(true);
+ });
+
+ it('renders IssueBoardFilteredSearch component', () => {
+ expect(wrapper.findComponent(IssueBoardFilteredSearch).exists()).toBe(true);
+ });
+
+ it('renders NewBoardButton component', () => {
+ expect(wrapper.findComponent(NewBoardButton).exists()).toBe(true);
+ });
+
+ it('renders ConfigToggle component', () => {
+ expect(wrapper.findComponent(ConfigToggle).exists()).toBe(true);
+ });
+
+ it('renders ToggleFocus component', () => {
+ expect(wrapper.findComponent(ToggleFocus).exists()).toBe(true);
+ });
+
+ it('does not render BoardAddNewColumnTrigger component', () => {
+ expect(wrapper.findComponent(BoardAddNewColumnTrigger).exists()).toBe(false);
+ });
+ });
+
+ describe('when user can admin list', () => {
+ beforeEach(() => {
+ createComponent({ provide: { canAdminList: true } });
+ });
+
+ it('renders BoardAddNewColumnTrigger component', () => {
+ expect(wrapper.findComponent(BoardAddNewColumnTrigger).exists()).toBe(true);
+ });
+ });
+});