Made the discussion tests artificial to have them stable, mocked RAF + RIC
This commit is contained in:
parent
b8ecb2c7eb
commit
982da16bf2
2 changed files with 98 additions and 46 deletions
|
@ -65,6 +65,7 @@ export const assignDiscussionsToDiff = ({ state, commit }, allLineDiscussions) =
|
||||||
export const removeDiscussionsFromDiff = ({ state, commit }, removeDiscussion) => {
|
export const removeDiscussionsFromDiff = ({ state, commit }, removeDiscussion) => {
|
||||||
const { fileHash } = removeDiscussion;
|
const { fileHash } = removeDiscussion;
|
||||||
const selectedFile = state.diffFiles.find(file => file.fileHash === fileHash);
|
const selectedFile = state.diffFiles.find(file => file.fileHash === fileHash);
|
||||||
|
|
||||||
if (selectedFile) {
|
if (selectedFile) {
|
||||||
const targetLine = selectedFile.parallelDiffLines.find(
|
const targetLine = selectedFile.parallelDiffLines.find(
|
||||||
line =>
|
line =>
|
||||||
|
|
|
@ -10,10 +10,27 @@ import * as types from '~/diffs/store/mutation_types';
|
||||||
import { reduceDiscussionsToLineCodes } from '~/notes/stores/utils';
|
import { reduceDiscussionsToLineCodes } from '~/notes/stores/utils';
|
||||||
import axios from '~/lib/utils/axios_utils';
|
import axios from '~/lib/utils/axios_utils';
|
||||||
import testAction from '../../helpers/vuex_action_helper';
|
import testAction from '../../helpers/vuex_action_helper';
|
||||||
import mockFile from '../mock_data/diff_file';
|
|
||||||
import mockDiscussion from '../mock_data/diff_discussions';
|
|
||||||
|
|
||||||
describe('DiffsStoreActions', () => {
|
describe('DiffsStoreActions', () => {
|
||||||
|
const originalMethods = {
|
||||||
|
requestAnimationFrame: global.requestAnimationFrame,
|
||||||
|
requestIdleCallback: global.requestIdleCallback,
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
['requestAnimationFrame', 'requestIdleCallback'].forEach(method => {
|
||||||
|
global[method] = cb => {
|
||||||
|
cb();
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
['requestAnimationFrame', 'requestIdleCallback'].forEach(method => {
|
||||||
|
global[method] = originalMethods[method];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('setBaseConfig', () => {
|
describe('setBaseConfig', () => {
|
||||||
it('should set given endpoint and project path', done => {
|
it('should set given endpoint and project path', done => {
|
||||||
const endpoint = '/diffs/set/endpoint';
|
const endpoint = '/diffs/set/endpoint';
|
||||||
|
@ -58,8 +75,40 @@ describe('DiffsStoreActions', () => {
|
||||||
|
|
||||||
describe('assignDiscussionsToDiff', () => {
|
describe('assignDiscussionsToDiff', () => {
|
||||||
it('should merge discussions into diffs', done => {
|
it('should merge discussions into diffs', done => {
|
||||||
const state = { diffFiles: [Object.assign({}, mockFile)] };
|
const state = {
|
||||||
const singleDiscussion = Object.assign({}, mockDiscussion);
|
diffFiles: [
|
||||||
|
{
|
||||||
|
fileHash: 'ABC',
|
||||||
|
parallelDiffLines: [
|
||||||
|
{
|
||||||
|
left: {
|
||||||
|
lineCode: 'ABC_1_1',
|
||||||
|
discussions: [],
|
||||||
|
},
|
||||||
|
right: {
|
||||||
|
lineCode: 'ABC_1_1',
|
||||||
|
discussions: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
highlightedDiffLines: [
|
||||||
|
{
|
||||||
|
lineCode: 'ABC_1_1',
|
||||||
|
discussions: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
const singleDiscussion = {
|
||||||
|
line_code: 'ABC_1_1',
|
||||||
|
diff_discussion: {},
|
||||||
|
diff_file: {
|
||||||
|
file_hash: 'ABC',
|
||||||
|
},
|
||||||
|
resolvable: true,
|
||||||
|
};
|
||||||
|
|
||||||
const discussions = reduceDiscussionsToLineCodes([singleDiscussion]);
|
const discussions = reduceDiscussionsToLineCodes([singleDiscussion]);
|
||||||
|
|
||||||
testAction(
|
testAction(
|
||||||
|
@ -71,32 +120,20 @@ describe('DiffsStoreActions', () => {
|
||||||
type: types.SET_LINE_DISCUSSIONS,
|
type: types.SET_LINE_DISCUSSIONS,
|
||||||
payload: {
|
payload: {
|
||||||
line: {
|
line: {
|
||||||
lineCode: '1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_2',
|
lineCode: 'ABC_1_1',
|
||||||
type: 'new',
|
|
||||||
oldLine: null,
|
|
||||||
newLine: 2,
|
|
||||||
discussions: [],
|
discussions: [],
|
||||||
text: '+<span id="LC2" class="line" lang="plaintext"></span>\n',
|
|
||||||
richText: '<span id="LC2" class="line" lang="plaintext"></span>\n',
|
|
||||||
metaData: null,
|
|
||||||
},
|
},
|
||||||
discussions: discussions['1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_2'],
|
discussions: [singleDiscussion],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: types.SET_LINE_DISCUSSIONS,
|
type: types.SET_LINE_DISCUSSIONS,
|
||||||
payload: {
|
payload: {
|
||||||
line: {
|
line: {
|
||||||
lineCode: '1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_2',
|
lineCode: 'ABC_1_1',
|
||||||
type: 'new',
|
|
||||||
oldLine: null,
|
|
||||||
newLine: 2,
|
|
||||||
discussions: [],
|
discussions: [],
|
||||||
text: '+<span id="LC2" class="line" lang="plaintext"></span>\n',
|
|
||||||
richText: '+<span id="LC2" class="line" lang="plaintext"></span>\n',
|
|
||||||
metaData: null,
|
|
||||||
},
|
},
|
||||||
discussions: discussions['1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_2'],
|
discussions: [singleDiscussion],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -110,10 +147,39 @@ describe('DiffsStoreActions', () => {
|
||||||
|
|
||||||
describe('removeDiscussionsFromDiff', () => {
|
describe('removeDiscussionsFromDiff', () => {
|
||||||
it('should remove discussions from diffs', done => {
|
it('should remove discussions from diffs', done => {
|
||||||
const state = { diffFiles: [Object.assign({}, mockFile)] };
|
const state = {
|
||||||
const singleDiscussion = Object.assign({}, mockDiscussion);
|
diffFiles: [
|
||||||
|
{
|
||||||
reduceDiscussionsToLineCodes([singleDiscussion]);
|
fileHash: 'ABC',
|
||||||
|
parallelDiffLines: [
|
||||||
|
{
|
||||||
|
left: {
|
||||||
|
lineCode: 'ABC_1_1',
|
||||||
|
discussions: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
right: {
|
||||||
|
lineCode: 'ABC_1_1',
|
||||||
|
discussions: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
highlightedDiffLines: [
|
||||||
|
{
|
||||||
|
lineCode: 'ABC_1_1',
|
||||||
|
discussions: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
const singleDiscussion = {
|
||||||
|
fileHash: 'ABC',
|
||||||
|
line_code: 'ABC_1_1',
|
||||||
|
};
|
||||||
|
|
||||||
testAction(
|
testAction(
|
||||||
actions.removeDiscussionsFromDiff,
|
actions.removeDiscussionsFromDiff,
|
||||||
|
@ -123,27 +189,19 @@ describe('DiffsStoreActions', () => {
|
||||||
{
|
{
|
||||||
type: types.REMOVE_LINE_DISCUSSIONS,
|
type: types.REMOVE_LINE_DISCUSSIONS,
|
||||||
payload: {
|
payload: {
|
||||||
lineCode: '1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_2',
|
lineCode: 'ABC_1_1',
|
||||||
type: 'new',
|
discussions: [
|
||||||
oldLine: null,
|
{
|
||||||
newLine: 2,
|
id: 1,
|
||||||
discussions: [],
|
},
|
||||||
text: '+<span id="LC2" class="line" lang="plaintext"></span>\n',
|
],
|
||||||
richText: '<span id="LC2" class="line" lang="plaintext"></span>\n',
|
|
||||||
metaData: null,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: types.REMOVE_LINE_DISCUSSIONS,
|
type: types.REMOVE_LINE_DISCUSSIONS,
|
||||||
payload: {
|
payload: {
|
||||||
lineCode: '1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_2',
|
lineCode: 'ABC_1_1',
|
||||||
type: 'new',
|
|
||||||
oldLine: null,
|
|
||||||
newLine: 2,
|
|
||||||
discussions: [],
|
discussions: [],
|
||||||
text: '+<span id="LC2" class="line" lang="plaintext"></span>\n',
|
|
||||||
richText: '+<span id="LC2" class="line" lang="plaintext"></span>\n',
|
|
||||||
metaData: null,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -157,11 +215,6 @@ describe('DiffsStoreActions', () => {
|
||||||
|
|
||||||
describe('startRenderDiffsQueue', () => {
|
describe('startRenderDiffsQueue', () => {
|
||||||
it('should set all files to RENDER_FILE', done => {
|
it('should set all files to RENDER_FILE', done => {
|
||||||
const actualRAF = global.requestAnimationFrame;
|
|
||||||
global.requestAnimationFrame = cb => {
|
|
||||||
cb();
|
|
||||||
};
|
|
||||||
|
|
||||||
const state = {
|
const state = {
|
||||||
diffFiles: [
|
diffFiles: [
|
||||||
{
|
{
|
||||||
|
@ -187,8 +240,6 @@ describe('DiffsStoreActions', () => {
|
||||||
actions
|
actions
|
||||||
.startRenderDiffsQueue({ state, commit: pseudoCommit })
|
.startRenderDiffsQueue({ state, commit: pseudoCommit })
|
||||||
.then(() => {
|
.then(() => {
|
||||||
global.requestAnimationFrame = actualRAF;
|
|
||||||
|
|
||||||
expect(state.diffFiles[0].renderIt).toBeTruthy();
|
expect(state.diffFiles[0].renderIt).toBeTruthy();
|
||||||
expect(state.diffFiles[1].renderIt).toBeTruthy();
|
expect(state.diffFiles[1].renderIt).toBeTruthy();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue