summaryrefslogtreecommitdiff
path: root/spec/frontend/releases/stores
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/releases/stores')
-rw-r--r--spec/frontend/releases/stores/modules/list/actions_spec.js197
-rw-r--r--spec/frontend/releases/stores/modules/list/helpers.js5
-rw-r--r--spec/frontend/releases/stores/modules/list/mutations_spec.js81
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' });
- });
- });
-});