Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/releases/stores/modules/detail/mutations_spec.js')
-rw-r--r--spec/frontend/releases/stores/modules/detail/mutations_spec.js80
1 files changed, 72 insertions, 8 deletions
diff --git a/spec/frontend/releases/stores/modules/detail/mutations_spec.js b/spec/frontend/releases/stores/modules/detail/mutations_spec.js
index d49c8854ca2..cb5a1880b0c 100644
--- a/spec/frontend/releases/stores/modules/detail/mutations_spec.js
+++ b/spec/frontend/releases/stores/modules/detail/mutations_spec.js
@@ -8,11 +8,12 @@
import createState from '~/releases/stores/modules/detail/state';
import mutations from '~/releases/stores/modules/detail/mutations';
import * as types from '~/releases/stores/modules/detail/mutation_types';
-import { release } from '../../../mock_data';
+import { release as originalRelease } from '../../../mock_data';
+import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
describe('Release detail mutations', () => {
let state;
- let releaseClone;
+ let release;
beforeEach(() => {
state = createState({
@@ -23,7 +24,7 @@ describe('Release detail mutations', () => {
markdownPreviewPath: 'path/to/markdown/preview',
updateReleaseApiDocsPath: 'path/to/api/docs',
});
- releaseClone = JSON.parse(JSON.stringify(release));
+ release = convertObjectPropsToCamelCase(originalRelease);
});
describe(types.REQUEST_RELEASE, () => {
@@ -36,13 +37,15 @@ describe('Release detail mutations', () => {
describe(types.RECEIVE_RELEASE_SUCCESS, () => {
it('handles a successful response from the server', () => {
- mutations[types.RECEIVE_RELEASE_SUCCESS](state, releaseClone);
+ mutations[types.RECEIVE_RELEASE_SUCCESS](state, release);
expect(state.fetchError).toEqual(undefined);
expect(state.isFetchingRelease).toEqual(false);
- expect(state.release).toEqual(releaseClone);
+ expect(state.release).toEqual(release);
+
+ expect(state.originalRelease).toEqual(release);
});
});
@@ -61,7 +64,7 @@ describe('Release detail mutations', () => {
describe(types.UPDATE_RELEASE_TITLE, () => {
it("updates the release's title", () => {
- state.release = releaseClone;
+ state.release = release;
const newTitle = 'The new release title';
mutations[types.UPDATE_RELEASE_TITLE](state, newTitle);
@@ -71,7 +74,7 @@ describe('Release detail mutations', () => {
describe(types.UPDATE_RELEASE_NOTES, () => {
it("updates the release's notes", () => {
- state.release = releaseClone;
+ state.release = release;
const newNotes = 'The new release notes';
mutations[types.UPDATE_RELEASE_NOTES](state, newNotes);
@@ -89,7 +92,7 @@ describe('Release detail mutations', () => {
describe(types.RECEIVE_UPDATE_RELEASE_SUCCESS, () => {
it('handles a successful response from the server', () => {
- mutations[types.RECEIVE_UPDATE_RELEASE_SUCCESS](state, releaseClone);
+ mutations[types.RECEIVE_UPDATE_RELEASE_SUCCESS](state, release);
expect(state.updateError).toEqual(undefined);
@@ -107,4 +110,65 @@ describe('Release detail mutations', () => {
expect(state.updateError).toEqual(error);
});
});
+
+ describe(types.ADD_EMPTY_ASSET_LINK, () => {
+ it('adds a new, empty link object to the release', () => {
+ state.release = release;
+
+ const linksBefore = [...state.release.assets.links];
+
+ mutations[types.ADD_EMPTY_ASSET_LINK](state);
+
+ expect(state.release.assets.links).toEqual([
+ ...linksBefore,
+ {
+ id: expect.stringMatching(/^new-link-/),
+ url: '',
+ name: '',
+ },
+ ]);
+ });
+ });
+
+ describe(types.UPDATE_ASSET_LINK_URL, () => {
+ it('updates an asset link with a new URL', () => {
+ state.release = release;
+
+ const newUrl = 'https://example.com/updated/url';
+
+ mutations[types.UPDATE_ASSET_LINK_URL](state, {
+ linkIdToUpdate: state.release.assets.links[0].id,
+ newUrl,
+ });
+
+ expect(state.release.assets.links[0].url).toEqual(newUrl);
+ });
+ });
+
+ describe(types.UPDATE_ASSET_LINK_NAME, () => {
+ it('updates an asset link with a new name', () => {
+ state.release = release;
+
+ const newName = 'Updated Link';
+
+ mutations[types.UPDATE_ASSET_LINK_NAME](state, {
+ linkIdToUpdate: state.release.assets.links[0].id,
+ newName,
+ });
+
+ expect(state.release.assets.links[0].name).toEqual(newName);
+ });
+ });
+
+ describe(types.REMOVE_ASSET_LINK, () => {
+ it('removes an asset link from the release', () => {
+ state.release = release;
+
+ const linkToRemove = state.release.assets.links[0];
+
+ mutations[types.REMOVE_ASSET_LINK](state, linkToRemove.id);
+
+ expect(state.release.assets.links).not.toContainEqual(linkToRemove);
+ });
+ });
});