Skip to content

Commit

Permalink
Refactor report specs to remove some ugly state checking
Browse files Browse the repository at this point in the history
  • Loading branch information
adzap committed Apr 13, 2012
1 parent 29210aa commit e5d7c79
Showing 1 changed file with 20 additions and 26 deletions.
46 changes: 20 additions & 26 deletions spec/method_profiler/report_spec.rb
Expand Up @@ -25,54 +25,48 @@
results.size.should == 5
end

it "sorts by average time (descending) by default" do
it "returns results sorted by average time (descending) by default" do
results = @report.to_a
average_times = results.map { |r| r[:average] }
average_times.should == average_times.sort.reverse
end
end

it "sorts by another type if it's been changed" do
describe "#sort_by" do
it "sets the result key to order results by" do
results = @report.sort_by(:min).to_a
min_times = results.map { |r| r[:min] }
min_times.should == min_times.sort.reverse
end

it "sorts in a different direction if it's been changed" do
results = @report.order(:ascending).to_a
average_times = results.map { |r| r[:average] }
average_times.should == average_times.sort
end
end

describe "#sort_by" do
it "sets the sort type" do
@report.sort_by(:total_calls)
@report.instance_variable_get("@sort_by").should == :total_calls
end

it "defaults to average if an invalid sort type is passed" do
@report.sort_by(:foo)
@report.instance_variable_get("@sort_by").should == :average
results = @report.sort_by(:foo).to_a
average_times = results.map { |r| r[:average] }
average_times.should == average_times.sort.reverse
end
end

describe "#order" do
it "sets the sort direction" do
@report.order(:ascending)
@report.instance_variable_get("@order").should == :ascending
results = @report.order(:ascending).to_a
average_times = results.map { |r| r[:average] }
average_times.should == average_times.sort
end

it "defaults to descending if an invalid direction is passed" do
@report.order(:foo)
@report.instance_variable_get("@order").should == :descending
results = @report.order(:foo).to_a
average_times = results.map { |r| r[:average] }
average_times.should == average_times.sort.reverse
end

it "allows normalizes :asc and :desc aliases" do
@report.order(:asc)
@report.instance_variable_get("@order").should == :ascending
it "allows :asc and :desc aliases" do
results = @report.order(:asc).to_a
average_times = results.map { |r| r[:average] }
average_times.should == average_times.sort

@report.order(:desc)
@report.instance_variable_get("@order").should == :descending
results = @report.order(:desc).to_a
average_times = results.map { |r| r[:average] }
average_times.should == average_times.sort.reverse
end
end

Expand Down

0 comments on commit e5d7c79

Please sign in to comment.