1#!/usr/bin/env rspec
2
3require 'spec_helper'
4require File.join(File.dirname(__FILE__), File.join('../../', 'aggregate', 'boolean_summary.rb'))
5
6module MCollective
7  class Aggregate
8    describe Boolean_summary do
9      let(:boolean) { Boolean_summary.new(:test, nil, nil, :test_action) }
10
11      describe '#startup_hook' do
12        it 'should correctly configure the plugin and set default argument values if none are supplied' do
13          boolean.result.should == {:value => {}, :type => :collection, :output => :test}
14          boolean.aggregate_format.should == "%5s = %s"
15          boolean.arguments.should == {true => 'True', false => 'False'}
16        end
17
18        it 'should correctly set a custom format' do
19          bool = Boolean_summary.new(:test, nil, 'rspec', :test_action)
20          bool.aggregate_format.should == 'rspec'
21        end
22
23        it 'should correcrly set custom arguments' do
24          bool = Boolean_summary.new(:test, {true => 'rspec_true', false => 'rspec_false'}, 'rspec', :test_action)
25        end
26      end
27
28      describe '#process_result' do
29        it 'should process a single value' do
30          boolean.expects(:add_value).once
31          boolean.process_result(true, nil)
32        end
33
34        it 'should process multiple values' do
35          boolean.expects(:add_value).times(3)
36          boolean.process_result([true, true, true], nil)
37        end
38      end
39
40      describe '#add_value' do
41        it 'should add the correct truth value to the modified field' do
42          boolean.add_value(true)
43          boolean.add_value(true)
44          boolean.add_value(true)
45          boolean.add_value(false)
46          boolean.add_value(false)
47          boolean.result[:value].should == {'True' => 3, 'False' => 2}
48        end
49      end
50    end
51  end
52end
53