Skip to content
Snippets Groups Projects

Include MR version information when loading file diffs

Merged Thomas Randolph requested to merge tor/defect/mr-versions-wrong-file-diff into master
All threads resolved!
1 file
+ 43
3
Compare changes
  • Side-by-side
  • Inline
@@ -2,30 +2,70 @@ import { getDerivedMergeRequestInformation } from '~/diffs/utils/merge_request';
@@ -2,30 +2,70 @@ import { getDerivedMergeRequestInformation } from '~/diffs/utils/merge_request';
import { diffMetadata } from '../mock_data/diff_metadata';
import { diffMetadata } from '../mock_data/diff_metadata';
describe('Merge Request utilities', () => {
describe('Merge Request utilities', () => {
const derivedMrInfo = {
const derivedBaseInfo = {
mrPath: '/gitlab-org/gitlab-test/-/merge_requests/4',
mrPath: '/gitlab-org/gitlab-test/-/merge_requests/4',
userOrGroup: 'gitlab-org',
userOrGroup: 'gitlab-org',
project: 'gitlab-test',
project: 'gitlab-test',
id: '4',
id: '4',
};
};
 
const derivedVersionInfo = {
 
diffId: '4',
 
startSha: 'eb227b3e214624708c474bdab7bde7afc17cefcc',
 
};
 
const noVersion = {
 
diffId: undefined,
 
startSha: undefined,
 
};
const unparseableEndpoint = {
const unparseableEndpoint = {
mrPath: undefined,
mrPath: undefined,
userOrGroup: undefined,
userOrGroup: undefined,
project: undefined,
project: undefined,
id: undefined,
id: undefined,
 
...noVersion,
};
};
describe('getDerivedMergeRequestInformation', () => {
describe('getDerivedMergeRequestInformation', () => {
const endpoint = `${diffMetadata.latest_version_path}.json?searchParam=irrelevant`;
let endpoint = `${diffMetadata.latest_version_path}.json?searchParam=irrelevant`;
it.each`
it.each`
argument | response
argument | response
${{ endpoint }} | ${derivedMrInfo}
${{ endpoint }} | ${{ ...derivedBaseInfo, ...noVersion }}
${{}} | ${unparseableEndpoint}
${{}} | ${unparseableEndpoint}
${{ endpoint: undefined }} | ${unparseableEndpoint}
${{ endpoint: undefined }} | ${unparseableEndpoint}
${{ endpoint: null }} | ${unparseableEndpoint}
${{ endpoint: null }} | ${unparseableEndpoint}
`('generates the correct derived results based on $argument', ({ argument, response }) => {
`('generates the correct derived results based on $argument', ({ argument, response }) => {
expect(getDerivedMergeRequestInformation(argument)).toStrictEqual(response);
expect(getDerivedMergeRequestInformation(argument)).toStrictEqual(response);
});
});
 
 
describe('version information', () => {
 
const bare = diffMetadata.latest_version_path;
 
endpoint = diffMetadata.merge_request_diffs[0].compare_path;
 
 
it('still gets the correct derived information', () => {
 
expect(getDerivedMergeRequestInformation({ endpoint })).toEqual(
 
expect.objectContaining(derivedBaseInfo),
 
);
 
});
 
 
it.each`
 
url | versionPart
 
${endpoint} | ${derivedVersionInfo}
 
${`${bare}?diff_id=4`} | ${{ ...derivedVersionInfo, startSha: undefined }}
 
${`${bare}?start_sha=${derivedVersionInfo.startSha}`} | ${{ ...derivedVersionInfo, diffId: undefined }}
 
`(
 
'generates the correct derived version information based on $url',
 
({ url, versionPart }) => {
 
expect(getDerivedMergeRequestInformation({ endpoint: url })).toEqual(
 
expect.objectContaining(versionPart),
 
);
 
},
 
);
 
 
it('extracts nothing if there is no available version-like information in the URL', () => {
 
expect(getDerivedMergeRequestInformation({ endpoint: bare })).toEqual(
 
expect.objectContaining(noVersion),
 
);
 
});
 
});
});
});
});
});
Loading