diff options
Diffstat (limited to 'spec/frontend/releases/stores/modules/detail/getters_spec.js')
-rw-r--r-- | spec/frontend/releases/stores/modules/detail/getters_spec.js | 85 |
1 files changed, 66 insertions, 19 deletions
diff --git a/spec/frontend/releases/stores/modules/detail/getters_spec.js b/spec/frontend/releases/stores/modules/detail/getters_spec.js index 8945ad97c93..2d9f35428f2 100644 --- a/spec/frontend/releases/stores/modules/detail/getters_spec.js +++ b/spec/frontend/releases/stores/modules/detail/getters_spec.js @@ -1,6 +1,20 @@ import * as getters from '~/releases/stores/modules/detail/getters'; describe('Release detail getters', () => { + describe('isExistingRelease', () => { + it('returns true if the release is an existing release that already exists in the database', () => { + const state = { tagName: 'test-tag-name' }; + + expect(getters.isExistingRelease(state)).toBe(true); + }); + + it('returns false if the release is a new release that has not yet been saved to the database', () => { + const state = { tagName: null }; + + expect(getters.isExistingRelease(state)).toBe(false); + }); + }); + describe('releaseLinksToCreate', () => { it("returns an empty array if state.release doesn't exist", () => { const state = {}; @@ -62,6 +76,7 @@ describe('Release detail getters', () => { it('returns no validation errors', () => { const state = { release: { + tagName: 'test-tag-name', assets: { links: [ { id: 1, url: 'https://example.com/valid', name: 'Link 1' }, @@ -96,6 +111,9 @@ describe('Release detail getters', () => { beforeEach(() => { const state = { release: { + // empty tag name + tagName: '', + assets: { links: [ // Duplicate URLs @@ -124,7 +142,15 @@ describe('Release detail getters', () => { actualErrors = getters.validationErrors(state); }); - it('returns a validation errors if links share a URL', () => { + it('returns a validation error if the tag name is empty', () => { + const expectedErrors = { + isTagNameEmpty: true, + }; + + expect(actualErrors).toMatchObject(expectedErrors); + }); + + it('returns a validation error if links share a URL', () => { const expectedErrors = { assets: { links: { @@ -182,32 +208,53 @@ describe('Release detail getters', () => { // the value of state is not actually used by this getter const state = {}; - it('returns true when the form is valid', () => { - const mockGetters = { - validationErrors: { - assets: { - links: { - 1: {}, + describe('when the form is valid', () => { + it('returns true', () => { + const mockGetters = { + validationErrors: { + assets: { + links: { + 1: {}, + }, }, }, - }, - }; + }; - expect(getters.isValid(state, mockGetters)).toBe(true); + expect(getters.isValid(state, mockGetters)).toBe(true); + }); }); - it('returns false when the form is invalid', () => { - const mockGetters = { - validationErrors: { - assets: { - links: { - 1: { isNameEmpty: true }, + describe('when an asset link contains a validation error', () => { + it('returns false', () => { + const mockGetters = { + validationErrors: { + assets: { + links: { + 1: { isNameEmpty: true }, + }, }, }, - }, - }; + }; - expect(getters.isValid(state, mockGetters)).toBe(false); + expect(getters.isValid(state, mockGetters)).toBe(false); + }); + }); + + describe('when the tag name is empty', () => { + it('returns false', () => { + const mockGetters = { + validationErrors: { + isTagNameEmpty: true, + assets: { + links: { + 1: {}, + }, + }, + }, + }; + + expect(getters.isValid(state, mockGetters)).toBe(false); + }); }); }); }); |