diff options
Diffstat (limited to 'spec/frontend/releases/stores')
3 files changed, 0 insertions, 283 deletions
diff --git a/spec/frontend/releases/stores/modules/list/actions_spec.js b/spec/frontend/releases/stores/modules/list/actions_spec.js deleted file mode 100644 index 91406f7e2f4..00000000000 --- a/spec/frontend/releases/stores/modules/list/actions_spec.js +++ /dev/null @@ -1,197 +0,0 @@ -import { cloneDeep } from 'lodash'; -import originalGraphqlReleasesResponse from 'test_fixtures/graphql/releases/graphql/queries/all_releases.query.graphql.json'; -import testAction from 'helpers/vuex_action_helper'; -import { PAGE_SIZE } from '~/releases/constants'; -import allReleasesQuery from '~/releases/graphql/queries/all_releases.query.graphql'; -import { - fetchReleases, - receiveReleasesError, - setSorting, -} from '~/releases/stores/modules/index/actions'; -import * as types from '~/releases/stores/modules/index/mutation_types'; -import createState from '~/releases/stores/modules/index/state'; -import { gqClient, convertAllReleasesGraphQLResponse } from '~/releases/util'; - -describe('Releases State actions', () => { - let mockedState; - let graphqlReleasesResponse; - - const projectPath = 'root/test-project'; - const projectId = 19; - const before = 'testBeforeCursor'; - const after = 'testAfterCursor'; - - beforeEach(() => { - mockedState = { - ...createState({ - projectId, - projectPath, - }), - }; - - graphqlReleasesResponse = cloneDeep(originalGraphqlReleasesResponse); - }); - - describe('fetchReleases', () => { - describe('GraphQL query variables', () => { - let vuexParams; - - beforeEach(() => { - jest.spyOn(gqClient, 'query'); - - vuexParams = { dispatch: jest.fn(), commit: jest.fn(), state: mockedState }; - }); - - describe('when neither a before nor an after parameter is provided', () => { - beforeEach(() => { - fetchReleases(vuexParams, { before: undefined, after: undefined }); - }); - - it('makes a GraphQl query with a first variable', () => { - expect(gqClient.query).toHaveBeenCalledWith({ - query: allReleasesQuery, - variables: { fullPath: projectPath, first: PAGE_SIZE, sort: 'RELEASED_AT_DESC' }, - }); - }); - }); - - describe('when only a before parameter is provided', () => { - beforeEach(() => { - fetchReleases(vuexParams, { before, after: undefined }); - }); - - it('makes a GraphQl query with last and before variables', () => { - expect(gqClient.query).toHaveBeenCalledWith({ - query: allReleasesQuery, - variables: { fullPath: projectPath, last: PAGE_SIZE, before, sort: 'RELEASED_AT_DESC' }, - }); - }); - }); - - describe('when only an after parameter is provided', () => { - beforeEach(() => { - fetchReleases(vuexParams, { before: undefined, after }); - }); - - it('makes a GraphQl query with first and after variables', () => { - expect(gqClient.query).toHaveBeenCalledWith({ - query: allReleasesQuery, - variables: { fullPath: projectPath, first: PAGE_SIZE, after, sort: 'RELEASED_AT_DESC' }, - }); - }); - }); - - describe('when both before and after parameters are provided', () => { - it('throws an error', () => { - const callFetchReleases = () => { - fetchReleases(vuexParams, { before, after }); - }; - - expect(callFetchReleases).toThrowError( - 'Both a `before` and an `after` parameter were provided to fetchReleases. These parameters cannot be used together.', - ); - }); - }); - - describe('when the sort parameters are provided', () => { - it.each` - sort | orderBy | ReleaseSort - ${'asc'} | ${'released_at'} | ${'RELEASED_AT_ASC'} - ${'desc'} | ${'released_at'} | ${'RELEASED_AT_DESC'} - ${'asc'} | ${'created_at'} | ${'CREATED_ASC'} - ${'desc'} | ${'created_at'} | ${'CREATED_DESC'} - `( - 'correctly sets $ReleaseSort based on $sort and $orderBy', - ({ sort, orderBy, ReleaseSort }) => { - mockedState.sorting.sort = sort; - mockedState.sorting.orderBy = orderBy; - - fetchReleases(vuexParams, { before: undefined, after: undefined }); - - expect(gqClient.query).toHaveBeenCalledWith({ - query: allReleasesQuery, - variables: { fullPath: projectPath, first: PAGE_SIZE, sort: ReleaseSort }, - }); - }, - ); - }); - }); - - describe('when the request is successful', () => { - beforeEach(() => { - jest.spyOn(gqClient, 'query').mockResolvedValue(graphqlReleasesResponse); - }); - - it(`commits ${types.REQUEST_RELEASES} and ${types.RECEIVE_RELEASES_SUCCESS}`, () => { - const convertedResponse = convertAllReleasesGraphQLResponse(graphqlReleasesResponse); - - return testAction( - fetchReleases, - {}, - mockedState, - [ - { - type: types.REQUEST_RELEASES, - }, - { - type: types.RECEIVE_RELEASES_SUCCESS, - payload: { - data: convertedResponse.data, - pageInfo: convertedResponse.paginationInfo, - }, - }, - ], - [], - ); - }); - }); - - describe('when the request fails', () => { - beforeEach(() => { - jest.spyOn(gqClient, 'query').mockRejectedValue(new Error('Something went wrong!')); - }); - - it(`commits ${types.REQUEST_RELEASES} and dispatch receiveReleasesError`, () => { - return testAction( - fetchReleases, - {}, - mockedState, - [ - { - type: types.REQUEST_RELEASES, - }, - ], - [ - { - type: 'receiveReleasesError', - }, - ], - ); - }); - }); - }); - - describe('receiveReleasesError', () => { - it('should commit RECEIVE_RELEASES_ERROR mutation', () => { - return testAction( - receiveReleasesError, - null, - mockedState, - [{ type: types.RECEIVE_RELEASES_ERROR }], - [], - ); - }); - }); - - describe('setSorting', () => { - it('should commit SET_SORTING', () => { - return testAction( - setSorting, - { orderBy: 'released_at', sort: 'asc' }, - null, - [{ type: types.SET_SORTING, payload: { orderBy: 'released_at', sort: 'asc' } }], - [], - ); - }); - }); -}); diff --git a/spec/frontend/releases/stores/modules/list/helpers.js b/spec/frontend/releases/stores/modules/list/helpers.js deleted file mode 100644 index 6669f44aa95..00000000000 --- a/spec/frontend/releases/stores/modules/list/helpers.js +++ /dev/null @@ -1,5 +0,0 @@ -import state from '~/releases/stores/modules/index/state'; - -export const resetStore = (store) => { - store.replaceState(state()); -}; diff --git a/spec/frontend/releases/stores/modules/list/mutations_spec.js b/spec/frontend/releases/stores/modules/list/mutations_spec.js deleted file mode 100644 index 49e324c28a5..00000000000 --- a/spec/frontend/releases/stores/modules/list/mutations_spec.js +++ /dev/null @@ -1,81 +0,0 @@ -import originalRelease from 'test_fixtures/api/releases/release.json'; -import graphqlReleasesResponse from 'test_fixtures/graphql/releases/graphql/queries/all_releases.query.graphql.json'; -import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; -import * as types from '~/releases/stores/modules/index/mutation_types'; -import mutations from '~/releases/stores/modules/index/mutations'; -import createState from '~/releases/stores/modules/index/state'; -import { convertAllReleasesGraphQLResponse } from '~/releases/util'; - -const originalReleases = [originalRelease]; - -describe('Releases Store Mutations', () => { - let stateCopy; - let pageInfo; - let releases; - - beforeEach(() => { - stateCopy = createState({}); - pageInfo = convertAllReleasesGraphQLResponse(graphqlReleasesResponse).paginationInfo; - releases = convertObjectPropsToCamelCase(originalReleases, { deep: true }); - }); - - describe('REQUEST_RELEASES', () => { - it('sets isLoading to true', () => { - mutations[types.REQUEST_RELEASES](stateCopy); - - expect(stateCopy.isLoading).toEqual(true); - }); - }); - - describe('RECEIVE_RELEASES_SUCCESS', () => { - beforeEach(() => { - mutations[types.RECEIVE_RELEASES_SUCCESS](stateCopy, { - pageInfo, - data: releases, - }); - }); - - it('sets is loading to false', () => { - expect(stateCopy.isLoading).toEqual(false); - }); - - it('sets hasError to false', () => { - expect(stateCopy.hasError).toEqual(false); - }); - - it('sets data', () => { - expect(stateCopy.releases).toEqual(releases); - }); - - it('sets pageInfo', () => { - expect(stateCopy.pageInfo).toEqual(pageInfo); - }); - }); - - describe('RECEIVE_RELEASES_ERROR', () => { - it('resets data', () => { - mutations[types.RECEIVE_RELEASES_SUCCESS](stateCopy, { - pageInfo, - data: releases, - }); - - mutations[types.RECEIVE_RELEASES_ERROR](stateCopy); - - expect(stateCopy.isLoading).toEqual(false); - expect(stateCopy.releases).toEqual([]); - expect(stateCopy.pageInfo).toEqual({}); - }); - }); - - describe('SET_SORTING', () => { - it('should merge the sorting object with sort value', () => { - mutations[types.SET_SORTING](stateCopy, { sort: 'asc' }); - expect(stateCopy.sorting).toEqual({ ...stateCopy.sorting, sort: 'asc' }); - }); - - it('should merge the sorting object with order_by value', () => { - mutations[types.SET_SORTING](stateCopy, { orderBy: 'created_at' }); - expect(stateCopy.sorting).toEqual({ ...stateCopy.sorting, orderBy: 'created_at' }); - }); - }); -}); |