diff options
-rw-r--r-- | GITALY_SERVER_VERSION | 2 | ||||
-rw-r--r-- | doc/api/merge_requests.md | 6 | ||||
-rw-r--r-- | lib/gitlab/git/wiki.rb | 25 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/wiki_service.rb | 25 | ||||
-rw-r--r-- | spec/javascripts/sidebar/sidebar_service_spec.js | 66 | ||||
-rw-r--r-- | spec/javascripts/vue_mr_widget/services/mr_widget_service_spec.js | 47 |
6 files changed, 52 insertions, 119 deletions
diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index c5d4cee36a1..4f9b378b40f 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -0.51.0 +0.52.0 diff --git a/doc/api/merge_requests.md b/doc/api/merge_requests.md index 6de460f2778..b2e4b6d0955 100644 --- a/doc/api/merge_requests.md +++ b/doc/api/merge_requests.md @@ -58,6 +58,8 @@ Parameters: "project_id": 3, "title": "test1", "state": "opened", + "created_at": "2017-04-29T08:46:00Z", + "updated_at": "2017-04-29T08:46:00Z", "upvotes": 0, "downvotes": 0, "author": { @@ -170,6 +172,8 @@ Parameters: "project_id": 3, "title": "test1", "state": "opened", + "created_at": "2017-04-29T08:46:00Z", + "updated_at": "2017-04-29T08:46:00Z", "upvotes": 0, "downvotes": 0, "author": { @@ -246,6 +250,8 @@ Parameters: "project_id": 3, "title": "test1", "state": "merged", + "created_at": "2017-04-29T08:46:00Z", + "updated_at": "2017-04-29T08:46:00Z", "upvotes": 0, "downvotes": 0, "author": { diff --git a/lib/gitlab/git/wiki.rb b/lib/gitlab/git/wiki.rb index fe901d049d4..5d36f16abd4 100644 --- a/lib/gitlab/git/wiki.rb +++ b/lib/gitlab/git/wiki.rb @@ -48,11 +48,14 @@ module Gitlab end def update_page(page_path, title, format, content, commit_details) - assert_type!(format, Symbol) - assert_type!(commit_details, CommitDetails) - - gollum_wiki.update_page(gollum_page_by_path(page_path), title, format, content, commit_details.to_h) - nil + @repository.gitaly_migrate(:wiki_update_page) do |is_enabled| + if is_enabled + gitaly_update_page(page_path, title, format, content, commit_details) + gollum_wiki.clear_cache + else + gollum_update_page(page_path, title, format, content, commit_details) + end + end end def pages @@ -149,6 +152,14 @@ module Gitlab nil end + def gollum_update_page(page_path, title, format, content, commit_details) + assert_type!(format, Symbol) + assert_type!(commit_details, CommitDetails) + + gollum_wiki.update_page(gollum_page_by_path(page_path), title, format, content, commit_details.to_h) + nil + end + def gollum_find_page(title:, version: nil, dir: nil) if version version = Gitlab::Git::Commit.find(@repository, version).id @@ -172,6 +183,10 @@ module Gitlab gitaly_wiki_client.write_page(name, format, content, commit_details) end + def gitaly_update_page(page_path, title, format, content, commit_details) + gitaly_wiki_client.update_page(page_path, title, format, content, commit_details) + end + def gitaly_delete_page(page_path, commit_details) gitaly_wiki_client.delete_page(page_path, commit_details) end diff --git a/lib/gitlab/gitaly_client/wiki_service.rb b/lib/gitlab/gitaly_client/wiki_service.rb index 15f0f30d303..1a668338f57 100644 --- a/lib/gitlab/gitaly_client/wiki_service.rb +++ b/lib/gitlab/gitaly_client/wiki_service.rb @@ -37,6 +37,31 @@ module Gitlab end end + def update_page(page_path, title, format, content, commit_details) + request = Gitaly::WikiUpdatePageRequest.new( + repository: @gitaly_repo, + page_path: GitalyClient.encode(page_path), + title: GitalyClient.encode(title), + format: format.to_s, + commit_details: gitaly_commit_details(commit_details) + ) + + strio = StringIO.new(content) + + enum = Enumerator.new do |y| + until strio.eof? + chunk = strio.read(MAX_MSG_SIZE) + request.content = GitalyClient.encode(chunk) + + y.yield request + + request = Gitaly::WikiUpdatePageRequest.new + end + end + + GitalyClient.call(@repository.storage, :wiki_service, :wiki_update_page, enum) + end + def delete_page(page_path, commit_details) request = Gitaly::WikiDeletePageRequest.new( repository: @gitaly_repo, diff --git a/spec/javascripts/sidebar/sidebar_service_spec.js b/spec/javascripts/sidebar/sidebar_service_spec.js deleted file mode 100644 index 7324d34d84a..00000000000 --- a/spec/javascripts/sidebar/sidebar_service_spec.js +++ /dev/null @@ -1,66 +0,0 @@ -import Vue from 'vue'; -import SidebarService from '~/sidebar/services/sidebar_service'; -import Mock from './mock_data'; - -describe('Sidebar service', () => { - beforeEach(() => { - Vue.http.interceptors.push(Mock.sidebarMockInterceptor); - this.service = new SidebarService({ - endpoint: '/gitlab-org/gitlab-shell/issues/5.json', - toggleSubscriptionEndpoint: '/gitlab-org/gitlab-shell/issues/5/toggle_subscription', - moveIssueEndpoint: '/gitlab-org/gitlab-shell/issues/5/move', - projectsAutocompleteEndpoint: '/autocomplete/projects?project_id=15', - }); - }); - - afterEach(() => { - SidebarService.singleton = null; - Vue.http.interceptors = _.without(Vue.http.interceptors, Mock.sidebarMockInterceptor); - }); - - it('gets the data', (done) => { - this.service.get() - .then((resp) => { - expect(resp).toBeDefined(); - done(); - }) - .then(done) - .catch(done.fail); - }); - - it('updates the data', (done) => { - this.service.update('issue[assignee_ids]', [1]) - .then((resp) => { - expect(resp).toBeDefined(); - }) - .then(done) - .catch(done.fail); - }); - - it('gets projects for autocomplete', (done) => { - this.service.getProjectsAutocomplete() - .then((resp) => { - expect(resp).toBeDefined(); - }) - .then(done) - .catch(done.fail); - }); - - it('moves the issue to another project', (done) => { - this.service.moveIssue(123) - .then((resp) => { - expect(resp).toBeDefined(); - }) - .then(done) - .catch(done.fail); - }); - - it('toggles the subscription', (done) => { - this.service.toggleSubscription() - .then((resp) => { - expect(resp).toBeDefined(); - }) - .then(done) - .catch(done.fail); - }); -}); diff --git a/spec/javascripts/vue_mr_widget/services/mr_widget_service_spec.js b/spec/javascripts/vue_mr_widget/services/mr_widget_service_spec.js deleted file mode 100644 index e667b4b3677..00000000000 --- a/spec/javascripts/vue_mr_widget/services/mr_widget_service_spec.js +++ /dev/null @@ -1,47 +0,0 @@ -import Vue from 'vue'; -import VueResource from 'vue-resource'; -import MRWidgetService from '~/vue_merge_request_widget/services/mr_widget_service'; - -Vue.use(VueResource); - -describe('MRWidgetService', () => { - const mr = { - mergePath: './', - mergeCheckPath: './', - cancelAutoMergePath: './', - removeWIPPath: './', - sourceBranchPath: './', - ciEnvironmentsStatusPath: './', - statusPath: './', - mergeActionsContentPath: './', - isServiceStore: true, - }; - - it('should have store and resources created in constructor', () => { - const service = new MRWidgetService(mr); - - expect(service.mergeResource).toBeDefined(); - expect(service.mergeCheckResource).toBeDefined(); - expect(service.cancelAutoMergeResource).toBeDefined(); - expect(service.removeWIPResource).toBeDefined(); - expect(service.removeSourceBranchResource).toBeDefined(); - expect(service.deploymentsResource).toBeDefined(); - expect(service.pollResource).toBeDefined(); - expect(service.mergeActionsContentResource).toBeDefined(); - }); - - it('should have methods defined', () => { - window.history.pushState({}, null, '/'); - const service = new MRWidgetService(mr); - - expect(service.merge()).toBeDefined(); - expect(service.cancelAutomaticMerge()).toBeDefined(); - expect(service.removeWIP()).toBeDefined(); - expect(service.removeSourceBranch()).toBeDefined(); - expect(service.fetchDeployments()).toBeDefined(); - expect(service.poll()).toBeDefined(); - expect(service.checkStatus()).toBeDefined(); - expect(service.fetchMergeActionsContent()).toBeDefined(); - expect(MRWidgetService.stopEnvironment()).toBeDefined(); - }); -}); |