Sha256: 1b4558951a14d7fa84b6691568c73acbe6ee1fead1d3363a8d33bfde7afc084d

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

# encoding: utf-8

require 'spec_helper'

describe Algebra::Summarization::Summaries, '#summarize_by' do
  subject { object.summarize_by(tuple) }

  let(:object)       { described_class.new(header, summarizers)                         }
  let(:summarizers)  { { :count => summarizer }                                         }
  let(:summarizer)   { mock('Summarizer', :call => 1)                                   }
  let(:header)       { Relation::Header.coerce([ [ :id, Integer ] ])                    }
  let(:tuple_header) { Relation::Header.coerce([ [ :id, Integer ], [ :name, String ] ]) }
  let(:tuple)        { Tuple.new(tuple_header, [ 1, 'Dan Kubb' ])                       }

  it_should_behave_like 'a command method'

  it 'passes the tuple to the aggregate function' do
    summarizer.should_receive(:call).with(nil, tuple)
    subject
  end

  it 'aggregates the value returned by the summarizer' do
    key, value = subject.to_hash.first
    key.should eql(:count)
    value.should be_instance_of(Algebra::Summarization::Summary)
    value.call(tuple.project(header)).should eql(1)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
axiom-0.1.0 spec/unit/axiom/algebra/summarization/summaries/summarize_by_spec.rb