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 1 <li>
2 2 <%= a_tag.name %>
3 3 <%= link_to _('Edit'), {:action => 'edit', :id => a_tag } %>
  4 +<%= help _('Edit the attributes of this tag (name, parent and pending status)') %>
4 5 <%= link_to _('Destroy'), {:action => 'destroy', :id => a_tag} %>
  6 +<%= help _('Erase the tag and all its subtags but not the tagged content') %>
5 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 14 <%= render :partial => 'a_tag', :collection => a_tag.children.select{|t|!t.pending?} %>
8 15 </ul>
9 16 </li>
... ...
app/views/manage_tags/_form.rhtml
1 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 3 Pending: <%= check_box 'tag', 'pending' %> <br>
... ...
app/views/manage_tags/list.rhtml
... ... @@ -10,5 +10,9 @@
10 10 <%= render :partial => 'a_tag', :collection => @pending_tags %>
11 11 </ul>
12 12  
  13 +<%= link_to _('Top'), {:action => 'list'} if @parent %>
  14 +<%= help _('Go to the top view of the tags') %>
13 15 <%= link_to _('Up'), {:action => 'list', :parent => @parent.parent} if @parent %>
  16 +<% help _('Filter by the parent of the actual tag') %>
14 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 6  
7 7 class ManageTagsControllerTest < Test::Unit::TestCase
8 8  
9   - fixtures :tags
  9 + fixtures :profiles, :boxes, :blocks, :domains
10 10  
11 11 def setup
12 12 @controller = ManageTagsController.new
... ... @@ -30,13 +30,18 @@ class ManageTagsControllerTest &lt; Test::Unit::TestCase
30 30 end
31 31  
32 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 37 assert_response :success
36 38 assert_template 'list'
37 39 assert_not_nil assigns(:parent), 'the list should be scoped'
38 40 assert_not_nil assigns(:tags)
39 41 assert_not_nil assigns(:pending_tags)
  42 + assert assigns(:tags).include?(child_tag)
  43 + assert (not assigns(:tags).include?(orphan_tag))
  44 +
40 45 end
41 46  
42 47 def test_new
... ... @@ -61,43 +66,44 @@ class ManageTagsControllerTest &lt; Test::Unit::TestCase
61 66 end
62 67  
63 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 71 assert assigns(:tag)
67 72 assert assigns(:parent_tags)
68 73 end
69 74  
70 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 78 assert_response :redirect
74 79 assert_redirected_to :action => 'list'
75 80 assert assigns(:tag)
  81 + assert_equal 'altered_tag', assigns(:tag).name
76 82 end
77 83  
78 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 87 assert_response :success
82 88 assert_template 'edit'
83 89 assert assigns(:parent_tags)
84 90 end
85 91  
86 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 95 assert_response :redirect
90 96 assert_redirected_to :action => 'list'
91 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 99 end
94 100  
95 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 105 assert_response :redirect
100 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 108 end
103 109 end
... ...
test/integration/manage_tags_test.rb
1 1 require "#{File.dirname(__FILE__)}/../test_helper"
2 2  
3 3 class ManageTagsTest < ActionController::IntegrationTest
4   - fixtures :tags, :profiles, :users, :virtual_communities, :domains, :boxes, :blocks
  4 + fixtures :tags, :profiles, :boxes, :blocks
5 5  
6 6 def test_tags_create_edit_destroy
7 7 get '/admin/manage_tags'
... ... @@ -24,6 +24,41 @@ class ManageTagsTest &lt; ActionController::IntegrationTest
24 24 follow_redirect!
25 25 assert_response :success
26 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 62 end
28 63  
29 64 end
... ...