Made the discussion tests artificial to have them stable, mocked RAF + RIC

This commit is contained in:
Tim Zallmann 2018-09-07 09:56:49 +02:00
parent b8ecb2c7eb
commit 982da16bf2
2 changed files with 98 additions and 46 deletions

View File

@ -65,6 +65,7 @@ export const assignDiscussionsToDiff = ({ state, commit }, allLineDiscussions) =
export const removeDiscussionsFromDiff = ({ state, commit }, removeDiscussion) => {
const { fileHash } = removeDiscussion;
const selectedFile = state.diffFiles.find(file => file.fileHash === fileHash);
if (selectedFile) {
const targetLine = selectedFile.parallelDiffLines.find(
line =>

View File

@ -10,10 +10,27 @@ import * as types from '~/diffs/store/mutation_types';
import { reduceDiscussionsToLineCodes } from '~/notes/stores/utils';
import axios from '~/lib/utils/axios_utils';
import testAction from '../../helpers/vuex_action_helper';
import mockFile from '../mock_data/diff_file';
import mockDiscussion from '../mock_data/diff_discussions';
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', () => {
it('should set given endpoint and project path', done => {
const endpoint = '/diffs/set/endpoint';
@ -58,8 +75,40 @@ describe('DiffsStoreActions', () => {
describe('assignDiscussionsToDiff', () => {
it('should merge discussions into diffs', done => {
const state = { diffFiles: [Object.assign({}, mockFile)] };
const singleDiscussion = Object.assign({}, mockDiscussion);
const state = {
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]);
testAction(
@ -71,32 +120,20 @@ describe('DiffsStoreActions', () => {
type: types.SET_LINE_DISCUSSIONS,
payload: {
line: {
lineCode: '1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_2',
type: 'new',
oldLine: null,
newLine: 2,
lineCode: 'ABC_1_1',
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,
payload: {
line: {
lineCode: '1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_2',
type: 'new',
oldLine: null,
newLine: 2,
lineCode: 'ABC_1_1',
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', () => {
it('should remove discussions from diffs', done => {
const state = { diffFiles: [Object.assign({}, mockFile)] };
const singleDiscussion = Object.assign({}, mockDiscussion);
reduceDiscussionsToLineCodes([singleDiscussion]);
const state = {
diffFiles: [
{
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(
actions.removeDiscussionsFromDiff,
@ -123,27 +189,19 @@ describe('DiffsStoreActions', () => {
{
type: types.REMOVE_LINE_DISCUSSIONS,
payload: {
lineCode: '1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_2',
type: 'new',
oldLine: null,
newLine: 2,
discussions: [],
text: '+<span id="LC2" class="line" lang="plaintext"></span>\n',
richText: '<span id="LC2" class="line" lang="plaintext"></span>\n',
metaData: null,
lineCode: 'ABC_1_1',
discussions: [
{
id: 1,
},
],
},
},
{
type: types.REMOVE_LINE_DISCUSSIONS,
payload: {
lineCode: '1c497fbb3a46b78edf04cc2a2fa33f67e3ffbe2a_1_2',
type: 'new',
oldLine: null,
newLine: 2,
lineCode: 'ABC_1_1',
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', () => {
it('should set all files to RENDER_FILE', done => {
const actualRAF = global.requestAnimationFrame;
global.requestAnimationFrame = cb => {
cb();
};
const state = {
diffFiles: [
{
@ -187,8 +240,6 @@ describe('DiffsStoreActions', () => {
actions
.startRenderDiffsQueue({ state, commit: pseudoCommit })
.then(() => {
global.requestAnimationFrame = actualRAF;
expect(state.diffFiles[0].renderIt).toBeTruthy();
expect(state.diffFiles[1].renderIt).toBeTruthy();