a99bf447a2
Cleanup code, and refactor tests that still use Rugged. After this, there should be no Rugged code that access the instance's repositories on non-test environments. There is still some rugged code for other tasks like the repository import task, but since it doesn't access any repository storage path it can stay.
114 lines
4.1 KiB
Ruby
114 lines
4.1 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Gitlab::GitalyClient::WikiService do
|
|
let(:project) { create(:project) }
|
|
let(:storage_name) { project.repository_storage }
|
|
let(:relative_path) { project.disk_path + '.git' }
|
|
let(:client) { described_class.new(project.repository) }
|
|
let(:commit) { create(:gitaly_commit) }
|
|
let(:page_version) { Gitaly::WikiPageVersion.new(format: 'markdown', commit: commit) }
|
|
let(:page_info) { { title: 'My Page', raw_data: 'a', version: page_version } }
|
|
|
|
describe '#find_page' do
|
|
let(:response) do
|
|
[
|
|
Gitaly::WikiFindPageResponse.new(page: Gitaly::WikiPage.new(page_info)),
|
|
Gitaly::WikiFindPageResponse.new(page: Gitaly::WikiPage.new(raw_data: 'b'))
|
|
]
|
|
end
|
|
let(:wiki_page) { subject.first }
|
|
let(:wiki_page_version) { subject.last }
|
|
|
|
subject { client.find_page(title: 'My Page', version: 'master', dir: '') }
|
|
|
|
it 'sends a wiki_find_page message' do
|
|
expect_any_instance_of(Gitaly::WikiService::Stub)
|
|
.to receive(:wiki_find_page)
|
|
.with(gitaly_request_with_path(storage_name, relative_path), kind_of(Hash))
|
|
.and_return([].each)
|
|
|
|
subject
|
|
end
|
|
|
|
it 'concatenates the raw data and returns a pair of WikiPage and WikiPageVersion' do
|
|
expect_any_instance_of(Gitaly::WikiService::Stub)
|
|
.to receive(:wiki_find_page)
|
|
.with(gitaly_request_with_path(storage_name, relative_path), kind_of(Hash))
|
|
.and_return(response.each)
|
|
|
|
expect(wiki_page.title).to eq('My Page')
|
|
expect(wiki_page.raw_data).to eq('ab')
|
|
expect(wiki_page_version.format).to eq('markdown')
|
|
|
|
expect(wiki_page.title).to be_utf8
|
|
expect(wiki_page.path).to be_utf8
|
|
expect(wiki_page.name).to be_utf8
|
|
end
|
|
end
|
|
|
|
describe '#get_all_pages' do
|
|
let(:page_2_info) { { title: 'My Page 2', raw_data: 'c', version: page_version } }
|
|
let(:response) do
|
|
[
|
|
Gitaly::WikiGetAllPagesResponse.new(page: Gitaly::WikiPage.new(page_info)),
|
|
Gitaly::WikiGetAllPagesResponse.new(page: Gitaly::WikiPage.new(raw_data: 'b')),
|
|
Gitaly::WikiGetAllPagesResponse.new(end_of_page: true),
|
|
Gitaly::WikiGetAllPagesResponse.new(page: Gitaly::WikiPage.new(page_2_info)),
|
|
Gitaly::WikiGetAllPagesResponse.new(page: Gitaly::WikiPage.new(raw_data: 'd')),
|
|
Gitaly::WikiGetAllPagesResponse.new(end_of_page: true)
|
|
]
|
|
end
|
|
let(:wiki_page_1) { subject[0].first }
|
|
let(:wiki_page_1_version) { subject[0].last }
|
|
let(:wiki_page_2) { subject[1].first }
|
|
let(:wiki_page_2_version) { subject[1].last }
|
|
|
|
subject { client.get_all_pages }
|
|
|
|
it 'sends a wiki_get_all_pages message' do
|
|
expect_any_instance_of(Gitaly::WikiService::Stub)
|
|
.to receive(:wiki_get_all_pages)
|
|
.with(gitaly_request_with_path(storage_name, relative_path), kind_of(Hash))
|
|
.and_return([].each)
|
|
|
|
subject
|
|
end
|
|
|
|
it 'sends a limit of 0 to wiki_get_all_pages' do
|
|
expect_any_instance_of(Gitaly::WikiService::Stub)
|
|
.to receive(:wiki_get_all_pages)
|
|
.with(gitaly_request_with_params(limit: 0), kind_of(Hash))
|
|
.and_return([].each)
|
|
|
|
subject
|
|
end
|
|
|
|
it 'concatenates the raw data and returns a pair of WikiPage and WikiPageVersion for each page' do
|
|
expect_any_instance_of(Gitaly::WikiService::Stub)
|
|
.to receive(:wiki_get_all_pages)
|
|
.with(gitaly_request_with_path(storage_name, relative_path), kind_of(Hash))
|
|
.and_return(response.each)
|
|
|
|
expect(subject.size).to be(2)
|
|
expect(wiki_page_1.title).to eq('My Page')
|
|
expect(wiki_page_1.raw_data).to eq('ab')
|
|
expect(wiki_page_1_version.format).to eq('markdown')
|
|
expect(wiki_page_2.title).to eq('My Page 2')
|
|
expect(wiki_page_2.raw_data).to eq('cd')
|
|
expect(wiki_page_2_version.format).to eq('markdown')
|
|
end
|
|
|
|
context 'with limits' do
|
|
subject { client.get_all_pages(limit: 1) }
|
|
|
|
it 'sends a request with the limit' do
|
|
expect_any_instance_of(Gitaly::WikiService::Stub)
|
|
.to receive(:wiki_get_all_pages)
|
|
.with(gitaly_request_with_params(limit: 1), kind_of(Hash))
|
|
.and_return([].each)
|
|
|
|
subject
|
|
end
|
|
end
|
|
end
|
|
end
|