# frozen_string_literal: true require 'spec_helper' RSpec.describe Gitlab::UsageDataQueries do describe '#add_metric' do let(:metric) { 'CountBoardsMetric' } it 'builds the query for given metric' do expect(described_class.add_metric(metric)).to eq('SELECT COUNT("boards"."id") FROM "boards"') end end describe '.count' do it 'returns the raw SQL' do expect(described_class.count(User)).to start_with('SELECT COUNT("users"."id") FROM "users"') end it 'does not mix a nil column with keyword arguments' do expect(described_class.count(User, nil)).to eq('SELECT COUNT("users"."id") FROM "users"') end end describe '.distinct_count' do it 'returns the raw SQL' do expect(described_class.distinct_count(Issue, :author_id)).to eq('SELECT COUNT(DISTINCT "issues"."author_id") FROM "issues"') end it 'does not mix a nil column with keyword arguments' do expect(described_class.distinct_count(Issue, nil, start: 1, finish: 2)).to eq('SELECT COUNT(DISTINCT "issues"."id") FROM "issues"') end end describe '.redis_usage_data' do subject(:redis_usage_data) { described_class.redis_usage_data { 42 } } it 'returns a class for redis_usage_data with a counter call' do expect(described_class.redis_usage_data(Gitlab::UsageDataCounters::WikiPageCounter)) .to eq(redis_usage_data_counter: Gitlab::UsageDataCounters::WikiPageCounter) end it 'returns a stringified block for redis_usage_data with a block' do is_expected.to include(:redis_usage_data_block) expect(redis_usage_data[:redis_usage_data_block]).to start_with('#