63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
require 'spec_helper'
 | 
						|
 | 
						|
RSpec.describe Gitlab::Prometheus::Adapter do
 | 
						|
  let_it_be(:project) { create(:project) }
 | 
						|
  let_it_be(:cluster, reload: true) { create(:cluster, :provided_by_user, environment_scope: '*', projects: [project]) }
 | 
						|
 | 
						|
  subject { described_class.new(project, cluster) }
 | 
						|
 | 
						|
  describe '#prometheus_adapter' do
 | 
						|
    context 'prometheus integration can execute queries' do
 | 
						|
      let(:prometheus_integration) { double(:prometheus_integration, can_query?: true) }
 | 
						|
 | 
						|
      before do
 | 
						|
        allow(project).to receive(:find_or_initialize_integration).with('prometheus').and_return prometheus_integration
 | 
						|
      end
 | 
						|
 | 
						|
      it 'return prometheus integration as prometheus adapter' do
 | 
						|
        expect(subject.prometheus_adapter).to eq(prometheus_integration)
 | 
						|
      end
 | 
						|
 | 
						|
      context 'with cluster with prometheus available' do
 | 
						|
        let!(:prometheus) { create(:clusters_integrations_prometheus, cluster: cluster) }
 | 
						|
 | 
						|
        it 'returns prometheus integration' do
 | 
						|
          expect(subject.prometheus_adapter).to eq(prometheus_integration)
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context "prometheus integration can't execute queries" do
 | 
						|
      let(:prometheus_integration) { double(:prometheus_integration, can_query?: false) }
 | 
						|
 | 
						|
      before do
 | 
						|
        allow(project).to receive(:find_or_initialize_integration).with('prometheus').and_return prometheus_integration
 | 
						|
      end
 | 
						|
 | 
						|
      context 'with cluster with prometheus disabled' do
 | 
						|
        let!(:prometheus) { create(:clusters_integrations_prometheus, enabled: false, cluster: cluster) }
 | 
						|
 | 
						|
        it 'returns nil' do
 | 
						|
          expect(subject.prometheus_adapter).to be_nil
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      context 'with cluster with prometheus available' do
 | 
						|
        let!(:prometheus) { create(:clusters_integrations_prometheus, cluster: cluster) }
 | 
						|
 | 
						|
        it 'returns application handling all environments' do
 | 
						|
          expect(subject.prometheus_adapter).to eq(prometheus)
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      context 'with cluster without prometheus installed' do
 | 
						|
        it 'returns nil' do
 | 
						|
          expect(subject.prometheus_adapter).to be_nil
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |