BigW Consortium Gitlab

buildkite_service_spec.rb 2.62 KB
Newer Older
Keith Pitt committed
1 2 3 4
# == Schema Information
#
# Table name: services
#
5 6 7
#  id                    :integer          not null, primary key
#  type                  :string(255)
#  title                 :string(255)
8
#  project_id            :integer
9 10 11 12
#  created_at            :datetime
#  updated_at            :datetime
#  active                :boolean          default(FALSE), not null
#  properties            :text
13 14 15 16 17
#  template              :boolean          default(FALSE)
#  push_events           :boolean          default(TRUE)
#  issues_events         :boolean          default(TRUE)
#  merge_requests_events :boolean          default(TRUE)
#  tag_push_events       :boolean          default(TRUE)
Stan Hu committed
18
#  note_events           :boolean          default(TRUE), not null
Keith Pitt committed
19 20 21 22
#

require 'spec_helper'

Douwe Maan committed
23
describe BuildkiteService, models: true do
Keith Pitt committed
24
  describe 'Associations' do
25 26
    it { is_expected.to belong_to :project }
    it { is_expected.to have_one :service_hook }
Keith Pitt committed
27 28
  end

29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
  describe 'Validations' do
    context 'when service is active' do
      before { subject.active = true }

      it { is_expected.to validate_presence_of(:project_url) }
      it { is_expected.to validate_presence_of(:token) }
      it_behaves_like 'issue tracker service URL attribute', :project_url
    end

    context 'when service is inactive' do
      before { subject.active = false }

      it { is_expected.not_to validate_presence_of(:project_url) }
      it { is_expected.not_to validate_presence_of(:token) }
    end
  end

Keith Pitt committed
46 47 48
  describe 'commits methods' do
    before do
      @project = Project.new
49
      allow(@project).to receive(:default_branch).and_return('default-brancho')
Keith Pitt committed
50

51
      @service = BuildkiteService.new
52
      allow(@service).to receive_messages(
Keith Pitt committed
53 54
        project: @project,
        service_hook: true,
55
        project_url: 'https://buildkite.com/account-name/example-project',
Keith Pitt committed
56 57 58 59
        token: 'secret-sauce-webhook-token:secret-sauce-status-token'
      )
    end

60
    describe '#webhook_url' do
Keith Pitt committed
61
      it 'returns the webhook url' do
62
        expect(@service.webhook_url).to eq(
63
          'https://webhook.buildkite.com/deliver/secret-sauce-webhook-token'
64
        )
Keith Pitt committed
65 66 67
      end
    end

68
    describe '#commit_status_path' do
Keith Pitt committed
69
      it 'returns the correct status page' do
70
        expect(@service.commit_status_path('2ab7834c')).to eq(
71
          'https://gitlab.buildkite.com/status/secret-sauce-status-token.json?commit=2ab7834c'
72
        )
Keith Pitt committed
73 74 75
      end
    end

76
    describe '#build_page' do
Keith Pitt committed
77
      it 'returns the correct build page' do
Valery Sizov committed
78
        expect(@service.build_page('2ab7834c', nil)).to eq(
79
          'https://buildkite.com/account-name/example-project/builds?commit=2ab7834c'
80
        )
Keith Pitt committed
81 82 83 84
      end
    end
  end
end