spec/line_chart_spec.rb in seer-0.4.0 vs spec/line_chart_spec.rb in seer-0.5.0

- old
+ new

@@ -12,62 +12,75 @@ :chart_options => {}, :chart_element => 'chart' ) end - describe 'defaults' do - - it 'colors' do - @chart.colors.should == Seer::Chart::DEFAULT_COLORS - end - - it 'legend' do - @chart.legend.should == Seer::Chart::DEFAULT_LEGEND_LOCATION - end - - it 'height' do - @chart.height.should == Seer::Chart::DEFAULT_HEIGHT - end - - it 'width' do - @chart.width.should == Seer::Chart::DEFAULT_WIDTH - end - + describe 'defaults' do + it_should_behave_like 'it sets default values' end describe 'graph options' do - [:axis_color, :axis_background_color, :axis_font_size, :background_color, :border_color, :colors, :enable_tooltip, :focus_border_color, :height, :legend, :legend_background_color, :legend_font_size, :legend_text_color, :line_size, :log_scale, :max, :min, :point_size, :reverse_axis, :show_categories, :smooth_line, :title, :title_x, :title_y, :title_color, :title_font_size, :tooltip_font_size, :tooltip_height, :number, :tooltip_width, :width].each do |accessor| + [:axis_color, :axis_background_color, :axis_font_size, :background_color, :border_color, :enable_tooltip, :focus_border_color, :height, :legend, :legend_background_color, :legend_font_size, :legend_text_color, :line_size, :log_scale, :max, :min, :point_size, :reverse_axis, :show_categories, :smooth_line, :title, :title_x, :title_y, :title_color, :title_font_size, :tooltip_font_size, :tooltip_height, :number, :tooltip_width, :width].each do |accessor| it "sets its #{accessor} value" do @chart.send("#{accessor}=", 'foo') @chart.send(accessor).should == 'foo' end end + + it_should_behave_like 'it has colors attribute' end it 'renders as JavaScript' do (@chart.to_js =~ /javascript/).should be_true (@chart.to_js =~ /linechart/).should be_true end it 'sets its data columns' do - @chart.data_columns.should =~ /addRows\(3\)/ - @chart.data_columns.should =~ /addColumn\('string', 'Date'\)/ - @chart.data_columns.should =~ /addColumn\('string', 'Date'\)/ - @chart.data_columns.should =~ /addColumn\('number', '0'\)/ - @chart.data_columns.should =~ /addColumn\('number', '1'\)/ - @chart.data_columns.should =~ /addColumn\('number', '2'\)/ - @chart.data_columns.should =~ /addColumn\('number', '3'\)/ + @chart.data_columns.should =~ /addRows\(5\)/ + @chart.data_columns.should add_column('string', 'Date') + @chart.data_columns.should add_column('number', '0') + @chart.data_columns.should add_column('number', '1') + @chart.data_columns.should add_column('number', '2') + @chart.data_columns.should add_column('number', '3') end it 'sets its data table' do - @chart.data_table.to_s.should =~ /data\.setCell\(0, 0,'1'\)/ - @chart.data_table.to_s.should =~ /data\.setCell\(1, 0,'2'\)/ - @chart.data_table.to_s.should =~ /data\.setCell\(2, 0,'3'\)/ - @chart.data_table.to_s.should =~ /data\.setCell\(0,1,8\)/ - @chart.data_table.to_s.should =~ /data\.setCell\(2,1,8\)/ - @chart.data_table.to_s.should =~ /data\.setCell\(0,2,8\)/ - @chart.data_table.to_s.should =~ /data\.setCell\(1,2,8\)/ - @chart.data_table.to_s.should =~ /data\.setCell\(2,2,8\)/ + @chart.data_table.to_s.should set_cell(0, 0,'1') + @chart.data_table.to_s.should set_cell(1, 0,'2') + @chart.data_table.to_s.should set_cell(2, 0,'3') + @chart.data_table.to_s.should set_cell(3, 0,'4') + @chart.data_table.to_s.should set_cell(4, 0,'5') + @chart.data_table.to_s.should set_cell(0,1,8) + @chart.data_table.to_s.should set_cell(2,1,8) + @chart.data_table.to_s.should set_cell(0,2,8) + @chart.data_table.to_s.should set_cell(1,2,8) + @chart.data_table.to_s.should set_cell(2,2,8) + end + + describe 'when data_series is an array of arrays of arrays/hashes' do + before(:each) do + data_series = Array.new(3) {|i| [[i, i+1], [i+1, i+2]]} + @chart = Seer::LineChart.new( + :data => [0,1,2,3], + :series_label => 'to_s', + :data_series => data_series, + :data_label => 'first', + :data_method => 'size', + :chart_options => {}, + :chart_element => 'chart' + ) + end + + it 'calculates number of rows' do + @chart.data_columns.should =~ /addRows\(4\)/ + end + + it 'sets its data table' do + @chart.data_table.to_s.should set_cell(0, 0,'0') + @chart.data_table.to_s.should set_cell(1, 0,'1') + @chart.data_table.to_s.should set_cell(2, 0,'2') + @chart.data_table.to_s.should set_cell(3, 0,'3') + end end end