Commit 9e9bd5c87b398ddb43f782d540f1875b76a9d9b7

Authored by MoisesMachado
1 parent 83e70c2f

ActionItem4: integration tests and user documentation added

git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@140 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/views/manage_tags/_a_tag.rhtml
1 <li> 1 <li>
2 <%= a_tag.name %> 2 <%= a_tag.name %>
3 <%= link_to _('Edit'), {:action => 'edit', :id => a_tag } %> 3 <%= link_to _('Edit'), {:action => 'edit', :id => a_tag } %>
  4 +<%= help _('Edit the attributes of this tag (name, parent and pending status)') %>
4 <%= link_to _('Destroy'), {:action => 'destroy', :id => a_tag} %> 5 <%= link_to _('Destroy'), {:action => 'destroy', :id => a_tag} %>
  6 +<%= help _('Erase the tag and all its subtags but not the tagged content') %>
5 <%= link_to _('Filter by this tag'), {:action => 'list', :parent => a_tag} %> 7 <%= link_to _('Filter by this tag'), {:action => 'list', :parent => a_tag} %>
6 -<%= link_to _('Approve tag'), {:action => 'approve', :id => a_tag} if a_tag.pending? %> <ul> 8 +<%= help _('List only the tags that are subtags of this tag') %>
  9 +<% if a_tag.pending? %>
  10 + <%= link_to _('Approve tag'), {:action => 'approve', :id => a_tag} %>
  11 + <%= help _('Approve this tag so content can be tagged with it and subtags of it can br created') %>
  12 +<% end %>
  13 +<ul>
7 <%= render :partial => 'a_tag', :collection => a_tag.children.select{|t|!t.pending?} %> 14 <%= render :partial => 'a_tag', :collection => a_tag.children.select{|t|!t.pending?} %>
8 </ul> 15 </ul>
9 </li> 16 </li>
app/views/manage_tags/_form.rhtml
1 Name: <%= text_field 'tag', 'name' %> <br> 1 Name: <%= text_field 'tag', 'name' %> <br>
2 -Parent tag: <%= select("tag", "parent_id", @parent_tags.collect {|p| [ p.name, p.id ] }, { :include_blank => true }) %> <br> 2 +Parent tag: <%= select('tag', 'parent_id', @parent_tags.collect {|p| [ p.name, p.id ] }, { :include_blank => true }) %> <br>
3 Pending: <%= check_box 'tag', 'pending' %> <br> 3 Pending: <%= check_box 'tag', 'pending' %> <br>
app/views/manage_tags/list.rhtml
@@ -10,5 +10,9 @@ @@ -10,5 +10,9 @@
10 <%= render :partial => 'a_tag', :collection => @pending_tags %> 10 <%= render :partial => 'a_tag', :collection => @pending_tags %>
11 </ul> 11 </ul>
12 12
  13 +<%= link_to _('Top'), {:action => 'list'} if @parent %>
  14 +<%= help _('Go to the top view of the tags') %>
13 <%= link_to _('Up'), {:action => 'list', :parent => @parent.parent} if @parent %> 15 <%= link_to _('Up'), {:action => 'list', :parent => @parent.parent} if @parent %>
  16 +<% help _('Filter by the parent of the actual tag') %>
14 <%= link_to _('New tag'), {:action => 'new'} %> 17 <%= link_to _('New tag'), {:action => 'new'} %>
  18 +<%= help _('Create a new tag') %>
test/functional/manage_tags_controller_test.rb
@@ -6,7 +6,7 @@ class ManageTagsController; def rescue_action(e) raise e end; end @@ -6,7 +6,7 @@ class ManageTagsController; def rescue_action(e) raise e end; end
6 6
7 class ManageTagsControllerTest < Test::Unit::TestCase 7 class ManageTagsControllerTest < Test::Unit::TestCase
8 8
9 - fixtures :tags 9 + fixtures :profiles, :boxes, :blocks, :domains
10 10
11 def setup 11 def setup
12 @controller = ManageTagsController.new 12 @controller = ManageTagsController.new
@@ -30,13 +30,18 @@ class ManageTagsControllerTest &lt; Test::Unit::TestCase @@ -30,13 +30,18 @@ class ManageTagsControllerTest &lt; Test::Unit::TestCase
30 end 30 end
31 31
32 def test_scoped_list 32 def test_scoped_list
33 - assert_nothing_raised { Tag.find(1) }  
34 - get :list, :parent => Tag.find(1) 33 + parent_tag = Tag.create(:name => 'parent_tag')
  34 + child_tag = Tag.create(:name => 'child_tag', :parent => parent_tag)
  35 + orphan_tag = Tag.create(:name => 'orphan_tag')
  36 + get :list, :parent => parent_tag
35 assert_response :success 37 assert_response :success
36 assert_template 'list' 38 assert_template 'list'
37 assert_not_nil assigns(:parent), 'the list should be scoped' 39 assert_not_nil assigns(:parent), 'the list should be scoped'
38 assert_not_nil assigns(:tags) 40 assert_not_nil assigns(:tags)
39 assert_not_nil assigns(:pending_tags) 41 assert_not_nil assigns(:pending_tags)
  42 + assert assigns(:tags).include?(child_tag)
  43 + assert (not assigns(:tags).include?(orphan_tag))
  44 +
40 end 45 end
41 46
42 def test_new 47 def test_new
@@ -61,43 +66,44 @@ class ManageTagsControllerTest &lt; Test::Unit::TestCase @@ -61,43 +66,44 @@ class ManageTagsControllerTest &lt; Test::Unit::TestCase
61 end 66 end
62 67
63 def test_edit 68 def test_edit
64 - assert_nothing_raised { Tag.find(1) }  
65 - get :edit, :id => 1 69 + tag_to_edit = Tag.create(:name => 'tag_to_edit')
  70 + get :edit, :id => tag_to_edit.id
