141 lines
3.2 KiB
Ruby
141 lines
3.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe Gitlab::MergeRequests::Mergeability::CheckResult do
|
|
subject(:check_result) { described_class }
|
|
|
|
let(:time) { Time.current }
|
|
|
|
around do |example|
|
|
freeze_time do
|
|
example.run
|
|
end
|
|
end
|
|
|
|
describe '.default_payload' do
|
|
it 'returns the expected defaults' do
|
|
expect(check_result.default_payload).to eq({ last_run_at: time })
|
|
end
|
|
end
|
|
|
|
describe '.success' do
|
|
subject(:success) { check_result.success(payload: payload) }
|
|
|
|
let(:payload) { {} }
|
|
|
|
it 'creates a success result' do
|
|
expect(success.status).to eq described_class::SUCCESS_STATUS
|
|
end
|
|
|
|
it 'uses the default payload' do
|
|
expect(success.payload).to eq described_class.default_payload
|
|
end
|
|
|
|
context 'when given a payload' do
|
|
let(:payload) { { last_run_at: time + 1.day, test: 'test' } }
|
|
|
|
it 'uses the payload passed' do
|
|
expect(success.payload).to eq payload
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '.failed' do
|
|
subject(:failed) { check_result.failed(payload: payload) }
|
|
|
|
let(:payload) { {} }
|
|
|
|
it 'creates a failure result' do
|
|
expect(failed.status).to eq described_class::FAILED_STATUS
|
|
end
|
|
|
|
it 'uses the default payload' do
|
|
expect(failed.payload).to eq described_class.default_payload
|
|
end
|
|
|
|
context 'when given a payload' do
|
|
let(:payload) { { last_run_at: time + 1.day, test: 'test' } }
|
|
|
|
it 'uses the payload passed' do
|
|
expect(failed.payload).to eq payload
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '.from_hash' do
|
|
subject(:from_hash) { described_class.from_hash(hash) }
|
|
|
|
let(:status) { described_class::SUCCESS_STATUS }
|
|
let(:payload) { { test: 'test' } }
|
|
let(:hash) do
|
|
{
|
|
status: status,
|
|
payload: payload
|
|
}
|
|
end
|
|
|
|
it 'returns the expected status and payload' do
|
|
expect(from_hash.status).to eq status
|
|
expect(from_hash.payload).to eq payload
|
|
end
|
|
end
|
|
|
|
describe '#to_hash' do
|
|
subject(:to_hash) { described_class.new(**hash).to_hash }
|
|
|
|
let(:status) { described_class::SUCCESS_STATUS }
|
|
let(:payload) { { test: 'test' } }
|
|
let(:hash) do
|
|
{
|
|
status: status,
|
|
payload: payload
|
|
}
|
|
end
|
|
|
|
it 'returns the expected hash' do
|
|
expect(to_hash).to eq hash
|
|
end
|
|
end
|
|
|
|
describe '#failed?' do
|
|
subject(:failed) { described_class.new(status: status).failed? }
|
|
|
|
context 'when it has failed' do
|
|
let(:status) { described_class::FAILED_STATUS }
|
|
|
|
it 'returns true' do
|
|
expect(failed).to eq true
|
|
end
|
|
end
|
|
|
|
context 'when it has succeeded' do
|
|
let(:status) { described_class::SUCCESS_STATUS }
|
|
|
|
it 'returns false' do
|
|
expect(failed).to eq false
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#success?' do
|
|
subject(:success) { described_class.new(status: status).success? }
|
|
|
|
context 'when it has failed' do
|
|
let(:status) { described_class::FAILED_STATUS }
|
|
|
|
it 'returns false' do
|
|
expect(success).to eq false
|
|
end
|
|
end
|
|
|
|
context 'when it has succeeded' do
|
|
let(:status) { described_class::SUCCESS_STATUS }
|
|
|
|
it 'returns true' do
|
|
expect(success).to eq true
|
|
end
|
|
end
|
|
end
|
|
end
|