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

require 'spec_helper'

describe Service do
23

24
  describe "Associations" do
25 26
    it { is_expected.to belong_to :project }
    it { is_expected.to have_one :service_hook }
27 28 29 30
  end

  describe "Mass assignment" do
  end
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

  describe "Test Button" do
    before do
      @service = Service.new
    end

    describe "Testable" do
      let (:project) { create :project }

      before do
        @service.stub(
          project: project
        )
        @testable = @service.can_test?
      end

      describe :can_test do
48
        it { expect(@testable).to eq(true) }
49 50 51 52
      end
    end

    describe "With commits" do
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
53
      let (:project) { create :project }
54 55 56 57 58 59 60 61 62

      before do
        @service.stub(
          project: project
        )
        @testable = @service.can_test?
      end

      describe :can_test do
63
        it { expect(@testable).to eq(true) }
64 65 66
      end
    end
  end
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91

  describe "Template" do
    describe "for pushover service" do
      let(:service_template) {
        PushoverService.create(template: true, properties: {device: 'MyDevice', sound: 'mic', priority: 4, api_key: '123456789'})
      }
      let(:project) { create(:project) }

      describe 'should be prefilled for projects pushover service' do
        before do
          service_template
          project.build_missing_services
        end

        it "should have all fields prefilled" do
          service = project.pushover_service
          expect(service.template).to eq(false)
          expect(service.device).to eq('MyDevice')
          expect(service.sound).to eq('mic')
          expect(service.priority).to eq(4)
          expect(service.api_key).to eq('123456789')
        end
      end
    end
  end
92
end