diff options
Diffstat (limited to 'spec/frontend/diffs/utils')
-rw-r--r-- | spec/frontend/diffs/utils/diff_file_spec.js | 13 | ||||
-rw-r--r-- | spec/frontend/diffs/utils/file_reviews_spec.js | 48 | ||||
-rw-r--r-- | spec/frontend/diffs/utils/preferences_spec.js | 5 | ||||
-rw-r--r-- | spec/frontend/diffs/utils/suggestions_spec.js | 15 |
4 files changed, 63 insertions, 18 deletions
diff --git a/spec/frontend/diffs/utils/diff_file_spec.js b/spec/frontend/diffs/utils/diff_file_spec.js index 2de8db28e71..c6cfdfced65 100644 --- a/spec/frontend/diffs/utils/diff_file_spec.js +++ b/spec/frontend/diffs/utils/diff_file_spec.js @@ -1,4 +1,4 @@ -import { prepareRawDiffFile } from '~/diffs/utils/diff_file'; +import { prepareRawDiffFile, getShortShaFromFile } from '~/diffs/utils/diff_file'; function getDiffFiles() { const loadFull = 'namespace/project/-/merge_requests/12345/diff_for_path?file_identifier=abc'; @@ -143,4 +143,15 @@ describe('diff_file utilities', () => { expect(preppedFile).not.toHaveProp('id'); }); }); + + describe('getShortShaFromFile', () => { + it.each` + response | cs + ${'12345678'} | ${'12345678abcdogcat'} + ${null} | ${undefined} + ${'hidogcat'} | ${'hidogcatmorethings'} + `('returns $response for a file with { content_sha: $cs }', ({ response, cs }) => { + expect(getShortShaFromFile({ content_sha: cs })).toBe(response); + }); + }); }); diff --git a/spec/frontend/diffs/utils/file_reviews_spec.js b/spec/frontend/diffs/utils/file_reviews_spec.js index 819426ee75f..a58c19a7245 100644 --- a/spec/frontend/diffs/utils/file_reviews_spec.js +++ b/spec/frontend/diffs/utils/file_reviews_spec.js @@ -5,6 +5,7 @@ import { setReviewsForMergeRequest, isFileReviewed, markFileReview, + reviewStatuses, reviewable, } from '~/diffs/utils/file_reviews'; @@ -28,6 +29,39 @@ describe('File Review(s) utilities', () => { localStorage.clear(); }); + describe('isFileReviewed', () => { + it.each` + description | diffFile | fileReviews + ${'the file does not have an `id`'} | ${{ ...file, id: undefined }} | ${getDefaultReviews()} + ${'there are no reviews for the file'} | ${file} | ${{ ...getDefaultReviews(), abc: undefined }} + `('returns `false` if $description', ({ diffFile, fileReviews }) => { + expect(isFileReviewed(fileReviews, diffFile)).toBe(false); + }); + + it("returns `true` for a file if it's available in the provided reviews", () => { + expect(isFileReviewed(reviews, file)).toBe(true); + }); + }); + + describe('reviewStatuses', () => { + const file1 = { id: '123', file_identifier_hash: 'abc' }; + const file2 = { id: '098', file_identifier_hash: 'abc' }; + + it.each` + mrReviews | files | fileReviews + ${{}} | ${[file1, file2]} | ${[false, false]} + ${{ abc: ['123'] }} | ${[file1, file2]} | ${[true, false]} + ${{ abc: ['098'] }} | ${[file1, file2]} | ${[false, true]} + ${{ def: ['123'] }} | ${[file1, file2]} | ${[false, false]} + ${{ abc: ['123'], def: ['098'] }} | ${[]} | ${[]} + `( + 'returns $fileReviews based on the diff files in state and the existing reviews $reviews', + ({ mrReviews, files, fileReviews }) => { + expect(reviewStatuses(files, mrReviews)).toStrictEqual(fileReviews); + }, + ); + }); + describe('getReviewsForMergeRequest', () => { it('fetches the appropriate stored reviews from localStorage', () => { getReviewsForMergeRequest(mrPath); @@ -73,20 +107,6 @@ describe('File Review(s) utilities', () => { }); }); - describe('isFileReviewed', () => { - it.each` - description | diffFile | fileReviews - ${'the file does not have an `id`'} | ${{ ...file, id: undefined }} | ${getDefaultReviews()} - ${'there are no reviews for the file'} | ${file} | ${{ ...getDefaultReviews(), abc: undefined }} - `('returns `false` if $description', ({ diffFile, fileReviews }) => { - expect(isFileReviewed(fileReviews, diffFile)).toBe(false); - }); - - it("returns `true` for a file if it's available in the provided reviews", () => { - expect(isFileReviewed(reviews, file)).toBe(true); - }); - }); - describe('reviewable', () => { it.each` response | diffFile | description diff --git a/spec/frontend/diffs/utils/preferences_spec.js b/spec/frontend/diffs/utils/preferences_spec.js index a48db1d7512..b09db2c1003 100644 --- a/spec/frontend/diffs/utils/preferences_spec.js +++ b/spec/frontend/diffs/utils/preferences_spec.js @@ -1,12 +1,11 @@ import Cookies from 'js-cookie'; -import { getParameterValues } from '~/lib/utils/url_utility'; - -import { fileByFile } from '~/diffs/utils/preferences'; import { DIFF_FILE_BY_FILE_COOKIE_NAME, DIFF_VIEW_FILE_BY_FILE, DIFF_VIEW_ALL_FILES, } from '~/diffs/constants'; +import { fileByFile } from '~/diffs/utils/preferences'; +import { getParameterValues } from '~/lib/utils/url_utility'; jest.mock('~/lib/utils/url_utility'); diff --git a/spec/frontend/diffs/utils/suggestions_spec.js b/spec/frontend/diffs/utils/suggestions_spec.js new file mode 100644 index 00000000000..fbfe9cef857 --- /dev/null +++ b/spec/frontend/diffs/utils/suggestions_spec.js @@ -0,0 +1,15 @@ +import { computeSuggestionCommitMessage } from '~/diffs/utils/suggestions'; + +describe('Diff Suggestions utilities', () => { + describe('computeSuggestionCommitMessage', () => { + it.each` + description | input | values | output + ${'makes the appropriate replacements'} | ${'%{foo} %{bar}'} | ${{ foo: 'foo', bar: 'bar' }} | ${'foo bar'} + ${"skips replacing values that aren't passed"} | ${'%{foo} %{bar}'} | ${{ foo: 'foo' }} | ${'foo %{bar}'} + ${'treats the number 0 as a valid value (not falsey)'} | ${'%{foo} %{bar}'} | ${{ foo: 'foo', bar: 0 }} | ${'foo 0'} + ${"works when the variables don't have any space between them"} | ${'%{foo}%{bar}'} | ${{ foo: 'foo', bar: 'bar' }} | ${'foobar'} + `('$description', ({ input, output, values }) => { + expect(computeSuggestionCommitMessage({ message: input, values })).toBe(output); + }); + }); +}); |