74 lines
1.7 KiB
Ruby
74 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe Gitlab::Ci::Build::DurationParser do
|
|
describe '.validate_duration', :request_store do
|
|
subject { described_class.validate_duration(value) }
|
|
|
|
context 'with never' do
|
|
let(:value) { 'never' }
|
|
|
|
it { is_expected.to be_truthy }
|
|
end
|
|
|
|
context 'with never value camelized' do
|
|
let(:value) { 'Never' }
|
|
|
|
it { is_expected.to be_truthy }
|
|
end
|
|
|
|
context 'with a duration' do
|
|
let(:value) { '1 Day' }
|
|
let(:other_value) { '30 seconds' }
|
|
|
|
it { is_expected.to be_truthy }
|
|
|
|
it 'caches data' do
|
|
expect(ChronicDuration).to receive(:parse).with(value).once.and_call_original
|
|
expect(ChronicDuration).to receive(:parse).with(other_value).once.and_call_original
|
|
|
|
2.times do
|
|
expect(described_class.validate_duration(value)).to eq(86400)
|
|
expect(described_class.validate_duration(other_value)).to eq(30)
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'without a duration' do
|
|
let(:value) { 'something' }
|
|
|
|
it { is_expected.to be_falsy }
|
|
|
|
it 'caches data' do
|
|
expect(ChronicDuration).to receive(:parse).with(value).once.and_call_original
|
|
|
|
2.times do
|
|
expect(described_class.validate_duration(value)).to be_falsey
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#seconds_from_now' do
|
|
subject { described_class.new(value).seconds_from_now }
|
|
|
|
context 'with never' do
|
|
let(:value) { 'never' }
|
|
|
|
it { is_expected.to be_nil }
|
|
end
|
|
|
|
context 'with an empty string' do
|
|
let(:value) { '' }
|
|
|
|
it { is_expected.to be_nil }
|
|
end
|
|
|
|
context 'with a duration' do
|
|
let(:value) { '1 day' }
|
|
|
|
it { is_expected.to be_like_time(1.day.from_now) }
|
|
end
|
|
end
|
|
end
|