require 'spec_helper' describe Ci::JobArtifact do set(:artifact) { create(:ci_job_artifact, :archive) } describe "Associations" do it { is_expected.to belong_to(:project) } it { is_expected.to belong_to(:job) } end it { is_expected.to respond_to(:file) } it { is_expected.to respond_to(:created_at) } it { is_expected.to respond_to(:updated_at) } it { is_expected.to delegate_method(:open).to(:file) } it { is_expected.to delegate_method(:exists?).to(:file) } describe '#set_size' do it 'sets the size' do expect(artifact.size).to eq(106365) end end describe '#file' do subject { artifact.file } context 'the uploader api' do it { is_expected.to respond_to(:store_dir) } it { is_expected.to respond_to(:cache_dir) } it { is_expected.to respond_to(:work_dir) } end end describe '#expire_in' do subject { artifact.expire_in } it { is_expected.to be_nil } context 'when expire_at is specified' do let(:expire_at) { Time.now + 7.days } before do artifact.expire_at = expire_at end it { is_expected.to be_within(5).of(expire_at - Time.now) } end end describe '#expire_in=' do subject { artifact.expire_in } it 'when assigning valid duration' do artifact.expire_in = '7 days' is_expected.to be_within(10).of(7.days.to_i) end it 'when assigning invalid duration' do expect { artifact.expire_in = '7 elephants' }.to raise_error(ChronicDuration::DurationParseError) is_expected.to be_nil end it 'when resetting value' do artifact.expire_in = nil is_expected.to be_nil end it 'when setting to 0' do artifact.expire_in = '0' is_expected.to be_nil end end end