66 assert assigns(:tag) 71 assert assigns(:tag)
67 assert assigns(:parent_tags) 72 assert assigns(:parent_tags)
68 end 73 end
69 74
70 def test_update 75 def test_update
71 - assert_nothing_raised { Tag.find(1) }  
72 - post :update, :id => 1, :tag => {:name => 'altered_tag'} 76 + tag_to_update = Tag.create(:name => 'tag_to_update')
  77 + post :update, :id => tag_to_update.id, :tag => {:name => 'altered_tag'}
73 assert_response :redirect 78 assert_response :redirect
74 assert_redirected_to :action => 'list' 79 assert_redirected_to :action => 'list'
75 assert assigns(:tag) 80 assert assigns(:tag)
  81 + assert_equal 'altered_tag', assigns(:tag).name
76 end 82 end
77 83
78 def test_update_wrong 84 def test_update_wrong
79 - assert_nothing_raised { Tag.find(1) }  
80 - post :update, :id => 1, :tag => {:name => ''} 85 + wrong_tag = Tag.create(:name => 'wrong_tag')
  86 + post :update, :id => wrong_tag, :tag => {:name => ''}
81 assert_response :success 87 assert_response :success
82 assert_template 'edit' 88 assert_template 'edit'
83 assert assigns(:parent_tags) 89 assert assigns(:parent_tags)
84 end 90 end
85 91
86 def test_destroy 92 def test_destroy
87 - assert_nothing_raised { Tag.find(1) }  
88 - post :destroy, :id => 1 93 + destroyed_tag = Tag.create(:name => 'tag_to_destroy')
  94 + post :destroy, :id => destroyed_tag.id
89 assert_response :redirect 95 assert_response :redirect
90 assert_redirected_to :action => 'list' 96 assert_redirected_to :action => 'list'
91 assert_not_nil flash[:notice] 97 assert_not_nil flash[:notice]
92 - assert_raise(ActiveRecord::RecordNotFound) { Tag.find(1) } 98 + assert_raise(ActiveRecord::RecordNotFound) { Tag.find(destroyed_tag.id) }
93 end 99 end
94 100
95 def test_approve 101 def test_approve
96 - assert_nothing_raised { Tag.find_with_pendings(4) }  
97 - assert Tag.find_with_pendings(4).pending?  
98 - post :approve, :id => 4 102 + pending_tag = Tag.create(:name => 'pending_tag', :pending => true)
  103 + assert pending_tag.pending?
  104 + post :approve, :id => pending_tag.id
99 assert_response :redirect 105 assert_response :redirect
100 assert_redirected_to :action => 'list' 106 assert_redirected_to :action => 'list'
101 - assert ( not Tag.find_with_pendings(4).pending? ) 107 + assert ( not Tag.find_with_pendings(pending_tag.id).pending? )
102 end 108 end
103 end 109 end
test/integration/manage_tags_test.rb
1 require "#{File.dirname(__FILE__)}/../test_helper" 1 require "#{File.dirname(__FILE__)}/../test_helper"
2 2
3 class ManageTagsTest < ActionController::IntegrationTest 3 class ManageTagsTest < ActionController::IntegrationTest
4 - fixtures :tags, :profiles, :users, :virtual_communities, :domains, :boxes, :blocks 4 + fixtures :tags, :profiles, :boxes, :blocks
5 5
6 def test_tags_create_edit_destroy 6 def test_tags_create_edit_destroy
7 get '/admin/manage_tags' 7 get '/admin/manage_tags'
@@ -24,6 +24,41 @@ class ManageTagsTest &lt; ActionController::IntegrationTest @@ -24,6 +24,41 @@ class ManageTagsTest &lt; ActionController::IntegrationTest
24 follow_redirect! 24 follow_redirect!
25 assert_response :success 25 assert_response :success
26 assert_equal '/admin/manage_tags/list', path 26 assert_equal '/admin/manage_tags/list', path
  27 + assert_tag :tag => 'a', :attributes => {:href => %r[/admin/manage_tags/edit]}
  28 +
  29 + get '/admin/manage_tags/edit', :id => 1
  30 + assert_response :success
  31 + assert_tag :tag => 'input', :attributes => {:name => 'tag[name]'}
  32 + assert_tag :tag => 'select', :attributes => {:name => 'tag[parent_id]'}
  33 + assert_tag :tag => 'input', :attributes => {:name => 'tag[pending]'}
  34 +
  35 + post '/admin/manage_tags/update', :id => 1, :tag => {:name => 'bla_tag'}
  36 + assert_response :redirect
  37 +
  38 + follow_redirect!
  39 + assert_response :success
  40 + assert_equal '/admin/manage_tags/list', path
  41 + assert_tag :tag => 'a', :attributes => {:href => %r[/admin/manage_tags/destroy]}
  42 +
  43 + post '/admin/manage_tags/destroy', :id => 1
  44 + assert_response :redirect
  45 +
  46 + follow_redirect!
  47 + assert_response :success
  48 + assert_equal '/admin/manage_tags/list', path
  49 + end
  50 +
  51 + def test_approve_tag
  52 + get '/admin/manage_tags/list'
  53 + assert_response :success
  54 + assert_tag :tag => 'a', :attributes => {:href => %r[/admin/manage_tags/approve]}
  55 +
  56 + post '/admin/manage_tags/approve', :id => 5
  57 + assert_response :redirect
  58 +
  59 + follow_redirect!
  60 + assert_response :success
  61 + assert_equal '/admin/manage_tags/list', path
27 end 62 end
28 63
29 end 64 end