GitLab steht Mittwoch, den 23. September, zwischen 10:00 und 12:00 Uhr aufgrund von Wartungsarbeiten nicht zur Verfügung.

analytics_build_entity_spec.rb 1.47 KB
Newer Older
1 2 3 4 5 6 7
require 'spec_helper'

describe AnalyticsBuildEntity do
  let(:entity) do
    described_class.new(build, request: double)
  end

8
  context 'build with an author' do
9
    let(:user) { create(:user) }
10 11 12
    let(:started_at) { 2.hours.ago }
    let(:finished_at) { 1.hour.ago }
    let(:build) { create(:ci_build, author: user, started_at: started_at, finished_at: finished_at) }
13 14 15

    subject { entity.as_json }

16 17
    it 'contains the URL' do
      expect(subject).to include(:url)
18 19
    end

20 21 22 23
    it 'contains the author' do
      expect(subject).to include(:author)
    end

24 25 26 27
    it 'does not contain sensitive information' do
      expect(subject).not_to include(/token/)
      expect(subject).not_to include(/variables/)
    end
28 29 30 31 32 33

    it 'contains the right started at' do
      expect(subject[:date]).to eq('about 2 hours ago')
    end

    it 'contains the duration' do
James Lopez's avatar
James Lopez committed
34
      expect(subject[:total_time]).to eq(hours: 1 )
35
    end
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62

    context 'no started at or finished at date' do
      let(:started_at) { nil }
      let(:finished_at) { nil }

      it 'does not blow up' do
        expect{ subject[:date] }.not_to raise_error
      end

      it ''
    end

    context 'no started at date' do
      let(:started_at) { nil }

      it 'does not blow up' do
        expect{ subject[:date] }.not_to raise_error
      end
    end

    context 'no finished at date' do
      let(:finished_at) { nil }

      it 'does not blow up' do
        expect{ subject[:date] }.not_to raise_error
      end
    end
63 64
  end
end