Create object for list tests, and assert the responses have the
required number of results. Previously, the tests would pass regardless of whether anything was in the database.
This commit is contained in:
parent
a66f0f32e9
commit
717f4e1b7b
1 changed files with 42 additions and 14 deletions
|
@ -166,27 +166,48 @@ class TraceControllerTest < ActionController::TestCase
|
|||
)
|
||||
end
|
||||
|
||||
# Check that the list of changesets is displayed
|
||||
# Check that the list of traces is displayed
|
||||
def test_list
|
||||
# The fourth test below is surpisingly sensitive to timestamp ordering when the timestamps are equal.
|
||||
create(:trace, :visibility => "public", :timestamp => 4.seconds.ago) do |trace|
|
||||
create(:tracetag, :trace => trace, :tag => "London")
|
||||
end
|
||||
create(:trace, :visibility => "public", :timestamp => 3.seconds.ago) do |trace|
|
||||
create(:tracetag, :trace => trace, :tag => "Birmingham")
|
||||
end
|
||||
create(:trace, :visibility => "private", :user => users(:public_user), :timestamp => 2.seconds.ago) do |trace|
|
||||
create(:tracetag, :trace => trace, :tag => "London")
|
||||
end
|
||||
create(:trace, :visibility => "private", :user => users(:public_user), :timestamp => 1.second.ago) do |trace|
|
||||
create(:tracetag, :trace => trace, :tag => "Birmingham")
|
||||
end
|
||||
|
||||
# First with the public list
|
||||
get :list
|
||||
check_trace_list Trace.visible_to_all
|
||||
check_trace_list Trace.visible_to_all, 2
|
||||
|
||||
# Restrict traces to those with a given tag
|
||||
get :list, :tag => "London"
|
||||
check_trace_list Trace.tagged("London").visible_to_all
|
||||
check_trace_list Trace.tagged("London").visible_to_all, 1
|
||||
|
||||
# Should see more when we are logged in
|
||||
get :list, {}, { :user => users(:public_user).id }
|
||||
check_trace_list Trace.visible_to(users(:public_user).id)
|
||||
check_trace_list Trace.visible_to(users(:public_user).id), 4
|
||||
|
||||
# Again, we should see more when we are logged in
|
||||
get :list, { :tag => "London" }, { :user => users(:public_user).id }
|
||||
check_trace_list Trace.tagged("London").visible_to(users(:public_user).id)
|
||||
check_trace_list Trace.visible_to(users(:public_user).id).tagged("London"), 2
|
||||
end
|
||||
|
||||
# Check that I can get mine
|
||||
def test_list_mine
|
||||
create(:trace, :visibility => "public") do |trace|
|
||||
create(:tracetag, :trace => trace, :tag => "Birmingham")
|
||||
end
|
||||
create(:trace, :visibility => "private", :user => users(:public_user)) do |trace|
|
||||
create(:tracetag, :trace => trace, :tag => "London")
|
||||
end
|
||||
|
||||
# First try to get it when not logged in
|
||||
get :mine
|
||||
assert_redirected_to :controller => "user", :action => "login", :referer => "/traces/mine"
|
||||
|
@ -197,30 +218,36 @@ class TraceControllerTest < ActionController::TestCase
|
|||
|
||||
# Fetch the actual list
|
||||
get :list, { :display_name => users(:public_user).display_name }, { :user => users(:public_user).id }
|
||||
check_trace_list users(:public_user).traces
|
||||
check_trace_list users(:public_user).traces, 1
|
||||
end
|
||||
|
||||
# Check the list of changesets for a specific user
|
||||
# Check the list of traces for a specific user
|
||||
def test_list_user
|
||||
create(:trace)
|
||||
create(:trace, :visibility => "public", :user => users(:public_user))
|
||||
create(:trace, :visibility => "private", :user => users(:public_user)) do |trace|
|
||||
create(:tracetag, :trace => trace, :tag => "London")
|
||||
end
|
||||
|
||||
# Test a user with no traces
|
||||
get :list, :display_name => users(:second_public_user).display_name
|
||||
check_trace_list users(:second_public_user).traces.visible_to_all
|
||||
check_trace_list users(:second_public_user).traces.visible_to_all, 0
|
||||
|
||||
# Test a user with some traces - should see only public ones
|
||||
get :list, :display_name => users(:public_user).display_name
|
||||
check_trace_list users(:public_user).traces.visible_to_all
|
||||
check_trace_list users(:public_user).traces.visible_to_all, 1
|
||||
|
||||
# Should still see only public ones when authenticated as another user
|
||||
get :list, { :display_name => users(:public_user).display_name }, { :user => users(:normal_user).id }
|
||||
check_trace_list users(:public_user).traces.visible_to_all
|
||||
check_trace_list users(:public_user).traces.visible_to_all, 1
|
||||
|
||||
# Should see all traces when authenticated as the target user
|
||||
get :list, { :display_name => users(:public_user).display_name }, { :user => users(:public_user).id }
|
||||
check_trace_list users(:public_user).traces
|
||||
check_trace_list users(:public_user).traces, 2
|
||||
|
||||
# Should only see traces with the correct tag when a tag is specified
|
||||
get :list, { :display_name => users(:public_user).display_name, :tag => "London" }, { :user => users(:public_user).id }
|
||||
check_trace_list users(:public_user).traces.tagged("London")
|
||||
check_trace_list users(:public_user).traces.tagged("London"), 1
|
||||
|
||||
# Should get an error if the user does not exist
|
||||
get :list, :display_name => "UnknownUser"
|
||||
|
@ -932,11 +959,12 @@ class TraceControllerTest < ActionController::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def check_trace_list(traces)
|
||||
def check_trace_list(traces, count)
|
||||
assert_response :success
|
||||
assert_template "list"
|
||||
assert_equal traces.count, count
|
||||
|
||||
if traces.count > 0
|
||||
if count > 0
|
||||
assert_select "table#trace_list tbody", :count => 1 do
|
||||
assert_select "tr", :count => traces.visible.count do |rows|
|
||||
traces.visible.order("timestamp DESC").zip(rows).each do |trace, row|
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue