summaryrefslogtreecommitdiff
path: root/spec/models/concerns/chronic_duration_attribute_spec.rb
blob: 1a352537aaff1c24ba5ecb578cbfd0d449aecaf1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
require 'spec_helper'

shared_examples 'ChronicDurationAttribute' do
  describe 'dynamically defined methods' do
    it { expect(subject.class).to be_public_method_defined(virtual_field) }
    it { expect(subject.class).to be_public_method_defined("#{virtual_field}=") }

    it 'parses chronic duration input' do
      subject.send("#{virtual_field}=", "10m")

      expect(subject.send(source_field)).to eq(600)
    end

    it 'outputs chronic duration formated value' do
      subject.send("#{source_field}=", 120)

      expect(subject.send(virtual_field)).to eq('2m')
    end
  end
end

describe 'ChronicDurationAttribute' do
  let(:source_field) { :maximum_job_timeout }
  let(:virtual_field) { :maximum_job_timeout_user_readable }
  subject { Ci::Runner.new }

  it_behaves_like 'ChronicDurationAttribute'
end