Sha256: 93854eebe555b5be7e08acde93714bad560e53ba6ad81fd933672396c551ae15

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 KB

Contents

require 'spec_helper'

module Aggrobot
  module QueryPlanner

    describe DefaultQueryPlanner do
      let(:collection) { double }
      let(:group) { 'group_col' }
      subject(:query_planner) { DefaultQueryPlanner.new(collection, group) }

      describe '#sub_query' do
        context 'when group was specified' do
          before do
            collection.should_receive(:where).with('group_col' => 'group').and_return('collection')
          end
          it 'returns the correct subquery' do
            expect(query_planner.sub_query('group')).to eq 'collection'
          end
        end

        context 'when default group' do
          let(:query_planner) { DefaultQueryPlanner.new(collection, DEFAULT_GROUP_BY) }
          it 'returns the correct subquery' do
            expect(query_planner.sub_query('group')).to eq collection
          end
        end
      end

      describe '#query_results' do
        context 'collection is none' do
          before { query_planner.stub(:collection_is_none? => true) }
          it { expect(query_planner.query_results).to be_empty }
        end

        context 'collection is not none' do
          let(:grouped_relation) { double }
          before do
            query_planner.stub(:collection_is_none? => false)

            collection.should_receive(:group).with('group_col').and_return(grouped_relation)
            grouped_relation.should_receive(:pluck)
            .with('group_col', SqlFunctions.count, 'extra_col1', 'extra_col2')
            .and_return(:results)
          end
          it 'returns results for columns' do
            expect(query_planner.query_results(['extra_col1', 'extra_col2'])).to eq :results
          end
        end

      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aggrobot-0.0.2 spec/unit/aggrobot/query_planners/default_query_planner_spec.rb