summaryrefslogtreecommitdiff
path: root/spec/controllers/projects/cycle_analytics/events_controller_spec.rb
blob: b828c678d0c1a29f1c1a484d8ca70d226bb34580 (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
29
30
31
32
33
34
35
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
63
64
# frozen_string_literal: true

require 'spec_helper'

describe Projects::CycleAnalytics::EventsController do
  let(:project) { create(:project, :repository) }
  let(:user) { create(:user) }

  before do
    sign_in(user)
    project.add_maintainer(user)
  end

  describe 'cycle analytics not set up flag' do
    context 'with no data' do
      it 'is empty' do
        get_issue

        expect(response).to be_successful
        expect(JSON.parse(response.body)['events']).to be_empty
      end
    end

    context 'with data' do
      let(:milestone) { create(:milestone, project: project, created_at: 10.days.ago) }
      let(:issue) { create(:issue, project: project, created_at: 9.days.ago) }

      before do
        issue.update(milestone: milestone)
      end

      it 'is not empty' do
        get_issue

        expect(response).to be_successful
      end

      it 'contains event detais' do
        get_issue

        events = JSON.parse(response.body)['events']

        expect(events).not_to be_empty
        expect(events.first).to include('title', 'author', 'iid', 'total_time', 'created_at', 'url')
        expect(events.first['title']).to eq(issue.title)
      end

      context 'with data older than start date' do
        it 'is empty' do
          get_issue(additional_params: { cycle_analytics: { start_date: 7 } })

          expect(response).to be_successful

          expect(JSON.parse(response.body)['events']).to be_empty
        end
      end
    end
  end

  def get_issue(additional_params: {})
    params = additional_params.merge(namespace_id: project.namespace, project_id: project)
    get(:issue, params: params, format: :json)
  end
end