Revert "DB change, migratoin and changelog"
This reverts commit af5242ecb682189c5d8276e1ab1ffe5ce844f2e5.
This commit is contained in:
parent
5256f01183
commit
19371b9062
8 changed files with 51 additions and 61 deletions
|
@ -67,18 +67,14 @@ export default {
|
||||||
saveAssignees() {
|
saveAssignees() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
|
|
||||||
function setLoadingFalse() {
|
|
||||||
this.loading = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.mediator
|
this.mediator
|
||||||
.saveAssignees(this.field)
|
.saveAssignees(this.field)
|
||||||
.then(setLoadingFalse.bind(this))
|
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
this.loading = false;
|
||||||
refreshUserMergeRequestCounts();
|
refreshUserMergeRequestCounts();
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
setLoadingFalse();
|
this.loading = false;
|
||||||
return new Flash(__('Error occurred when saving assignees'));
|
return new Flash(__('Error occurred when saving assignees'));
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
import Vue from 'vue';
|
import axios from '~/lib/utils/axios_utils';
|
||||||
import VueResource from 'vue-resource';
|
|
||||||
|
|
||||||
Vue.use(VueResource);
|
|
||||||
|
|
||||||
export default class SidebarService {
|
export default class SidebarService {
|
||||||
constructor(endpointMap) {
|
constructor(endpointMap) {
|
||||||
|
@ -18,23 +15,15 @@ export default class SidebarService {
|
||||||
}
|
}
|
||||||
|
|
||||||
get() {
|
get() {
|
||||||
return Vue.http.get(this.endpoint);
|
return axios.get(this.endpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
update(key, data) {
|
update(key, data) {
|
||||||
return Vue.http.put(
|
return axios.put(this.endpoint, { [key]: data });
|
||||||
this.endpoint,
|
|
||||||
{
|
|
||||||
[key]: data,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
emulateJSON: true,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getProjectsAutocomplete(searchTerm) {
|
getProjectsAutocomplete(searchTerm) {
|
||||||
return Vue.http.get(this.projectsAutocompleteEndpoint, {
|
return axios.get(this.projectsAutocompleteEndpoint, {
|
||||||
params: {
|
params: {
|
||||||
search: searchTerm,
|
search: searchTerm,
|
||||||
},
|
},
|
||||||
|
@ -42,11 +31,11 @@ export default class SidebarService {
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleSubscription() {
|
toggleSubscription() {
|
||||||
return Vue.http.post(this.toggleSubscriptionEndpoint);
|
return axios.post(this.toggleSubscriptionEndpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
moveIssue(moveToProjectId) {
|
moveIssue(moveToProjectId) {
|
||||||
return Vue.http.post(this.moveIssueEndpoint, {
|
return axios.post(this.moveIssueEndpoint, {
|
||||||
move_to_project_id: moveToProjectId,
|
move_to_project_id: moveToProjectId,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,10 @@ export default class SidebarMediator {
|
||||||
|
|
||||||
// If there are no ids, that means we have to unassign (which is id = 0)
|
// If there are no ids, that means we have to unassign (which is id = 0)
|
||||||
// And it only accepts an array, hence [0]
|
// And it only accepts an array, hence [0]
|
||||||
return this.service.update(field, selected.length === 0 ? [0] : selected);
|
const assignees = selected.length === 0 ? [0] : selected;
|
||||||
|
const data = { assignee_ids: assignees };
|
||||||
|
|
||||||
|
return this.service.update(field, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
setMoveToProjectId(projectId) {
|
setMoveToProjectId(projectId) {
|
||||||
|
@ -42,8 +45,7 @@ export default class SidebarMediator {
|
||||||
fetch() {
|
fetch() {
|
||||||
return this.service
|
return this.service
|
||||||
.get()
|
.get()
|
||||||
.then(response => response.json())
|
.then(({ data }) => {
|
||||||
.then(data => {
|
|
||||||
this.processFetchedData(data);
|
this.processFetchedData(data);
|
||||||
})
|
})
|
||||||
.catch(() => new Flash(__('Error occurred when fetching sidebar data')));
|
.catch(() => new Flash(__('Error occurred when fetching sidebar data')));
|
||||||
|
@ -71,23 +73,17 @@ export default class SidebarMediator {
|
||||||
}
|
}
|
||||||
|
|
||||||
fetchAutocompleteProjects(searchTerm) {
|
fetchAutocompleteProjects(searchTerm) {
|
||||||
return this.service
|
return this.service.getProjectsAutocomplete(searchTerm).then(({ data }) => {
|
||||||
.getProjectsAutocomplete(searchTerm)
|
this.store.setAutocompleteProjects(data);
|
||||||
.then(response => response.json())
|
return this.store.autocompleteProjects;
|
||||||
.then(data => {
|
});
|
||||||
this.store.setAutocompleteProjects(data);
|
|
||||||
return this.store.autocompleteProjects;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
moveIssue() {
|
moveIssue() {
|
||||||
return this.service
|
return this.service.moveIssue(this.store.moveToProjectId).then(({ data }) => {
|
||||||
.moveIssue(this.store.moveToProjectId)
|
if (window.location.pathname !== data.web_url) {
|
||||||
.then(response => response.json())
|
visitUrl(data.web_url);
|
||||||
.then(data => {
|
}
|
||||||
if (window.location.pathname !== data.web_url) {
|
});
|
||||||
visitUrl(data.web_url);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
- issuable_type = issuable_sidebar[:type]
|
- issuable_type = issuable_sidebar[:type]
|
||||||
- signed_in = !!issuable_sidebar.dig(:current_user, :id)
|
- signed_in = !!issuable_sidebar.dig(:current_user, :id)
|
||||||
|
|
||||||
#js-vue-sidebar-assignees{ data: { field: "#{issuable_type}[assignee_ids]", signed_in: signed_in } }
|
#js-vue-sidebar-assignees{ data: { field: "#{issuable_type}", signed_in: signed_in } }
|
||||||
.title.hide-collapsed
|
.title.hide-collapsed
|
||||||
= _('Assignee')
|
= _('Assignee')
|
||||||
= icon('spinner spin')
|
= icon('spinner spin')
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Remove vue resource from sidebar service
|
||||||
|
merge_request: 32400
|
||||||
|
author: Lee Tickett
|
||||||
|
type: other
|
|
@ -210,14 +210,4 @@ const mockData = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
mockData.sidebarMockInterceptor = function(request, next) {
|
|
||||||
const body = this.responseMap[request.method.toUpperCase()][request.url];
|
|
||||||
|
|
||||||
next(
|
|
||||||
request.respondWith(JSON.stringify(body), {
|
|
||||||
status: 200,
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
}.bind(mockData);
|
|
||||||
|
|
||||||
export default mockData;
|
export default mockData;
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
import _ from 'underscore';
|
import MockAdapter from 'axios-mock-adapter';
|
||||||
import Vue from 'vue';
|
import axios from '~/lib/utils/axios_utils';
|
||||||
import SidebarMediator from '~/sidebar/sidebar_mediator';
|
import SidebarMediator from '~/sidebar/sidebar_mediator';
|
||||||
import SidebarStore from '~/sidebar/stores/sidebar_store';
|
import SidebarStore from '~/sidebar/stores/sidebar_store';
|
||||||
import SidebarService from '~/sidebar/services/sidebar_service';
|
import SidebarService from '~/sidebar/services/sidebar_service';
|
||||||
import Mock from './mock_data';
|
import Mock from './mock_data';
|
||||||
|
|
||||||
describe('Sidebar mediator', function() {
|
describe('Sidebar mediator', function() {
|
||||||
|
let mock;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
Vue.http.interceptors.push(Mock.sidebarMockInterceptor);
|
mock = new MockAdapter(axios);
|
||||||
|
|
||||||
this.mediator = new SidebarMediator(Mock.mediator);
|
this.mediator = new SidebarMediator(Mock.mediator);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -15,7 +18,7 @@ describe('Sidebar mediator', function() {
|
||||||
SidebarService.singleton = null;
|
SidebarService.singleton = null;
|
||||||
SidebarStore.singleton = null;
|
SidebarStore.singleton = null;
|
||||||
SidebarMediator.singleton = null;
|
SidebarMediator.singleton = null;
|
||||||
Vue.http.interceptors = _.without(Vue.http.interceptors, Mock.sidebarMockInterceptor);
|
mock.restore();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('assigns yourself ', () => {
|
it('assigns yourself ', () => {
|
||||||
|
@ -26,6 +29,7 @@ describe('Sidebar mediator', function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('saves assignees', done => {
|
it('saves assignees', done => {
|
||||||
|
mock.onPut('/gitlab-org/gitlab-shell/issues/5.json?serializer=sidebar_extras').reply(200, {});
|
||||||
this.mediator
|
this.mediator
|
||||||
.saveAssignees('issue[assignee_ids]')
|
.saveAssignees('issue[assignee_ids]')
|
||||||
.then(resp => {
|
.then(resp => {
|
||||||
|
@ -38,6 +42,9 @@ describe('Sidebar mediator', function() {
|
||||||
it('fetches the data', done => {
|
it('fetches the data', done => {
|
||||||
const mockData =
|
const mockData =
|
||||||
Mock.responseMap.GET['/gitlab-org/gitlab-shell/issues/5.json?serializer=sidebar_extras'];
|
Mock.responseMap.GET['/gitlab-org/gitlab-shell/issues/5.json?serializer=sidebar_extras'];
|
||||||
|
mock
|
||||||
|
.onGet('/gitlab-org/gitlab-shell/issues/5.json?serializer=sidebar_extras')
|
||||||
|
.reply(200, mockData);
|
||||||
spyOn(this.mediator, 'processFetchedData').and.callThrough();
|
spyOn(this.mediator, 'processFetchedData').and.callThrough();
|
||||||
|
|
||||||
this.mediator
|
this.mediator
|
||||||
|
@ -74,6 +81,7 @@ describe('Sidebar mediator', function() {
|
||||||
|
|
||||||
it('fetches autocomplete projects', done => {
|
it('fetches autocomplete projects', done => {
|
||||||
const searchTerm = 'foo';
|
const searchTerm = 'foo';
|
||||||
|
mock.onGet('/autocomplete/projects?project_id=15').reply(200, {});
|
||||||
spyOn(this.mediator.service, 'getProjectsAutocomplete').and.callThrough();
|
spyOn(this.mediator.service, 'getProjectsAutocomplete').and.callThrough();
|
||||||
spyOn(this.mediator.store, 'setAutocompleteProjects').and.callThrough();
|
spyOn(this.mediator.store, 'setAutocompleteProjects').and.callThrough();
|
||||||
|
|
||||||
|
@ -88,7 +96,9 @@ describe('Sidebar mediator', function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('moves issue', done => {
|
it('moves issue', done => {
|
||||||
|
const mockData = Mock.responseMap.POST['/gitlab-org/gitlab-shell/issues/5/move'];
|
||||||
const moveToProjectId = 7;
|
const moveToProjectId = 7;
|
||||||
|
mock.onPost('/gitlab-org/gitlab-shell/issues/5/move').reply(200, mockData);
|
||||||
this.mediator.store.setMoveToProjectId(moveToProjectId);
|
this.mediator.store.setMoveToProjectId(moveToProjectId);
|
||||||
spyOn(this.mediator.service, 'moveIssue').and.callThrough();
|
spyOn(this.mediator.service, 'moveIssue').and.callThrough();
|
||||||
const visitUrl = spyOnDependency(SidebarMediator, 'visitUrl');
|
const visitUrl = spyOnDependency(SidebarMediator, 'visitUrl');
|
||||||
|
@ -105,6 +115,7 @@ describe('Sidebar mediator', function() {
|
||||||
|
|
||||||
it('toggle subscription', done => {
|
it('toggle subscription', done => {
|
||||||
this.mediator.store.setSubscribedState(false);
|
this.mediator.store.setSubscribedState(false);
|
||||||
|
mock.onPost('/gitlab-org/gitlab-shell/issues/5/toggle_subscription').reply(200, {});
|
||||||
spyOn(this.mediator.service, 'toggleSubscription').and.callThrough();
|
spyOn(this.mediator.service, 'toggleSubscription').and.callThrough();
|
||||||
|
|
||||||
this.mediator
|
this.mediator
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
import _ from 'underscore';
|
import MockAdapter from 'axios-mock-adapter';
|
||||||
import Vue from 'vue';
|
import axios from '~/lib/utils/axios_utils';
|
||||||
import SidebarMediator from '~/sidebar/sidebar_mediator';
|
import SidebarMediator from '~/sidebar/sidebar_mediator';
|
||||||
import SidebarStore from '~/sidebar/stores/sidebar_store';
|
import SidebarStore from '~/sidebar/stores/sidebar_store';
|
||||||
import SidebarService from '~/sidebar/services/sidebar_service';
|
import SidebarService from '~/sidebar/services/sidebar_service';
|
||||||
|
@ -8,8 +8,12 @@ import SidebarMoveIssue from '~/sidebar/lib/sidebar_move_issue';
|
||||||
import Mock from './mock_data';
|
import Mock from './mock_data';
|
||||||
|
|
||||||
describe('SidebarMoveIssue', function() {
|
describe('SidebarMoveIssue', function() {
|
||||||
|
let mock;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
Vue.http.interceptors.push(Mock.sidebarMockInterceptor);
|
mock = new MockAdapter(axios);
|
||||||
|
const mockData = Mock.responseMap.GET['/autocomplete/projects?project_id=15'];
|
||||||
|
mock.onGet('/autocomplete/projects?project_id=15').reply(200, mockData);
|
||||||
this.mediator = new SidebarMediator(Mock.mediator);
|
this.mediator = new SidebarMediator(Mock.mediator);
|
||||||
this.$content = $(`
|
this.$content = $(`
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
|
@ -37,8 +41,7 @@ describe('SidebarMoveIssue', function() {
|
||||||
SidebarMediator.singleton = null;
|
SidebarMediator.singleton = null;
|
||||||
|
|
||||||
this.sidebarMoveIssue.destroy();
|
this.sidebarMoveIssue.destroy();
|
||||||
|
mock.restore();
|
||||||
Vue.http.interceptors = _.without(Vue.http.interceptors, Mock.sidebarMockInterceptor);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('init', () => {
|
describe('init', () => {
|
||||||
|
|
Loading…
Reference in a new issue