aeden / activewarehouse

ActiveWarehouse for Rails - Implement data warehouses with Rails

This URL has Read+Write access

activewarehouse / test / cube_query_result_test.rb
100644 40 lines (31 sloc) 1.423 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
require File.join(File.dirname(__FILE__), 'test_helper')
 
class CubeQueryResultTest < Test::Unit::TestCase
 
  def setup
    super
    @cqr = ActiveWarehouse::CubeQueryResult.new(StoreInventorySnapshotFact.aggregate_fields)
  end
  
  def test_add_data
    @cqr.add_data('a', 'b', {"Sum Quantity Sold" => 1, "Sum Dollar Value At Cost" => 2})
    assert_equal( {"Sum Quantity Sold" => 1, "Sum Dollar Value At Cost" => 2}, @cqr.values('a', 'b') )
 
    @cqr.add_data(2003, 'c', {"Sum Quantity Sold" => 1, "Sum Dollar Value At Cost" => 2})
    assert_equal( {"Sum Quantity Sold" => 1, "Sum Dollar Value At Cost" => 2}, @cqr.values('2003', 'c') )
    
    assert_equal 1, @cqr.value('a', 'b', "Sum Quantity Sold")
    assert_equal 2, @cqr.value('a', 'b', "Sum Dollar Value At Cost")
    assert_equal 0, @cqr.value('b', 'b', "Sum Dollar Value At Cost")
  end
  
  def test_error_on_incorrect_agg_field_name
    assert_raise ArgumentError do
      @cqr.add_data('a', 'b', {"doesn't exist" => 1, "Sum Dollar Value At Cost" => 2})
    end
  end
  
  def test_error_on_empty_agg_fields
    assert_raise ArgumentError do
      @cqr = ActiveWarehouse::CubeQueryResult.new(nil)
    end
  end
  
  def test_has_row_values
    @cqr.add_data('a', 'b', {"Sum Quantity Sold" => 1, "Sum Dollar Value At Cost" => 2})
    assert @cqr.has_row_values?('a')
    assert ! @cqr.has_row_values?('b')
  end
  
end