diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-13 00:08:14 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-13 00:08:14 +0300 |
commit | 0df696c5f77936ecae5ea3c3f17b3e885d7dea0b (patch) | |
tree | 0c0f528f100a82402a8451b498477530efd9dc46 /spec/frontend | |
parent | 742a7f35acd8cf2150bf322e4b385ea104d74a05 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend')
3 files changed, 109 insertions, 43 deletions
diff --git a/spec/frontend/static_site_editor/components/publish_toolbar_spec.js b/spec/frontend/static_site_editor/components/publish_toolbar_spec.js index 82eb12d4c4d..5428ed23266 100644 --- a/spec/frontend/static_site_editor/components/publish_toolbar_spec.js +++ b/spec/frontend/static_site_editor/components/publish_toolbar_spec.js @@ -1,5 +1,5 @@ import { shallowMount } from '@vue/test-utils'; -import { GlButton, GlLoadingIcon } from '@gitlab/ui'; +import { GlButton } from '@gitlab/ui'; import PublishToolbar from '~/static_site_editor/components/publish_toolbar.vue'; @@ -19,7 +19,6 @@ describe('Static Site Editor Toolbar', () => { const findReturnUrlLink = () => wrapper.find({ ref: 'returnUrlLink' }); const findSaveChangesButton = () => wrapper.find(GlButton); - const findLoadingIndicator = () => wrapper.find(GlLoadingIcon); beforeEach(() => { buildWrapper(); @@ -37,8 +36,8 @@ describe('Static Site Editor Toolbar', () => { expect(findSaveChangesButton().attributes('disabled')).toBe('true'); }); - it('does not display saving changes indicator', () => { - expect(findLoadingIndicator().classes()).toContain('invisible'); + it('does not render the Submit Changes button with a loader', () => { + expect(findSaveChangesButton().props('loading')).toBe(false); }); it('does not render returnUrl link', () => { @@ -62,15 +61,11 @@ describe('Static Site Editor Toolbar', () => { describe('when saving changes', () => { beforeEach(() => { - buildWrapper({ saveable: true, savingChanges: true }); + buildWrapper({ savingChanges: true }); }); - it('disables Submit Changes button', () => { - expect(findSaveChangesButton().attributes('disabled')).toBe('true'); - }); - - it('displays saving changes indicator', () => { - expect(findLoadingIndicator().classes()).not.toContain('invisible'); + it('renders the Submit Changes button with a loading indicator', () => { + expect(findSaveChangesButton().props('loading')).toBe(true); }); }); diff --git a/spec/frontend/static_site_editor/pages/home_spec.js b/spec/frontend/static_site_editor/pages/home_spec.js index 281b764a801..a01b6d0d3a6 100644 --- a/spec/frontend/static_site_editor/pages/home_spec.js +++ b/spec/frontend/static_site_editor/pages/home_spec.js @@ -1,21 +1,17 @@ import Vuex from 'vuex'; import { shallowMount, createLocalVue } from '@vue/test-utils'; - import createState from '~/static_site_editor/store/state'; - +import { SUCCESS_ROUTE } from '~/static_site_editor/router/constants'; import Home from '~/static_site_editor/pages/home.vue'; - import SkeletonLoader from '~/static_site_editor/components/skeleton_loader.vue'; import EditArea from '~/static_site_editor/components/edit_area.vue'; import InvalidContentMessage from '~/static_site_editor/components/invalid_content_message.vue'; import SubmitChangesError from '~/static_site_editor/components/submit_changes_error.vue'; -import SavedChangesMessage from '~/static_site_editor/components/saved_changes_message.vue'; import { returnUrl, sourceContent as content, sourceContentTitle as title, - savedContentMeta, submitChangesError, } from '../mock_data'; @@ -27,6 +23,7 @@ describe('static_site_editor/pages/home', () => { let wrapper; let store; let $apollo; + let $router; let setContentActionMock; let submitChangesActionMock; let dismissSubmitChangesErrorActionMock; @@ -63,12 +60,19 @@ describe('static_site_editor/pages/home', () => { }; }; + const buildRouter = () => { + $router = { + push: jest.fn(), + }; + }; + const buildWrapper = (data = {}) => { wrapper = shallowMount(Home, { localVue, store, mocks: { $apollo, + $router, }, data() { return { @@ -83,10 +87,10 @@ describe('static_site_editor/pages/home', () => { const findInvalidContentMessage = () => wrapper.find(InvalidContentMessage); const findSkeletonLoader = () => wrapper.find(SkeletonLoader); const findSubmitChangesError = () => wrapper.find(SubmitChangesError); - const findSavedChangesMessage = () => wrapper.find(SavedChangesMessage); beforeEach(() => { buildApollo(); + buildRouter(); buildStore(); }); @@ -96,23 +100,6 @@ describe('static_site_editor/pages/home', () => { $apollo = null; }); - it('renders the saved changes message when changes are submitted successfully', () => { - buildStore({ initialState: { returnUrl, savedContentMeta } }); - buildWrapper(); - - expect(findSavedChangesMessage().exists()).toBe(true); - expect(findSavedChangesMessage().props()).toEqual({ - returnUrl, - ...savedContentMeta, - }); - }); - - it('does not render the saved changes message when changes are not submitted', () => { - buildWrapper(); - - expect(findSavedChangesMessage().exists()).toBe(false); - }); - describe('when content is loaded', () => { beforeEach(() => { buildStore({ initialState: { isSavingChanges: true } }); @@ -123,20 +110,14 @@ describe('static_site_editor/pages/home', () => { expect(findEditArea().exists()).toBe(true); }); - it('provides source content to the edit area', () => { + it('provides source content, returnUrl, and isSavingChanges to the edit area', () => { expect(findEditArea().props()).toMatchObject({ title, content, + returnUrl, + savingChanges: true, }); }); - - it('provides returnUrl to the edit area', () => { - expect(findEditArea().props('returnUrl')).toBe(returnUrl); - }); - - it('provides isSavingChanges to the edit area', () => { - expect(findEditArea().props('savingChanges')).toBe(true); - }); }); it('does not render edit area when content is not loaded', () => { @@ -210,6 +191,8 @@ describe('static_site_editor/pages/home', () => { const newContent = `new ${content}`; beforeEach(() => { + submitChangesActionMock.mockResolvedValueOnce(); + buildWrapper({ sourceContent: { title, content } }); findEditArea().vm.$emit('submit', { content: newContent }); }); @@ -221,5 +204,11 @@ describe('static_site_editor/pages/home', () => { it('dispatches submitChanges action', () => { expect(submitChangesActionMock).toHaveBeenCalled(); }); + + it('pushes success route when submitting changes succeeds', () => { + return wrapper.vm.$nextTick().then(() => { + expect($router.push).toHaveBeenCalledWith(SUCCESS_ROUTE); + }); + }); }); }); diff --git a/spec/frontend/static_site_editor/pages/success_spec.js b/spec/frontend/static_site_editor/pages/success_spec.js new file mode 100644 index 00000000000..87b625b5fca --- /dev/null +++ b/spec/frontend/static_site_editor/pages/success_spec.js @@ -0,0 +1,82 @@ +import Vuex from 'vuex'; +import { shallowMount, createLocalVue } from '@vue/test-utils'; +import createState from '~/static_site_editor/store/state'; +import Success from '~/static_site_editor/pages/success.vue'; +import SavedChangesMessage from '~/static_site_editor/components/saved_changes_message.vue'; +import { savedContentMeta, returnUrl } from '../mock_data'; +import { HOME_ROUTE } from '~/static_site_editor/router/constants'; + +const localVue = createLocalVue(); + +localVue.use(Vuex); + +describe('static_site_editor/pages/success', () => { + let wrapper; + let store; + let router; + + const buildRouter = () => { + router = { + push: jest.fn(), + }; + }; + + const buildStore = (initialState = {}) => { + store = new Vuex.Store({ + state: createState({ + savedContentMeta, + returnUrl, + ...initialState, + }), + }); + }; + + const buildWrapper = () => { + wrapper = shallowMount(Success, { + localVue, + store, + mocks: { + $router: router, + }, + }); + }; + + const findSavedChangesMessage = () => wrapper.find(SavedChangesMessage); + + beforeEach(() => { + buildRouter(); + buildStore(); + }); + + afterEach(() => { + wrapper.destroy(); + wrapper = null; + }); + + it('renders saved changes message', () => { + buildWrapper(); + + expect(findSavedChangesMessage().exists()).toBe(true); + }); + + it('passes returnUrl to the saved changes message', () => { + buildWrapper(); + + expect(findSavedChangesMessage().props('returnUrl')).toBe(returnUrl); + }); + + it('passes saved content metadata to the saved changes message', () => { + buildWrapper(); + + expect(findSavedChangesMessage().props('branch')).toBe(savedContentMeta.branch); + expect(findSavedChangesMessage().props('commit')).toBe(savedContentMeta.commit); + expect(findSavedChangesMessage().props('mergeRequest')).toBe(savedContentMeta.mergeRequest); + }); + + it('redirects to the HOME route when content has not been submitted', () => { + buildStore({ savedContentMeta: null }); + buildWrapper(); + + expect(router.push).toHaveBeenCalledWith(HOME_ROUTE); + }); +}); |