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:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-03-17 21:09:44 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-17 21:09:44 +0300
commit2c156e3c7bbade01c36eee18327f1ced6eebea79 (patch)
tree115fa8dbf6bc05037378b380311d31acb805f54c /spec/javascripts
parent8e129497b2565b8c595ef4f806d9a9595ca654e5 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/javascripts')
-rw-r--r--spec/javascripts/diffs/components/inline_diff_table_row_spec.js61
-rw-r--r--spec/javascripts/diffs/components/parallel_diff_table_row_spec.js62
-rw-r--r--spec/javascripts/diffs/store/actions_spec.js43
-rw-r--r--spec/javascripts/diffs/store/getters_spec.js30
-rw-r--r--spec/javascripts/diffs/store/mutations_spec.js11
5 files changed, 207 insertions, 0 deletions
diff --git a/spec/javascripts/diffs/components/inline_diff_table_row_spec.js b/spec/javascripts/diffs/components/inline_diff_table_row_spec.js
index 67443e9aecc..392893eb695 100644
--- a/spec/javascripts/diffs/components/inline_diff_table_row_spec.js
+++ b/spec/javascripts/diffs/components/inline_diff_table_row_spec.js
@@ -12,6 +12,7 @@ describe('InlineDiffTableRow', () => {
vm = createComponentWithStore(Vue.extend(InlineDiffTableRow), createStore(), {
line: thisLine,
fileHash: diffFileMockData.file_hash,
+ filePath: diffFileMockData.file_path,
contextLinesPath: 'contextLinesPath',
isHighlighted: false,
}).$mount();
@@ -39,4 +40,64 @@ describe('InlineDiffTableRow', () => {
.then(done)
.catch(done.fail);
});
+
+ describe('sets coverage title and class', () => {
+ it('for lines with coverage', done => {
+ vm.$nextTick()
+ .then(() => {
+ const name = diffFileMockData.file_path;
+ const line = thisLine.new_line;
+
+ vm.$store.state.diffs.coverageFiles = { files: { [name]: { [line]: 5 } } };
+
+ return vm.$nextTick();
+ })
+ .then(() => {
+ const coverage = vm.$el.querySelector('.line-coverage');
+
+ expect(coverage.title).toContain('Test coverage: 5 hits');
+ expect(coverage.classList).toContain('coverage');
+ })
+ .then(done)
+ .catch(done.fail);
+ });
+
+ it('for lines without coverage', done => {
+ vm.$nextTick()
+ .then(() => {
+ const name = diffFileMockData.file_path;
+ const line = thisLine.new_line;
+
+ vm.$store.state.diffs.coverageFiles = { files: { [name]: { [line]: 0 } } };
+
+ return vm.$nextTick();
+ })
+ .then(() => {
+ const coverage = vm.$el.querySelector('.line-coverage');
+
+ expect(coverage.title).toContain('No test coverage');
+ expect(coverage.classList).toContain('no-coverage');
+ })
+ .then(done)
+ .catch(done.fail);
+ });
+
+ it('for unknown lines', done => {
+ vm.$nextTick()
+ .then(() => {
+ vm.$store.state.diffs.coverageFiles = {};
+
+ return vm.$nextTick();
+ })
+ .then(() => {
+ const coverage = vm.$el.querySelector('.line-coverage');
+
+ expect(coverage.title).not.toContain('Coverage');
+ expect(coverage.classList).not.toContain('coverage');
+ expect(coverage.classList).not.toContain('no-coverage');
+ })
+ .then(done)
+ .catch(done.fail);
+ });
+ });
});
diff --git a/spec/javascripts/diffs/components/parallel_diff_table_row_spec.js b/spec/javascripts/diffs/components/parallel_diff_table_row_spec.js
index 32c947bbd8e..4e69382ba03 100644
--- a/spec/javascripts/diffs/components/parallel_diff_table_row_spec.js
+++ b/spec/javascripts/diffs/components/parallel_diff_table_row_spec.js
@@ -14,6 +14,7 @@ describe('ParallelDiffTableRow', () => {
vm = createComponentWithStore(Vue.extend(ParallelDiffTableRow), createStore(), {
line: thisLine,
fileHash: diffFileMockData.file_hash,
+ filePath: diffFileMockData.file_path,
contextLinesPath: 'contextLinesPath',
isHighlighted: false,
}).$mount();
@@ -52,6 +53,7 @@ describe('ParallelDiffTableRow', () => {
vm = createComponentWithStore(Vue.extend(ParallelDiffTableRow), createStore(), {
line: thisLine,
fileHash: diffFileMockData.file_hash,
+ filePath: diffFileMockData.file_path,
contextLinesPath: 'contextLinesPath',
isHighlighted: false,
}).$mount();
@@ -81,5 +83,65 @@ describe('ParallelDiffTableRow', () => {
.then(done)
.catch(done.fail);
});
+
+ describe('sets coverage title and class', () => {
+ it('for lines with coverage', done => {
+ vm.$nextTick()
+ .then(() => {
+ const name = diffFileMockData.file_path;
+ const line = rightLine.new_line;
+
+ vm.$store.state.diffs.coverageFiles = { files: { [name]: { [line]: 5 } } };
+
+ return vm.$nextTick();
+ })
+ .then(() => {
+ const coverage = vm.$el.querySelector('.line-coverage.right-side');
+
+ expect(coverage.title).toContain('Test coverage: 5 hits');
+ expect(coverage.classList).toContain('coverage');
+ })
+ .then(done)
+ .catch(done.fail);
+ });
+
+ it('for lines without coverage', done => {
+ vm.$nextTick()
+ .then(() => {
+ const name = diffFileMockData.file_path;
+ const line = rightLine.new_line;
+
+ vm.$store.state.diffs.coverageFiles = { files: { [name]: { [line]: 0 } } };
+
+ return vm.$nextTick();
+ })
+ .then(() => {
+ const coverage = vm.$el.querySelector('.line-coverage.right-side');
+
+ expect(coverage.title).toContain('No test coverage');
+ expect(coverage.classList).toContain('no-coverage');
+ })
+ .then(done)
+ .catch(done.fail);
+ });
+
+ it('for unknown lines', done => {
+ vm.$nextTick()
+ .then(() => {
+ vm.$store.state.diffs.coverageFiles = {};
+
+ return vm.$nextTick();
+ })
+ .then(() => {
+ const coverage = vm.$el.querySelector('.line-coverage.right-side');
+
+ expect(coverage.title).not.toContain('Coverage');
+ expect(coverage.classList).not.toContain('coverage');
+ expect(coverage.classList).not.toContain('no-coverage');
+ })
+ .then(done)
+ .catch(done.fail);
+ });
+ });
});
});
diff --git a/spec/javascripts/diffs/store/actions_spec.js b/spec/javascripts/diffs/store/actions_spec.js
index ff17d8ec158..7363a213847 100644
--- a/spec/javascripts/diffs/store/actions_spec.js
+++ b/spec/javascripts/diffs/store/actions_spec.js
@@ -12,6 +12,7 @@ import actions, {
fetchDiffFiles,
fetchDiffFilesBatch,
fetchDiffFilesMeta,
+ fetchCoverageFiles,
assignDiscussionsToDiff,
removeDiscussionsFromDiff,
startRenderDiffsQueue,
@@ -73,6 +74,7 @@ describe('DiffsStoreActions', () => {
const endpoint = '/diffs/set/endpoint';
const endpointMetadata = '/diffs/set/endpoint/metadata';
const endpointBatch = '/diffs/set/endpoint/batch';
+ const endpointCoverage = '/diffs/set/coverage_reports';
const projectPath = '/root/project';
const dismissEndpoint = '/-/user_callouts';
const showSuggestPopover = false;
@@ -84,6 +86,7 @@ describe('DiffsStoreActions', () => {
endpoint,
endpointBatch,
endpointMetadata,
+ endpointCoverage,
projectPath,
dismissEndpoint,
showSuggestPopover,
@@ -93,6 +96,7 @@ describe('DiffsStoreActions', () => {
endpoint: '',
endpointBatch: '',
endpointMetadata: '',
+ endpointCoverage: '',
projectPath: '',
dismissEndpoint: '',
showSuggestPopover: true,
@@ -105,6 +109,7 @@ describe('DiffsStoreActions', () => {
endpoint,
endpointMetadata,
endpointBatch,
+ endpointCoverage,
projectPath,
dismissEndpoint,
showSuggestPopover,
@@ -318,6 +323,44 @@ describe('DiffsStoreActions', () => {
});
});
+ describe('fetchCoverageFiles', () => {
+ let mock;
+ const endpointCoverage = '/fetch';
+
+ beforeEach(() => {
+ mock = new MockAdapter(axios);
+ });
+
+ afterEach(() => mock.restore());
+
+ it('should commit SET_COVERAGE_DATA with received response', done => {
+ const data = { files: { 'app.js': { '1': 0, '2': 1 } } };
+
+ mock.onGet(endpointCoverage).reply(200, { data });
+
+ testAction(
+ fetchCoverageFiles,
+ {},
+ { endpointCoverage },
+ [{ type: types.SET_COVERAGE_DATA, payload: { data } }],
+ [],
+ done,
+ );
+ });
+
+ it('should show flash on API error', done => {
+ const flashSpy = spyOnDependency(actions, 'createFlash');
+
+ mock.onGet(endpointCoverage).reply(400);
+
+ testAction(fetchCoverageFiles, {}, { endpointCoverage }, [], [], () => {
+ expect(flashSpy).toHaveBeenCalledTimes(1);
+ expect(flashSpy).toHaveBeenCalledWith(jasmine.stringMatching('Something went wrong'));
+ done();
+ });
+ });
+ });
+
describe('setHighlightedRow', () => {
it('should mark currently selected diff and set lineHash and fileHash of highlightedRow', () => {
testAction(setHighlightedRow, 'ABC_123', {}, [
diff --git a/spec/javascripts/diffs/store/getters_spec.js b/spec/javascripts/diffs/store/getters_spec.js
index 9e628fdd540..ca47f51cb15 100644
--- a/spec/javascripts/diffs/store/getters_spec.js
+++ b/spec/javascripts/diffs/store/getters_spec.js
@@ -282,4 +282,34 @@ describe('Diffs Module Getters', () => {
expect(getters.currentDiffIndex(localState)).toEqual(0);
});
});
+
+ describe('fileLineCoverage', () => {
+ beforeEach(() => {
+ Object.assign(localState.coverageFiles, { files: { 'app.js': { '1': 0, '2': 5 } } });
+ });
+
+ it('returns empty object when no coverage data is available', () => {
+ Object.assign(localState.coverageFiles, {});
+
+ expect(getters.fileLineCoverage(localState)('test.js', 2)).toEqual({});
+ });
+
+ it('returns empty object when unknown filename is passed', () => {
+ expect(getters.fileLineCoverage(localState)('test.js', 2)).toEqual({});
+ });
+
+ it('returns no-coverage info when correct filename and line is passed', () => {
+ expect(getters.fileLineCoverage(localState)('app.js', 1)).toEqual({
+ text: 'No test coverage',
+ class: 'no-coverage',
+ });
+ });
+
+ it('returns coverage info when correct filename and line is passed', () => {
+ expect(getters.fileLineCoverage(localState)('app.js', 2)).toEqual({
+ text: 'Test coverage: 5 hits',
+ class: 'coverage',
+ });
+ });
+ });
});
diff --git a/spec/javascripts/diffs/store/mutations_spec.js b/spec/javascripts/diffs/store/mutations_spec.js
index ffe5d89e615..c36aff39aa9 100644
--- a/spec/javascripts/diffs/store/mutations_spec.js
+++ b/spec/javascripts/diffs/store/mutations_spec.js
@@ -123,6 +123,17 @@ describe('DiffsStoreMutations', () => {
});
});
+ describe('SET_COVERAGE_DATA', () => {
+ it('should set coverage data properly', () => {
+ const state = { coverageFiles: {} };
+ const coverage = { 'app.js': { '1': 0, '2': 1 } };
+
+ mutations[types.SET_COVERAGE_DATA](state, coverage);
+
+ expect(state.coverageFiles).toEqual(coverage);
+ });
+ });
+
describe('SET_DIFF_VIEW_TYPE', () => {
it('should set diff view type properly', () => {
const state = {};