To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / test / functional / .svn / text-base / issue_relations_controller_test.rb.svn-base @ 442:753f1380d6bc

History | View | Annotate | Download (2.93 KB)

1
require File.expand_path('../../test_helper', __FILE__)
2
require 'issue_relations_controller'
3

    
4
# Re-raise errors caught by the controller.
5
class IssueRelationsController; def rescue_action(e) raise e end; end
6

    
7

    
8
class IssueRelationsControllerTest < ActionController::TestCase
9
  fixtures :projects,
10
           :users,
11
           :roles,
12
           :members,
13
           :member_roles,
14
           :issues,
15
           :issue_statuses,
16
           :issue_relations,
17
           :enabled_modules,
18
           :enumerations,
19
           :trackers
20
  
21
  def setup
22
    @controller = IssueRelationsController.new
23
    @request    = ActionController::TestRequest.new
24
    @response   = ActionController::TestResponse.new
25
    User.current = nil
26
  end
27
  
28
  def test_new
29
    assert_difference 'IssueRelation.count' do
30
      @request.session[:user_id] = 3
31
      post :new, :issue_id => 1, 
32
                 :relation => {:issue_to_id => '2', :relation_type => 'relates', :delay => ''}
33
    end
34
  end
35
  
36
  def test_new_xhr
37
    assert_difference 'IssueRelation.count' do
38
      @request.session[:user_id] = 3
39
      xhr :post, :new,
40
        :issue_id => 3, 
41
        :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''}
42
      assert_select_rjs 'relations' do
43
        assert_select 'table', 1
44
        assert_select 'tr', 2 # relations
45
      end
46
    end
47
  end
48
  
49
  def test_new_should_accept_id_with_hash
50
    assert_difference 'IssueRelation.count' do
51
      @request.session[:user_id] = 3
52
      post :new, :issue_id => 1, 
53
                 :relation => {:issue_to_id => '#2', :relation_type => 'relates', :delay => ''}
54
    end
55
  end
56
  
57
  def test_new_should_not_break_with_non_numerical_id
58
    assert_no_difference 'IssueRelation.count' do
59
      assert_nothing_raised do
60
        @request.session[:user_id] = 3
61
        post :new, :issue_id => 1, 
62
                   :relation => {:issue_to_id => 'foo', :relation_type => 'relates', :delay => ''}
63
      end
64
    end
65
  end
66
  
67
  def test_should_create_relations_with_visible_issues_only
68
    Setting.cross_project_issue_relations = '1'
69
    assert_nil Issue.visible(User.find(3)).find_by_id(4)
70
    
71
    assert_no_difference 'IssueRelation.count' do
72
      @request.session[:user_id] = 3
73
      post :new, :issue_id => 1, 
74
                 :relation => {:issue_to_id => '4', :relation_type => 'relates', :delay => ''}
75
    end
76
  end
77
  
78
  def test_destroy
79
    assert_difference 'IssueRelation.count', -1 do
80
      @request.session[:user_id] = 3
81
      post :destroy, :id => '2', :issue_id => '3'
82
    end
83
  end
84
  
85
  def test_destroy_xhr
86
    IssueRelation.create!(:relation_type => IssueRelation::TYPE_RELATES) do |r|
87
      r.issue_from_id = 3
88
      r.issue_to_id = 1
89
    end
90
    
91
    assert_difference 'IssueRelation.count', -1 do
92
      @request.session[:user_id] = 3
93
      xhr :post, :destroy, :id => '2', :issue_id => '3'
94
      assert_select_rjs 'relations' do
95
        assert_select 'table', 1
96
        assert_select 'tr', 1 # relation left
97
      end
98
    end
99
  end
100
end