132 lines
4.2 KiB
JavaScript
132 lines
4.2 KiB
JavaScript
import { cloneDeep } from 'lodash';
|
|
import { getJSONFixture } from 'helpers/fixtures';
|
|
import {
|
|
convertGraphQLRelease,
|
|
convertAllReleasesGraphQLResponse,
|
|
convertOneReleaseGraphQLResponse,
|
|
} from '~/releases/util';
|
|
|
|
const originalAllReleasesQueryResponse = getJSONFixture(
|
|
'graphql/releases/graphql/queries/all_releases.query.graphql.json',
|
|
);
|
|
const originalOneReleaseQueryResponse = getJSONFixture(
|
|
'graphql/releases/graphql/queries/one_release.query.graphql.json',
|
|
);
|
|
const originalOneReleaseForEditingQueryResponse = getJSONFixture(
|
|
'graphql/releases/graphql/queries/one_release_for_editing.query.graphql.json',
|
|
);
|
|
|
|
describe('releases/util.js', () => {
|
|
describe('convertGraphQLRelease', () => {
|
|
let releaseFromResponse;
|
|
let convertedRelease;
|
|
|
|
beforeEach(() => {
|
|
releaseFromResponse = cloneDeep(originalOneReleaseQueryResponse).data.project.release;
|
|
convertedRelease = convertGraphQLRelease(releaseFromResponse);
|
|
});
|
|
|
|
describe('assets', () => {
|
|
it("handles asset links that don't have a linkType", () => {
|
|
expect(convertedRelease.assets.links[0].linkType).not.toBeUndefined();
|
|
|
|
delete releaseFromResponse.assets.links.nodes[0].linkType;
|
|
|
|
convertedRelease = convertGraphQLRelease(releaseFromResponse);
|
|
|
|
expect(convertedRelease.assets.links[0].linkType).toBeUndefined();
|
|
});
|
|
|
|
it('handles assets that have no links', () => {
|
|
expect(convertedRelease.assets.links[0]).not.toBeUndefined();
|
|
|
|
delete releaseFromResponse.assets.links;
|
|
|
|
convertedRelease = convertGraphQLRelease(releaseFromResponse);
|
|
|
|
expect(convertedRelease.assets.links).toEqual([]);
|
|
});
|
|
|
|
it('handles assets that have no sources', () => {
|
|
expect(convertedRelease.assets.sources[0]).not.toBeUndefined();
|
|
|
|
delete releaseFromResponse.assets.sources;
|
|
|
|
convertedRelease = convertGraphQLRelease(releaseFromResponse);
|
|
|
|
expect(convertedRelease.assets.sources).toEqual([]);
|
|
});
|
|
});
|
|
|
|
describe('_links', () => {
|
|
it("handles releases that don't have any links", () => {
|
|
expect(convertedRelease._links.selfUrl).not.toBeUndefined();
|
|
|
|
delete releaseFromResponse.links;
|
|
|
|
convertedRelease = convertGraphQLRelease(releaseFromResponse);
|
|
|
|
expect(convertedRelease._links.selfUrl).toBeUndefined();
|
|
});
|
|
});
|
|
|
|
describe('commit', () => {
|
|
it("handles releases that don't have any commit info", () => {
|
|
expect(convertedRelease.commit).not.toBeUndefined();
|
|
|
|
delete releaseFromResponse.commit;
|
|
|
|
convertedRelease = convertGraphQLRelease(releaseFromResponse);
|
|
|
|
expect(convertedRelease.commit).toBeUndefined();
|
|
});
|
|
});
|
|
|
|
describe('milestones', () => {
|
|
it("handles releases that don't have any milestone stats", () => {
|
|
expect(convertedRelease.milestones[0].issueStats).not.toBeUndefined();
|
|
|
|
releaseFromResponse.milestones.nodes = releaseFromResponse.milestones.nodes.map((n) => ({
|
|
...n,
|
|
stats: undefined,
|
|
}));
|
|
|
|
convertedRelease = convertGraphQLRelease(releaseFromResponse);
|
|
|
|
expect(convertedRelease.milestones[0].issueStats).toEqual({});
|
|
});
|
|
});
|
|
|
|
describe('evidences', () => {
|
|
it("handles releases that don't have any evidences", () => {
|
|
expect(convertedRelease.evidences).not.toBeUndefined();
|
|
|
|
delete releaseFromResponse.evidences;
|
|
|
|
convertedRelease = convertGraphQLRelease(releaseFromResponse);
|
|
|
|
expect(convertedRelease.evidences).toEqual([]);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('convertAllReleasesGraphQLResponse', () => {
|
|
it('matches snapshot', () => {
|
|
expect(convertAllReleasesGraphQLResponse(originalAllReleasesQueryResponse)).toMatchSnapshot();
|
|
});
|
|
});
|
|
|
|
describe('convertOneReleaseGraphQLResponse', () => {
|
|
it('matches snapshot', () => {
|
|
expect(convertOneReleaseGraphQLResponse(originalOneReleaseQueryResponse)).toMatchSnapshot();
|
|
});
|
|
});
|
|
|
|
describe('convertOneReleaseForEditingGraphQLResponse', () => {
|
|
it('matches snapshot', () => {
|
|
expect(
|
|
convertOneReleaseGraphQLResponse(originalOneReleaseForEditingQueryResponse),
|
|
).toMatchSnapshot();
|
|
});
|
|
});
|
|
});
|