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
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-11-17 00:06:10 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-11-17 00:06:10 +0300
commit00bfd2d81d2539e16829585f203169bdd0274bec (patch)
tree5d201485a5cda4505131396ac0c8155ae812ba8f /spec
parent409c3cb076e500968ec4c283cb388b56f3e7c9e6 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/frontend/ide/services/index_spec.js83
-rw-r--r--spec/javascripts/ide/stores/actions/file_spec.js34
-rw-r--r--spec/javascripts/ide/stores/actions/merge_request_spec.js28
-rw-r--r--spec/javascripts/ide/stores/actions/tree_spec.js18
-rw-r--r--spec/javascripts/ide/stores/getters_spec.js55
-rw-r--r--spec/javascripts/ide/stores/utils_spec.js17
6 files changed, 212 insertions, 23 deletions
diff --git a/spec/frontend/ide/services/index_spec.js b/spec/frontend/ide/services/index_spec.js
index 3d5ed4b5c0c..bb0d20bed91 100644
--- a/spec/frontend/ide/services/index_spec.js
+++ b/spec/frontend/ide/services/index_spec.js
@@ -1,11 +1,18 @@
+import axios from 'axios';
+import MockAdapter from 'axios-mock-adapter';
import services from '~/ide/services';
import Api from '~/api';
+import { escapeFileUrl } from '~/ide/stores/utils';
jest.mock('~/api');
const TEST_PROJECT_ID = 'alice/wonderland';
const TEST_BRANCH = 'master-patch-123';
const TEST_COMMIT_SHA = '123456789';
+const TEST_FILE_PATH = 'README2.md';
+const TEST_FILE_OLD_PATH = 'OLD_README2.md';
+const TEST_FILE_PATH_SPECIAL = 'READM?ME/abc';
+const TEST_FILE_CONTENTS = 'raw file content';
describe('IDE services', () => {
describe('commit', () => {
@@ -28,4 +35,80 @@ describe('IDE services', () => {
expect(Api.commitMultiple).toHaveBeenCalledWith(TEST_PROJECT_ID, payload);
});
});
+
+ describe('getBaseRawFileData', () => {
+ let file;
+ let mock;
+
+ beforeEach(() => {
+ file = {
+ mrChange: null,
+ projectId: TEST_PROJECT_ID,
+ path: TEST_FILE_PATH,
+ };
+
+ jest.spyOn(axios, 'get');
+
+ mock = new MockAdapter(axios);
+ });
+
+ afterEach(() => {
+ mock.restore();
+ });
+
+ it('gives back file.baseRaw for files with that property present', () => {
+ file.baseRaw = TEST_FILE_CONTENTS;
+
+ return services.getBaseRawFileData(file, TEST_COMMIT_SHA).then(content => {
+ expect(content).toEqual(TEST_FILE_CONTENTS);
+ });
+ });
+
+ it('gives back file.baseRaw for files for temp files', () => {
+ file.tempFile = true;
+ file.baseRaw = TEST_FILE_CONTENTS;
+
+ return services.getBaseRawFileData(file, TEST_COMMIT_SHA).then(content => {
+ expect(content).toEqual(TEST_FILE_CONTENTS);
+ });
+ });
+
+ describe.each`
+ relativeUrlRoot | filePath | isRenamed
+ ${''} | ${TEST_FILE_PATH} | ${false}
+ ${''} | ${TEST_FILE_OLD_PATH} | ${true}
+ ${''} | ${TEST_FILE_PATH_SPECIAL} | ${false}
+ ${''} | ${TEST_FILE_PATH_SPECIAL} | ${true}
+ ${'gitlab'} | ${TEST_FILE_OLD_PATH} | ${true}
+ `(
+ 'with relativeUrlRoot ($relativeUrlRoot) and filePath ($filePath) and isRenamed ($isRenamed)',
+ ({ relativeUrlRoot, filePath, isRenamed }) => {
+ beforeEach(() => {
+ if (isRenamed) {
+ file.mrChange = {
+ renamed_file: true,
+ old_path: filePath,
+ };
+ } else {
+ file.path = filePath;
+ }
+
+ gon.relative_url_root = relativeUrlRoot;
+
+ mock
+ .onGet(
+ `${relativeUrlRoot}/${TEST_PROJECT_ID}/raw/${TEST_COMMIT_SHA}/${escapeFileUrl(
+ filePath,
+ )}`,
+ )
+ .reply(200, TEST_FILE_CONTENTS);
+ });
+
+ it('fetches file content', () =>
+ services.getBaseRawFileData(file, TEST_COMMIT_SHA).then(content => {
+ expect(content).toEqual(TEST_FILE_CONTENTS);
+ }));
+ },
+ );
+ });
});
diff --git a/spec/javascripts/ide/stores/actions/file_spec.js b/spec/javascripts/ide/stores/actions/file_spec.js
index 472128ad834..03d1125c23a 100644
--- a/spec/javascripts/ide/stores/actions/file_spec.js
+++ b/spec/javascripts/ide/stores/actions/file_spec.js
@@ -182,13 +182,25 @@ describe('IDE store file actions', () => {
spyOn(service, 'getFileData').and.callThrough();
localFile = file(`newCreate-${Math.random()}`);
- localFile.url = `project/getFileDataURL`;
store.state.entries[localFile.path] = localFile;
+
+ store.state.currentProjectId = 'test/test';
+ store.state.currentBranchId = 'master';
+
+ store.state.projects['test/test'] = {
+ branches: {
+ master: {
+ commit: {
+ id: '7297abc',
+ },
+ },
+ },
+ };
});
describe('success', () => {
beforeEach(() => {
- mock.onGet(`${RELATIVE_URL_ROOT}/project/getFileDataURL`).replyOnce(
+ mock.onGet(`${RELATIVE_URL_ROOT}/test/test/7297abc/${localFile.path}`).replyOnce(
200,
{
blame_path: 'blame_path',
@@ -210,7 +222,7 @@ describe('IDE store file actions', () => {
.dispatch('getFileData', { path: localFile.path })
.then(() => {
expect(service.getFileData).toHaveBeenCalledWith(
- `${RELATIVE_URL_ROOT}/project/getFileDataURL`,
+ `${RELATIVE_URL_ROOT}/test/test/7297abc/${localFile.path}`,
);
done();
@@ -229,12 +241,11 @@ describe('IDE store file actions', () => {
.catch(done.fail);
});
- it('sets document title', done => {
+ it('sets document title with the branchId', done => {
store
.dispatch('getFileData', { path: localFile.path })
.then(() => {
- expect(document.title).toBe('testing getFileData');
-
+ expect(document.title).toBe(`${localFile.path} · master · test/test · GitLab`);
done();
})
.catch(done.fail);
@@ -283,7 +294,7 @@ describe('IDE store file actions', () => {
localFile.path = 'new-shiny-file';
store.state.entries[localFile.path] = localFile;
- mock.onGet(`${RELATIVE_URL_ROOT}/project/getFileDataURL`).replyOnce(
+ mock.onGet(`${RELATIVE_URL_ROOT}/test/test/7297abc/old-dull-file`).replyOnce(
200,
{
blame_path: 'blame_path',
@@ -304,7 +315,7 @@ describe('IDE store file actions', () => {
store
.dispatch('getFileData', { path: localFile.path })
.then(() => {
- expect(document.title).toBe('testing new-shiny-file');
+ expect(document.title).toBe(`new-shiny-file · master · test/test · GitLab`);
done();
})
@@ -314,14 +325,17 @@ describe('IDE store file actions', () => {
describe('error', () => {
beforeEach(() => {
- mock.onGet(`project/getFileDataURL`).networkError();
+ mock.onGet(`${RELATIVE_URL_ROOT}/test/test/7297abc/${localFile.path}`).networkError();
});
it('dispatches error action', done => {
const dispatch = jasmine.createSpy('dispatch');
actions
- .getFileData({ state: store.state, commit() {}, dispatch }, { path: localFile.path })
+ .getFileData(
+ { state: store.state, commit() {}, dispatch, getters: store.getters },
+ { path: localFile.path },
+ )
.then(() => {
expect(dispatch).toHaveBeenCalledWith('setErrorMessage', {
text: 'An error occurred whilst loading the file.',
diff --git a/spec/javascripts/ide/stores/actions/merge_request_spec.js b/spec/javascripts/ide/stores/actions/merge_request_spec.js
index 4dd0c1150eb..a8894c644be 100644
--- a/spec/javascripts/ide/stores/actions/merge_request_spec.js
+++ b/spec/javascripts/ide/stores/actions/merge_request_spec.js
@@ -356,8 +356,30 @@ describe('IDE store merge request actions', () => {
changes: [],
};
store.state.entries = {
- foo: {},
- bar: {},
+ foo: {
+ type: 'blob',
+ },
+ bar: {
+ type: 'blob',
+ },
+ };
+
+ store.state.currentProjectId = 'test/test';
+ store.state.currentBranchId = 'master';
+
+ store.state.projects['test/test'] = {
+ branches: {
+ master: {
+ commit: {
+ id: '7297abc',
+ },
+ },
+ abcbranch: {
+ commit: {
+ id: '29020fc',
+ },
+ },
+ },
};
const originalDispatch = store.dispatch;
@@ -415,9 +437,11 @@ describe('IDE store merge request actions', () => {
it('updates activity bar view and gets file data, if changes are found', done => {
store.state.entries.foo = {
url: 'test',
+ type: 'blob',
};
store.state.entries.bar = {
url: 'test',
+ type: 'blob',
};
testMergeRequestChanges.changes = [
diff --git a/spec/javascripts/ide/stores/actions/tree_spec.js b/spec/javascripts/ide/stores/actions/tree_spec.js
index 0c3c4147501..e2d8cc195ae 100644
--- a/spec/javascripts/ide/stores/actions/tree_spec.js
+++ b/spec/javascripts/ide/stores/actions/tree_spec.js
@@ -31,7 +31,10 @@ describe('Multi-file store tree actions', () => {
web_url: '',
branches: {
master: {
- workingReference: '1',
+ workingReference: '12345678',
+ commit: {
+ id: '12345678',
+ },
},
},
};
@@ -61,7 +64,7 @@ describe('Multi-file store tree actions', () => {
store
.dispatch('getFiles', basicCallParameters)
.then(() => {
- expect(service.getFiles).toHaveBeenCalledWith('', 'master');
+ expect(service.getFiles).toHaveBeenCalledWith('', '12345678');
done();
})
@@ -99,8 +102,18 @@ describe('Multi-file store tree actions', () => {
store.state.projects = {
'abc/def': {
web_url: `${gl.TEST_HOST}/files`,
+ branches: {
+ 'master-testing': {
+ commit: {
+ id: '12345',
+ },
+ },
+ },
},
};
+ const getters = {
+ findBranch: () => store.state.projects['abc/def'].branches['master-testing'],
+ };
mock.onGet(/(.*)/).replyOnce(500);
@@ -109,6 +122,7 @@ describe('Multi-file store tree actions', () => {
commit() {},
dispatch,
state: store.state,
+ getters,
},
{
projectId: 'abc/def',
diff --git a/spec/javascripts/ide/stores/getters_spec.js b/spec/javascripts/ide/stores/getters_spec.js
index 73a8d993a13..558674cc845 100644
--- a/spec/javascripts/ide/stores/getters_spec.js
+++ b/spec/javascripts/ide/stores/getters_spec.js
@@ -163,20 +163,57 @@ describe('IDE store getters', () => {
describe('currentBranch', () => {
it('returns current projects branch', () => {
- const localGetters = {
- currentProject: {
- branches: {
- master: {
- name: 'master',
- },
+ localState.currentProjectId = 'abcproject';
+ localState.currentBranchId = 'master';
+ localState.projects.abcproject = {
+ name: 'abcproject',
+ branches: {
+ master: {
+ name: 'master',
},
},
};
+ const localGetters = {
+ findBranch: jasmine.createSpy('findBranchSpy'),
+ };
+ getters.currentBranch(localState, localGetters);
+
+ expect(localGetters.findBranch).toHaveBeenCalledWith('abcproject', 'master');
+ });
+ });
+
+ describe('findProject', () => {
+ it('returns the project matching the id', () => {
+ localState.currentProjectId = 'abcproject';
+ localState.projects.abcproject = {
+ name: 'abcproject',
+ };
+
+ expect(getters.findProject(localState)('abcproject').name).toBe('abcproject');
+ });
+ });
+
+ describe('findBranch', () => {
+ let result;
+
+ it('returns the selected branch from a project', () => {
+ localState.currentProjectId = 'abcproject';
localState.currentBranchId = 'master';
+ localState.projects.abcproject = {
+ name: 'abcproject',
+ branches: {
+ master: {
+ name: 'master',
+ },
+ },
+ };
+ const localGetters = {
+ findProject: () => localState.projects.abcproject,
+ };
- expect(getters.currentBranch(localState, localGetters)).toEqual({
- name: 'master',
- });
+ result = getters.findBranch(localState, localGetters)('abcproject', 'master');
+
+ expect(result.name).toBe('master');
});
});
diff --git a/spec/javascripts/ide/stores/utils_spec.js b/spec/javascripts/ide/stores/utils_spec.js
index 1b4a158927c..37290864e3d 100644
--- a/spec/javascripts/ide/stores/utils_spec.js
+++ b/spec/javascripts/ide/stores/utils_spec.js
@@ -11,6 +11,23 @@ describe('Multi-file store utils', () => {
});
});
+ describe('setPageTitleForFile', () => {
+ it('sets the document page title for the file passed', () => {
+ const f = {
+ path: 'README.md',
+ };
+
+ const state = {
+ currentBranchId: 'master',
+ currentProjectId: 'test/test',
+ };
+
+ utils.setPageTitleForFile(state, f);
+
+ expect(document.title).toBe('README.md · master · test/test · GitLab');
+ });
+ });
+
describe('findIndexOfFile', () => {
let localState;