annotate test/unit/journal_test.rb @ 1082:997f6d7738f7 bug_531

In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Thu, 22 Nov 2012 18:04:17 +0000
parents cbce1fd3b1b7
children 433d4f72a19b
rev   line source
Chris@441 1 # Redmine - project management software
Chris@441 2 # Copyright (C) 2006-2011 Jean-Philippe Lang
Chris@0 3 #
Chris@0 4 # This program is free software; you can redistribute it and/or
Chris@0 5 # modify it under the terms of the GNU General Public License
Chris@0 6 # as published by the Free Software Foundation; either version 2
Chris@0 7 # of the License, or (at your option) any later version.
Chris@441 8 #
Chris@0 9 # This program is distributed in the hope that it will be useful,
Chris@0 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@0 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@0 12 # GNU General Public License for more details.
Chris@441 13 #
Chris@0 14 # You should have received a copy of the GNU General Public License
Chris@0 15 # along with this program; if not, write to the Free Software
Chris@0 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@0 17
Chris@119 18 require File.expand_path('../../test_helper', __FILE__)
Chris@0 19
Chris@0 20 class JournalTest < ActiveSupport::TestCase
Chris@441 21 fixtures :projects, :issues, :issue_statuses, :journals, :journal_details, :users, :members, :member_roles
Chris@0 22
Chris@0 23 def setup
Chris@0 24 @journal = Journal.find 1
Chris@0 25 end
Chris@0 26
Chris@0 27 def test_journalized_is_an_issue
Chris@0 28 issue = @journal.issue
Chris@0 29 assert_kind_of Issue, issue
Chris@0 30 assert_equal 1, issue.id
Chris@0 31 end
Chris@0 32
Chris@0 33 def test_new_status
Chris@0 34 status = @journal.new_status
Chris@0 35 assert_not_nil status
Chris@0 36 assert_kind_of IssueStatus, status
Chris@441 37 assert_equal 2, status.id
Chris@0 38 end
Chris@441 39
Chris@0 40 def test_create_should_send_email_notification
Chris@0 41 ActionMailer::Base.deliveries.clear
Chris@0 42 issue = Issue.find(:first)
Chris@0 43 user = User.find(:first)
Chris@0 44 journal = issue.init_journal(user, issue)
Chris@0 45
Chris@0 46 assert journal.save
Chris@0 47 assert_equal 1, ActionMailer::Base.deliveries.size
Chris@0 48 end
Chris@0 49
Chris@441 50 def test_visible_scope_for_anonymous
Chris@441 51 # Anonymous user should see issues of public projects only
Chris@441 52 journals = Journal.visible(User.anonymous).all
Chris@441 53 assert journals.any?
Chris@441 54 assert_nil journals.detect {|journal| !journal.issue.project.is_public?}
Chris@441 55 # Anonymous user should not see issues without permission
Chris@441 56 Role.anonymous.remove_permission!(:view_issues)
Chris@441 57 journals = Journal.visible(User.anonymous).all
Chris@441 58 assert journals.empty?
Chris@441 59 end
Chris@441 60
Chris@441 61 def test_visible_scope_for_user
Chris@441 62 user = User.find(9)
Chris@441 63 assert user.projects.empty?
Chris@441 64 # Non member user should see issues of public projects only
Chris@441 65 journals = Journal.visible(user).all
Chris@441 66 assert journals.any?
Chris@441 67 assert_nil journals.detect {|journal| !journal.issue.project.is_public?}
Chris@441 68 # Non member user should not see issues without permission
Chris@441 69 Role.non_member.remove_permission!(:view_issues)
Chris@441 70 user.reload
Chris@441 71 journals = Journal.visible(user).all
Chris@441 72 assert journals.empty?
Chris@441 73 # User should see issues of projects for which he has view_issues permissions only
Chris@441 74 Member.create!(:principal => user, :project_id => 1, :role_ids => [1])
Chris@441 75 user.reload
Chris@441 76 journals = Journal.visible(user).all
Chris@441 77 assert journals.any?
Chris@441 78 assert_nil journals.detect {|journal| journal.issue.project_id != 1}
Chris@441 79 end
Chris@441 80
Chris@441 81 def test_visible_scope_for_admin
Chris@441 82 user = User.find(1)
Chris@441 83 user.members.each(&:destroy)
Chris@441 84 assert user.projects.empty?
Chris@441 85 journals = Journal.visible(user).all
Chris@441 86 assert journals.any?
Chris@441 87 # Admin should see issues on private projects that he does not belong to
Chris@441 88 assert journals.detect {|journal| !journal.issue.project.is_public?}
Chris@441 89 end
Chris@0 90 end