From f810d645a4b6946182846163f562918112d34b69 Mon Sep 17 00:00:00 2001 From: Christian Bruckmayer Date: Wed, 4 Oct 2017 15:23:16 +0200 Subject: [PATCH] [ci] Implement specs for ParsePackageDiff --- .../spec/mixins/parse_package_diff_spec.rb | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 src/api/spec/mixins/parse_package_diff_spec.rb diff --git a/src/api/spec/mixins/parse_package_diff_spec.rb b/src/api/spec/mixins/parse_package_diff_spec.rb new file mode 100644 index 00000000000..9a5bd99ad40 --- /dev/null +++ b/src/api/spec/mixins/parse_package_diff_spec.rb @@ -0,0 +1,135 @@ +require 'rails_helper' + +RSpec.describe ParsePackageDiff do + let(:instance_with_parse_package_diff_support) do + fake_instance = double("Fake Instance with ParsePackageDiff") + fake_instance.extend(ParsePackageDiff) + fake_instance + end + + describe '#sorted_filenames_from_sourcediff' do + context 'with one file' do + let(:filename) { 'my_filename' } + let(:package_diff) do + " + + + + + + + # the diff + + + + + " + end + + subject { instance_with_parse_package_diff_support.sorted_filenames_from_sourcediff(package_diff).first } + + it 'contains the old filename' do + result = { "project" => "home:Admin", "package" => "test", "rev" => "4", "srcmd5" => "61c8de91f59df43c9ffd1fa9b4a3f055" } + expect(subject['old']).to eq(result) + end + + it 'contains the new filename' do + result = { "project" => "home:Admin", "package" => "test", "rev" => "5", "srcmd5" => "ca37dc90f6fd88f63db2ac9f1fc5c41c" } + expect(subject['new']).to eq(result) + end + + it { expect(subject['filenames']).to eq([filename]) } + it { expect(subject['files'][filename]['state']).to eq('changed') } + it { expect(subject['files'][filename]['old']).to eq({ "name" => filename, "md5" => "f00a43bbe6d74b350577e5bce2ea5ff7", "size" => "42" }) } + it { expect(subject['files'][filename]['new']).to eq({ "name" => filename, "md5" => "3fd7513ed78f95e2be1bb211369bbea3", "size" => "10" }) } + it { expect(subject['files'][filename]['diff']).to eq({ "lines" => "1", "_content" => "# the diff" }) } + end + + context 'with more than one file' do + let(:package_diff) do + ' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ' + end + + subject { instance_with_parse_package_diff_support.sorted_filenames_from_sourcediff(package_diff).first } + + it 'orders the filenames by type' do + # changes files, spec files, patch files followed by all other files + expect(subject['filenames']).to eq(['aa.changes', 'bb.changes', 'aa.spec', 'bb.spec', 'aa.patch', 'bb.dif', 'cc.diff', 'aa_file', 'bb_file']) + end + end + + context 'with issues' do + let!(:package_diff) do + " + + + + + + + #{issue.name} + #{issue_tracker.name} + + + + #{deleted_issue.name} + #{issue_tracker.name} + + deleted + + + without name + + + + " + end + + let(:issue_tracker) { IssueTracker.first } + let(:issue) { create(:issue, issue_tracker: issue_tracker) } + let(:deleted_issue) { create(:issue, name: 'deleted', issue_tracker: issue_tracker) } + + subject { instance_with_parse_package_diff_support.sorted_filenames_from_sourcediff(package_diff).first['issues'] } + + it { expect(subject[issue.label][:name]).to eq(issue.name) } + it { expect(subject[issue.label][:tracker]).to eq(issue_tracker.name) } + + it { expect(subject[:empty]).to eq(nil) } + it { expect(subject[deleted_issue.label]).to eq(nil) } + end + end +end