163 lines
3.8 KiB
Ruby
163 lines
3.8 KiB
Ruby
require 'spec_helper'
|
|
require 'rack-mini-profiler'
|
|
require 'yaml'
|
|
|
|
describe Rack::MiniProfiler::ClientTimerStruct do
|
|
|
|
def new_page
|
|
Rack::MiniProfiler::PageTimerStruct.new({})
|
|
end
|
|
|
|
def fixture(name)
|
|
YAML.load(File.open(File.dirname(__FILE__) + "/../fixtures/#{name}.yml"))
|
|
end
|
|
|
|
before do
|
|
@client = Rack::MiniProfiler::ClientTimerStruct.new
|
|
end
|
|
|
|
it 'defaults to no attributes' do
|
|
::JSON.parse(@client.to_json).should be_empty
|
|
end
|
|
|
|
describe 'init_from_form_data' do
|
|
|
|
describe 'without a form' do
|
|
before do
|
|
@client = Rack::MiniProfiler::ClientTimerStruct.init_from_form_data({}, new_page)
|
|
end
|
|
|
|
it 'is null' do
|
|
@client.should be_nil
|
|
end
|
|
|
|
end
|
|
|
|
describe 'with a simple request' do
|
|
before do
|
|
@client = Rack::MiniProfiler::ClientTimerStruct.init_from_form_data(fixture(:simple_client_request), new_page)
|
|
end
|
|
|
|
it 'has the correct RedirectCount' do
|
|
@client['RedirectCount'].should == 1
|
|
end
|
|
|
|
it 'has Timings' do
|
|
@client['Timings'].should_not be_empty
|
|
end
|
|
|
|
describe "bob.js" do
|
|
before do
|
|
@bob = @client['Timings'].find {|t| t["Name"] == "bob.js"}
|
|
end
|
|
|
|
it 'has it in the timings' do
|
|
@bob.should_not be_nil
|
|
end
|
|
|
|
it 'has the correct duration' do
|
|
@bob["Duration"].should == 6
|
|
end
|
|
|
|
end
|
|
|
|
describe "Navigation" do
|
|
before do
|
|
@nav = @client['Timings'].find {|t| t["Name"] == "Navigation"}
|
|
end
|
|
|
|
it 'has a Timing for the Navigation' do
|
|
@nav.should_not be_nil
|
|
end
|
|
|
|
it 'has the correct start' do
|
|
@nav['Start'].should == 0
|
|
end
|
|
|
|
it 'has the correct duration' do
|
|
@nav['Duration'].should == 16
|
|
end
|
|
end
|
|
|
|
describe "Simple" do
|
|
before do
|
|
@simple = @client['Timings'].find {|t| t["Name"] == "Simple"}
|
|
end
|
|
|
|
it 'has a Timing for the Simple' do
|
|
@simple.should_not be_nil
|
|
end
|
|
|
|
it 'has the correct start' do
|
|
@simple['Start'].should == 1
|
|
end
|
|
|
|
it 'has the correct duration' do
|
|
@simple['Duration'].should == 10
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
describe 'with some odd values' do
|
|
before do
|
|
@client = Rack::MiniProfiler::ClientTimerStruct.init_from_form_data(fixture(:weird_client_request), new_page)
|
|
end
|
|
|
|
it 'has the correct RedirectCount' do
|
|
@client['RedirectCount'].should == 99
|
|
end
|
|
|
|
it 'has Timings' do
|
|
@client['Timings'].should_not be_empty
|
|
end
|
|
|
|
it 'has no timing when the start is before Navigation' do
|
|
@client['Timings'].find {|t| t["Name"] == "Previous"}.should be_nil
|
|
end
|
|
|
|
describe "weird" do
|
|
before do
|
|
@weird = @client['Timings'].find {|t| t["Name"] == "Weird"}
|
|
end
|
|
|
|
it 'has a Timing for the Weird' do
|
|
@weird.should_not be_nil
|
|
end
|
|
|
|
it 'has the correct start' do
|
|
@weird['Start'].should == 11
|
|
end
|
|
|
|
it 'has a 0 duration because start time is greater than end time' do
|
|
@weird['Duration'].should == 0
|
|
end
|
|
end
|
|
|
|
describe "differentFormat" do
|
|
before do
|
|
@diff = @client['Timings'].find {|t| t["Name"] == "differentFormat"}
|
|
end
|
|
|
|
it 'has a Timing for the differentFormat' do
|
|
@diff.should_not be_nil
|
|
end
|
|
|
|
it 'has the correct start' do
|
|
@diff['Start'].should == 1
|
|
end
|
|
|
|
it 'has a -1 duration because the format was different' do
|
|
@diff['Duration'].should == -1
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|