spec/lib/release_tools/update_kas_merge_request_spec.rb (64 lines of code) (raw):
# frozen_string_literal: true
require 'spec_helper'
describe ReleaseTools::UpdateKasMergeRequest do
describe '#fresh?' do
it 'returns true when recently created' do
instance = described_class.new
remote = Gitlab::ObjectifiedHash.new({ created_at: Time.now.to_s })
expect(instance).to receive(:exists?).and_return(true)
expect(instance).to receive(:remote_issuable).and_return(remote)
expect(instance).to be_fresh
end
it 'returns false when stale' do
instance = described_class.new
remote = Gitlab::ObjectifiedHash.new({ created_at: 5.days.ago.to_s })
expect(instance).to receive(:exists?).and_return(true)
expect(instance).to receive(:remote_issuable).and_return(remote)
expect(instance).not_to be_fresh
end
it 'returns false when not yet created' do
instance = described_class.new
expect(instance).to receive(:exists?).and_return(false)
expect(instance).not_to be_fresh
end
end
describe '#notifiable?' do
it 'returns true when stale and not yet notified' do
instance = described_class.new
remote = Gitlab::ObjectifiedHash.new({ labels: ['dependency update'] })
expect(instance).to receive(:exists?).and_return(true)
expect(instance).to receive(:fresh?).and_return(false)
expect(instance).to receive(:remote_issuable).and_return(remote)
expect(instance).to be_notifiable
end
it 'returns false when already notified' do
instance = described_class.new
remote = Gitlab::ObjectifiedHash.new({ labels: [described_class::NOTIFIED_LABEL] })
expect(instance).to receive(:exists?).and_return(true)
expect(instance).to receive(:fresh?).and_return(false)
expect(instance).to receive(:remote_issuable).and_return(remote)
expect(instance).not_to be_notifiable
end
it 'returns false when fresh' do
instance = described_class.new
expect(instance).to receive(:exists?).and_return(true)
expect(instance).to receive(:fresh?).and_return(true)
expect(instance).not_to be_notifiable
end
it 'returns false when not yet created' do
instance = described_class.new
expect(instance).to receive(:exists?).and_return(false)
expect(instance).not_to be_notifiable
end
end
describe '#mark_as_stale' do
it 'posts a comment on the merge request' do
instance = described_class.new
remote = Gitlab::ObjectifiedHash.new({ project_id: 42, iid: 1 })
allow(instance).to receive(:remote_issuable).and_return(remote)
expect(ReleaseTools::GitlabClient)
.to receive(:create_merge_request_comment)
.with(42, 1, a_string_including(%{/label ~"#{described_class::NOTIFIED_LABEL}"}))
instance.mark_as_stale
end
end
end