From 9f46488805e86b1bc341ea1620b866016c2ce5ed Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 20 May 2020 14:34:42 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-0-stable-ee --- spec/services/git/wiki_push_service/change_spec.rb | 109 +++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 spec/services/git/wiki_push_service/change_spec.rb (limited to 'spec/services/git/wiki_push_service') diff --git a/spec/services/git/wiki_push_service/change_spec.rb b/spec/services/git/wiki_push_service/change_spec.rb new file mode 100644 index 00000000000..547874270ab --- /dev/null +++ b/spec/services/git/wiki_push_service/change_spec.rb @@ -0,0 +1,109 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Git::WikiPushService::Change do + subject { described_class.new(project_wiki, change, raw_change) } + + let(:project_wiki) { double('ProjectWiki') } + let(:raw_change) { double('RawChange', new_path: new_path, old_path: old_path, operation: operation) } + let(:change) { { oldrev: generate(:sha), newrev: generate(:sha) } } + + let(:new_path) do + case operation + when :deleted + nil + else + generate(:wiki_filename) + end + end + + let(:old_path) do + case operation + when :added + nil + when :deleted, :renamed + generate(:wiki_filename) + else + new_path + end + end + + describe '#page' do + context 'the page does not exist' do + before do + expect(project_wiki).to receive(:find_page).with(String, String).and_return(nil) + end + + %i[added deleted renamed modified].each do |op| + context "the operation is #{op}" do + let(:operation) { op } + + it { is_expected.to have_attributes(page: be_nil) } + end + end + end + + context 'the page can be found' do + let(:wiki_page) { double('WikiPage') } + + before do + expect(project_wiki).to receive(:find_page).with(slug, revision).and_return(wiki_page) + end + + context 'the page has been deleted' do + let(:operation) { :deleted } + let(:slug) { old_path.chomp('.md') } + let(:revision) { change[:oldrev] } + + it { is_expected.to have_attributes(page: wiki_page) } + end + + %i[added renamed modified].each do |op| + let(:operation) { op } + let(:slug) { new_path.chomp('.md') } + let(:revision) { change[:newrev] } + + it { is_expected.to have_attributes(page: wiki_page) } + end + end + end + + describe '#last_known_slug' do + context 'the page has been created' do + let(:operation) { :added } + + it { is_expected.to have_attributes(last_known_slug: new_path.chomp('.md')) } + end + + %i[renamed modified deleted].each do |op| + context "the operation is #{op}" do + let(:operation) { op } + + it { is_expected.to have_attributes(last_known_slug: old_path.chomp('.md')) } + end + end + end + + describe '#event_action' do + context 'the page is deleted' do + let(:operation) { :deleted } + + it { is_expected.to have_attributes(event_action: Event::DESTROYED) } + end + + context 'the page is added' do + let(:operation) { :added } + + it { is_expected.to have_attributes(event_action: Event::CREATED) } + end + + %i[renamed modified].each do |op| + context "the page is #{op}" do + let(:operation) { op } + + it { is_expected.to have_attributes(event_action: Event::UPDATED) } + end + end + end +end -- cgit v1.2.1