Sha256: dad80740ebfa2d67709fea9b35a4390ba07575f346387795899aa87486fbbc15

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 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)   { double('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.1 spec/unit/axiom/algebra/summarization/summaries/summarize_by_spec.rb