##// END OF EJS Templates
Removing shoulda context....
Jean-Philippe Lang -
r11085:14b50dfbabc6
parent child
Show More
@@ -198,8 +198,7 class AttachmentTest < ActiveSupport::TestCase
198 198 assert a.readable?
199 199 end
200 200
201 context "Attachmnet.attach_files" do
202 should "attach the file" do
201 test "Attachmnet.attach_files should attach the file" do
203 202 issue = Issue.first
204 203 assert_difference 'Attachment.count' do
205 204 Attachment.attach_files(issue,
@@ -219,7 +218,7 class AttachmentTest < ActiveSupport::TestCase
219 218 assert_equal 59, File.size(attachment.diskfile)
220 219 end
221 220
222 should "add unsaved files to the object as unsaved attachments" do
221 test "Attachmnet.attach_files should add unsaved files to the object as unsaved attachments" do
223 222 # Max size of 0 to force Attachment creation failures
224 223 with_settings(:attachment_max_size => 0) do
225 224 @project = Project.find(1)
@@ -235,7 +234,6 class AttachmentTest < ActiveSupport::TestCase
235 234 assert_equal response[:unsaved], @project.unsaved_attachments
236 235 end
237 236 end
238 end
239 237
240 238 def test_latest_attach
241 239 set_fixtures_attachments_directory
@@ -58,61 +58,48 class AuthSourceLdapTest < ActiveSupport::TestCase
58 58 end
59 59
60 60 if ldap_configured?
61 context '#authenticate' do
62 setup do
63 @auth = AuthSourceLdap.find(1)
64 @auth.update_attribute :onthefly_register, true
65 end
61 test '#authenticate with a valid LDAP user should return the user attributes' do
62 auth = AuthSourceLdap.find(1)
63 auth.update_attribute :onthefly_register, true
66 64
67 context 'with a valid LDAP user' do
68 should 'return the user attributes' do
69 attributes = @auth.authenticate('example1','123456')
65 attributes = auth.authenticate('example1','123456')
70 66 assert attributes.is_a?(Hash), "An hash was not returned"
71 67 assert_equal 'Example', attributes[:firstname]
72 68 assert_equal 'One', attributes[:lastname]
73 69 assert_equal 'example1@redmine.org', attributes[:mail]
74 assert_equal @auth.id, attributes[:auth_source_id]
70 assert_equal auth.id, attributes[:auth_source_id]
75 71 attributes.keys.each do |attribute|
76 72 assert User.new.respond_to?("#{attribute}="), "Unexpected :#{attribute} attribute returned"
77 73 end
78 74 end
79 end
80 75
81 context 'with an invalid LDAP user' do
82 should 'return nil' do
83 assert_equal nil, @auth.authenticate('nouser','123456')
84 end
76 test '#authenticate with an invalid LDAP user should return nil' do
77 auth = AuthSourceLdap.find(1)
78 assert_equal nil, auth.authenticate('nouser','123456')
85 79 end
86 80
87 context 'without a login' do
88 should 'return nil' do
89 assert_equal nil, @auth.authenticate('','123456')
90 end
81 test '#authenticate without a login should return nil' do
82 auth = AuthSourceLdap.find(1)
83 assert_equal nil, auth.authenticate('','123456')
91 84 end
92 85
93 context 'without a password' do
94 should 'return nil' do
95 assert_equal nil, @auth.authenticate('edavis','')
96 end
86 test '#authenticate without a password should return nil' do
87 auth = AuthSourceLdap.find(1)
88 assert_equal nil, auth.authenticate('edavis','')
97 89 end
98 90
99 context 'without filter' do
100 should 'return any user' do
101 assert @auth.authenticate('example1','123456')
102 assert @auth.authenticate('edavis', '123456')
103 end
91 test '#authenticate without filter should return any user' do
92 auth = AuthSourceLdap.find(1)
93 assert auth.authenticate('example1','123456')
94 assert auth.authenticate('edavis', '123456')
104 95 end
105 96
106 context 'with filter' do
107 setup do
108 @auth.filter = "(mail=*@redmine.org)"
109 end
97 test '#authenticate with filter should return user who matches the filter only' do
98 auth = AuthSourceLdap.find(1)
99 auth.filter = "(mail=*@redmine.org)"
110 100
111 should 'return user who matches the filter only' do
112 assert @auth.authenticate('example1','123456')
113 assert_nil @auth.authenticate('edavis', '123456')
114 end
115 end
101 assert auth.authenticate('example1','123456')
102 assert_nil auth.authenticate('edavis', '123456')
116 103 end
117 104
118 105 def test_authenticate_should_timeout
@@ -1129,49 +1129,44 class IssueTest < ActiveSupport::TestCase
1129 1129 assert_nil copy.custom_value_for(2)
1130 1130 end
1131 1131
1132 context "#copy" do
1133 setup do
1134 @issue = Issue.find(1)
1135 end
1136
1137 should "not create a journal" do
1138 copy = @issue.copy(:project_id => 3, :tracker_id => 2, :assigned_to_id => 3)
1132 test "#copy should not create a journal" do
1133 copy = Issue.find(1).copy(:project_id => 3, :tracker_id => 2, :assigned_to_id => 3)
1139 1134 copy.save!
1140 1135 assert_equal 0, copy.reload.journals.size
1141 1136 end
1142 1137
1143 should "allow assigned_to changes" do
1144 copy = @issue.copy(:project_id => 3, :tracker_id => 2, :assigned_to_id => 3)
1138 test "#copy should allow assigned_to changes" do
1139 copy = Issue.find(1).copy(:project_id => 3, :tracker_id => 2, :assigned_to_id => 3)
1145 1140 assert_equal 3, copy.assigned_to_id
1146 1141 end
1147 1142
1148 should "allow status changes" do
1149 copy = @issue.copy(:project_id => 3, :tracker_id => 2, :status_id => 2)
1143 test "#copy should allow status changes" do
1144 copy = Issue.find(1).copy(:project_id => 3, :tracker_id => 2, :status_id => 2)
1150 1145 assert_equal 2, copy.status_id
1151 1146 end
1152 1147
1153 should "allow start date changes" do
1148 test "#copy should allow start date changes" do
1154 1149 date = Date.today
1155 copy = @issue.copy(:project_id => 3, :tracker_id => 2, :start_date => date)
1150 copy = Issue.find(1).copy(:project_id => 3, :tracker_id => 2, :start_date => date)
1156 1151 assert_equal date, copy.start_date
1157 1152 end
1158 1153
1159 should "allow due date changes" do
1154 test "#copy should allow due date changes" do
1160 1155 date = Date.today
1161 copy = @issue.copy(:project_id => 3, :tracker_id => 2, :due_date => date)
1156 copy = Issue.find(1).copy(:project_id => 3, :tracker_id => 2, :due_date => date)
1162 1157 assert_equal date, copy.due_date
1163 1158 end
1164 1159
1165 should "set current user as author" do
1160 test "#copy should set current user as author" do
1166 1161 User.current = User.find(9)
1167 copy = @issue.copy(:project_id => 3, :tracker_id => 2)
1162 copy = Issue.find(1).copy(:project_id => 3, :tracker_id => 2)
1168 1163 assert_equal User.current, copy.author
1169 1164 end
1170 1165
1171 should "create a journal with notes" do
1166 test "#copy should create a journal with notes" do
1172 1167 date = Date.today
1173 1168 notes = "Notes added when copying"
1174 copy = @issue.copy(:project_id => 3, :tracker_id => 2, :start_date => date)
1169 copy = Issue.find(1).copy(:project_id => 3, :tracker_id => 2, :start_date => date)
1175 1170 copy.init_journal(User.current, notes)
1176 1171 copy.save!
1177 1172
@@ -1180,7 +1175,6 class IssueTest < ActiveSupport::TestCase
1180 1175 assert_equal 0, journal.details.size
1181 1176 assert_equal notes, journal.notes
1182 1177 end
1183 end
1184 1178
1185 1179 def test_valid_parent_project
1186 1180 issue = Issue.find(1)
@@ -1454,51 +1448,48 class IssueTest < ActiveSupport::TestCase
1454 1448 ).overdue?
1455 1449 end
1456 1450
1457 context "#behind_schedule?" do
1458 should "be false if the issue has no start_date" do
1451 test "#behind_schedule? should be false if the issue has no start_date" do
1459 1452 assert !Issue.new(:start_date => nil,
1460 1453 :due_date => 1.day.from_now.to_date,
1461 1454 :done_ratio => 0).behind_schedule?
1462 1455 end
1463 1456
1464 should "be false if the issue has no end_date" do
1457 test "#behind_schedule? should be false if the issue has no end_date" do
1465 1458 assert !Issue.new(:start_date => 1.day.from_now.to_date,
1466 1459 :due_date => nil,
1467 1460 :done_ratio => 0).behind_schedule?
1468 1461 end
1469 1462
1470 should "be false if the issue has more done than it's calendar time" do
1463 test "#behind_schedule? should be false if the issue has more done than it's calendar time" do
1471 1464 assert !Issue.new(:start_date => 50.days.ago.to_date,
1472 1465 :due_date => 50.days.from_now.to_date,
1473 1466 :done_ratio => 90).behind_schedule?
1474 1467 end
1475 1468
1476 should "be true if the issue hasn't been started at all" do
1469 test "#behind_schedule? should be true if the issue hasn't been started at all" do
1477 1470 assert Issue.new(:start_date => 1.day.ago.to_date,
1478 1471 :due_date => 1.day.from_now.to_date,
1479 1472 :done_ratio => 0).behind_schedule?
1480 1473 end
1481 1474
1482 should "be true if the issue has used more calendar time than it's done ratio" do
1475 test "#behind_schedule? should be true if the issue has used more calendar time than it's done ratio" do
1483 1476 assert Issue.new(:start_date => 100.days.ago.to_date,
1484 1477 :due_date => Date.today,
1485 1478 :done_ratio => 90).behind_schedule?
1486 1479 end
1487 end
1488 1480
1489 context "#assignable_users" do
1490 should "be Users" do
1481 test "#assignable_users should be Users" do
1491 1482 assert_kind_of User, Issue.find(1).assignable_users.first
1492 1483 end
1493 1484
1494 should "include the issue author" do
1485 test "#assignable_users should include the issue author" do
1495 1486 non_project_member = User.generate!
1496 1487 issue = Issue.generate!(:author => non_project_member)
1497 1488
1498 1489 assert issue.assignable_users.include?(non_project_member)
1499 1490 end
1500 1491
1501 should "include the current assignee" do
1492 test "#assignable_users should include the current assignee" do
1502 1493 user = User.generate!
1503 1494 issue = Issue.generate!(:assigned_to => user)
1504 1495 user.lock!
@@ -1506,7 +1497,7 class IssueTest < ActiveSupport::TestCase
1506 1497 assert Issue.find(issue.id).assignable_users.include?(user)
1507 1498 end
1508 1499
1509 should "not show the issue author twice" do
1500 test "#assignable_users should not show the issue author twice" do
1510 1501 assignable_user_ids = Issue.find(1).assignable_users.collect(&:id)
1511 1502 assert_equal 2, assignable_user_ids.length
1512 1503
@@ -1516,8 +1507,7 class IssueTest < ActiveSupport::TestCase
1516 1507 end
1517 1508 end
1518 1509
1519 context "with issue_group_assignment" do
1520 should "include groups" do
1510 test "#assignable_users with issue_group_assignment should include groups" do
1521 1511 issue = Issue.new(:project => Project.find(2))
1522 1512
1523 1513 with_settings :issue_group_assignment => '1' do
@@ -1525,10 +1515,8 class IssueTest < ActiveSupport::TestCase
1525 1515 assert issue.assignable_users.include?(Group.find(11))
1526 1516 end
1527 1517 end
1528 end
1529 1518
1530 context "without issue_group_assignment" do
1531 should "not include groups" do
1519 test "#assignable_users without issue_group_assignment should not include groups" do
1532 1520 issue = Issue.new(:project => Project.find(2))
1533 1521
1534 1522 with_settings :issue_group_assignment => '0' do
@@ -1536,8 +1524,6 class IssueTest < ActiveSupport::TestCase
1536 1524 assert !issue.assignable_users.include?(Group.find(11))
1537 1525 end
1538 1526 end
1539 end
1540 end
1541 1527
1542 1528 def test_create_should_send_email_notification
1543 1529 ActionMailer::Base.deliveries.clear
@@ -1728,73 +1714,42 class IssueTest < ActiveSupport::TestCase
1728 1714 assert_equal [2, 3, 8], Issue.find(1).all_dependent_issues.collect(&:id).sort
1729 1715 end
1730 1716
1731 context "#done_ratio" do
1732 setup do
1717 test "#done_ratio should use the issue_status according to Setting.issue_done_ratio" do
1733 1718 @issue = Issue.find(1)
1734 1719 @issue_status = IssueStatus.find(1)
1735 1720 @issue_status.update_attribute(:default_done_ratio, 50)
1736 1721 @issue2 = Issue.find(2)
1737 1722 @issue_status2 = IssueStatus.find(2)
1738 1723 @issue_status2.update_attribute(:default_done_ratio, 0)
1739 end
1740
1741 teardown do
1742 Setting.issue_done_ratio = 'issue_field'
1743 end
1744
1745 context "with Setting.issue_done_ratio using the issue_field" do
1746 setup do
1747 Setting.issue_done_ratio = 'issue_field'
1748 end
1749 1724
1750 should "read the issue's field" do
1725 with_settings :issue_done_ratio => 'issue_field' do
1751 1726 assert_equal 0, @issue.done_ratio
1752 1727 assert_equal 30, @issue2.done_ratio
1753 1728 end
1754 end
1755
1756 context "with Setting.issue_done_ratio using the issue_status" do
1757 setup do
1758 Setting.issue_done_ratio = 'issue_status'
1759 end
1760 1729
1761 should "read the Issue Status's default done ratio" do
1730 with_settings :issue_done_ratio => 'issue_status' do
1762 1731 assert_equal 50, @issue.done_ratio
1763 1732 assert_equal 0, @issue2.done_ratio
1764 1733 end
1765 1734 end
1766 end
1767 1735
1768 context "#update_done_ratio_from_issue_status" do
1769 setup do
1736 test "#update_done_ratio_from_issue_status should update done_ratio according to Setting.issue_done_ratio" do
1770 1737 @issue = Issue.find(1)
1771 1738 @issue_status = IssueStatus.find(1)
1772 1739 @issue_status.update_attribute(:default_done_ratio, 50)
1773 1740 @issue2 = Issue.find(2)
1774 1741 @issue_status2 = IssueStatus.find(2)
1775 1742 @issue_status2.update_attribute(:default_done_ratio, 0)
1776 end
1777
1778 context "with Setting.issue_done_ratio using the issue_field" do
1779 setup do
1780 Setting.issue_done_ratio = 'issue_field'
1781 end
1782 1743
1783 should "not change the issue" do
1744 with_settings :issue_done_ratio => 'issue_field' do
1784 1745 @issue.update_done_ratio_from_issue_status
1785 1746 @issue2.update_done_ratio_from_issue_status
1786 1747
1787 1748 assert_equal 0, @issue.read_attribute(:done_ratio)
1788 1749 assert_equal 30, @issue2.read_attribute(:done_ratio)
1789 1750 end
1790 end
1791
1792 context "with Setting.issue_done_ratio using the issue_status" do
1793 setup do
1794 Setting.issue_done_ratio = 'issue_status'
1795 end
1796 1751
1797 should "change the issue's done ratio" do
1752 with_settings :issue_done_ratio => 'issue_status' do
1798 1753 @issue.update_done_ratio_from_issue_status
1799 1754 @issue2.update_done_ratio_from_issue_status
1800 1755
@@ -1802,7 +1757,6 class IssueTest < ActiveSupport::TestCase
1802 1757 assert_equal 0, @issue2.read_attribute(:done_ratio)
1803 1758 end
1804 1759 end
1805 end
1806 1760
1807 1761 test "#by_tracker" do
1808 1762 User.current = User.anonymous
@@ -1873,48 +1827,42 class IssueTest < ActiveSupport::TestCase
1873 1827 assert_equal before, Issue.on_active_project.length
1874 1828 end
1875 1829
1876 context "Issue#recipients" do
1877 setup do
1878 @project = Project.find(1)
1879 @author = User.generate!
1880 @assignee = User.generate!
1881 @issue = Issue.generate!(:project => @project, :assigned_to => @assignee, :author => @author)
1882 end
1883
1884 should "include project recipients" do
1885 assert @project.recipients.present?
1886 @project.recipients.each do |project_recipient|
1887 assert @issue.recipients.include?(project_recipient)
1830 test "Issue#recipients should include project recipients" do
1831 issue = Issue.generate!
1832 assert issue.project.recipients.present?
1833 issue.project.recipients.each do |project_recipient|
1834 assert issue.recipients.include?(project_recipient)
1888 1835 end
1889 1836 end
1890 1837
1891 should "include the author if the author is active" do
1892 assert @issue.author, "No author set for Issue"
1893 assert @issue.recipients.include?(@issue.author.mail)
1838 test "Issue#recipients should include the author if the author is active" do
1839 issue = Issue.generate!(:author => User.generate!)
1840 assert issue.author, "No author set for Issue"
1841 assert issue.recipients.include?(issue.author.mail)
1894 1842 end
1895 1843
1896 should "include the assigned to user if the assigned to user is active" do
1897 assert @issue.assigned_to, "No assigned_to set for Issue"
1898 assert @issue.recipients.include?(@issue.assigned_to.mail)
1844 test "Issue#recipients should include the assigned to user if the assigned to user is active" do
1845 issue = Issue.generate!(:assigned_to => User.generate!)
1846 assert issue.assigned_to, "No assigned_to set for Issue"
1847 assert issue.recipients.include?(issue.assigned_to.mail)
1899 1848 end
1900 1849
1901 should "not include users who opt out of all email" do
1902 @author.update_attribute(:mail_notification, :none)
1903
1904 assert !@issue.recipients.include?(@issue.author.mail)
1850 test "Issue#recipients should not include users who opt out of all email" do
1851 issue = Issue.generate!(:author => User.generate!)
1852 issue.author.update_attribute(:mail_notification, :none)
1853 assert !issue.recipients.include?(issue.author.mail)
1905 1854 end
1906 1855
1907 should "not include the issue author if they are only notified of assigned issues" do
1908 @author.update_attribute(:mail_notification, :only_assigned)
1909
1910 assert !@issue.recipients.include?(@issue.author.mail)
1856 test "Issue#recipients should not include the issue author if they are only notified of assigned issues" do
1857 issue = Issue.generate!(:author => User.generate!)
1858 issue.author.update_attribute(:mail_notification, :only_assigned)
1859 assert !issue.recipients.include?(issue.author.mail)
1911 1860 end
1912 1861
1913 should "not include the assigned user if they are only notified of owned issues" do
1914 @assignee.update_attribute(:mail_notification, :only_owner)
1915
1916 assert !@issue.recipients.include?(@issue.assigned_to.mail)
1917 end
1862 test "Issue#recipients should not include the assigned user if they are only notified of owned issues" do
1863 issue = Issue.generate!(:assigned_to => User.generate!)
1864 issue.assigned_to.update_attribute(:mail_notification, :only_owner)
1865 assert !issue.recipients.include?(issue.assigned_to.mail)
1918 1866 end
1919 1867
1920 1868 def test_last_journal_id_with_journals_should_return_the_journal_id
@@ -646,13 +646,8 class MailHandlerTest < ActiveSupport::TestCase
646 646 assert_equal 'This is a html-only email.', issue.description
647 647 end
648 648
649 context "truncate emails based on the Setting" do
650 context "with no setting" do
651 setup do
652 Setting.mail_handler_body_delimiters = ''
653 end
654
655 should "add the entire email into the issue" do
649 test "truncate emails with no setting should add the entire email into the issue" do
650 with_settings :mail_handler_body_delimiters => '' do
656 651 issue = submit_email('ticket_on_given_project.eml')
657 652 assert_issue_created(issue)
658 653 assert issue.description.include?('---')
@@ -660,11 +655,8 class MailHandlerTest < ActiveSupport::TestCase
660 655 end
661 656 end
662 657
663 context "with a single string" do
664 setup do
665 Setting.mail_handler_body_delimiters = '---'
666 end
667 should "truncate the email at the delimiter for the issue" do
658 test "truncate emails with a single string should truncate the email at the delimiter for the issue" do
659 with_settings :mail_handler_body_delimiters => '---' do
668 660 issue = submit_email('ticket_on_given_project.eml')
669 661 assert_issue_created(issue)
670 662 assert issue.description.include?('This paragraph is before delimiters')
@@ -674,11 +666,8 class MailHandlerTest < ActiveSupport::TestCase
674 666 end
675 667 end
676 668
677 context "with a single quoted reply (e.g. reply to a Redmine email notification)" do
678 setup do
679 Setting.mail_handler_body_delimiters = '--- Reply above. Do not remove this line. ---'
680 end
681 should "truncate the email at the delimiter with the quoted reply symbols (>)" do
669 test "truncate emails with a single quoted reply should truncate the email at the delimiter with the quoted reply symbols (>)" do
670 with_settings :mail_handler_body_delimiters => '--- Reply above. Do not remove this line. ---' do
682 671 journal = submit_email('issue_update_with_quoted_reply_above.eml')
683 672 assert journal.is_a?(Journal)
684 673 assert journal.notes.include?('An update to the issue by the sender.')
@@ -687,11 +676,8 class MailHandlerTest < ActiveSupport::TestCase
687 676 end
688 677 end
689 678
690 context "with multiple quoted replies (e.g. reply to a reply of a Redmine email notification)" do
691 setup do
692 Setting.mail_handler_body_delimiters = '--- Reply above. Do not remove this line. ---'
693 end
694 should "truncate the email at the delimiter with the quoted reply symbols (>)" do
679 test "truncate emails with multiple quoted replies should truncate the email at the delimiter with the quoted reply symbols (>)" do
680 with_settings :mail_handler_body_delimiters => '--- Reply above. Do not remove this line. ---' do
695 681 journal = submit_email('issue_update_with_multiple_quoted_reply_above.eml')
696 682 assert journal.is_a?(Journal)
697 683 assert journal.notes.include?('An update to the issue by the sender.')
@@ -700,11 +686,8 class MailHandlerTest < ActiveSupport::TestCase
700 686 end
701 687 end
702 688
703 context "with multiple strings" do
704 setup do
705 Setting.mail_handler_body_delimiters = "---\nBREAK"
706 end
707 should "truncate the email at the first delimiter found (BREAK)" do
689 test "truncate emails with multiple strings should truncate the email at the first delimiter found (BREAK)" do
690 with_settings :mail_handler_body_delimiters => "---\nBREAK" do
708 691 issue = submit_email('ticket_on_given_project.eml')
709 692 assert_issue_created(issue)
710 693 assert issue.description.include?('This paragraph is before delimiters')
@@ -714,7 +697,6 class MailHandlerTest < ActiveSupport::TestCase
714 697 assert !issue.description.include?('This paragraph is after the delimiter')
715 698 end
716 699 end
717 end
718 700
719 701 def test_email_with_long_subject_line
720 702 issue = submit_email('ticket_with_long_subject.eml')
@@ -279,25 +279,21 class MailerTest < ActiveSupport::TestCase
279 279 end
280 280 end
281 281
282 context("#issue_add") do
283 setup do
284 ActionMailer::Base.deliveries.clear
285 Setting.bcc_recipients = '1'
286 @issue = Issue.find(1)
287 end
288
289 should "notify project members" do
290 assert Mailer.issue_add(@issue).deliver
282 test "#issue_add should notify project members" do
283 issue = Issue.find(1)
284 assert Mailer.issue_add(issue).deliver
291 285 assert last_email.bcc.include?('dlopper@somenet.foo')
292 286 end
293 287
294 should "not notify project members that are not allow to view the issue" do
288 test "#issue_add should not notify project members that are not allow to view the issue" do
289 issue = Issue.find(1)
295 290 Role.find(2).remove_permission!(:view_issues)
296 assert Mailer.issue_add(@issue).deliver
291 assert Mailer.issue_add(issue).deliver
297 292 assert !last_email.bcc.include?('dlopper@somenet.foo')
298 293 end
299 294
300 should "notify issue watchers" do
295 test "#issue_add should notify issue watchers" do
296 issue = Issue.find(1)
301 297 user = User.find(9)
302 298 # minimal email notification options
303 299 user.pref[:no_self_notified] = '1'
@@ -305,19 +301,19 class MailerTest < ActiveSupport::TestCase
305 301 user.mail_notification = false
306 302 user.save
307 303
308 Watcher.create!(:watchable => @issue, :user => user)
309 assert Mailer.issue_add(@issue).deliver
304 Watcher.create!(:watchable => issue, :user => user)
305 assert Mailer.issue_add(issue).deliver
310 306 assert last_email.bcc.include?(user.mail)
311 307 end
312 308
313 should "not notify watchers not allowed to view the issue" do
309 test "#issue_add should not notify watchers not allowed to view the issue" do
310 issue = Issue.find(1)
314 311 user = User.find(9)
315 Watcher.create!(:watchable => @issue, :user => user)
312 Watcher.create!(:watchable => issue, :user => user)
316 313 Role.non_member.remove_permission!(:view_issues)
317 assert Mailer.issue_add(@issue).deliver
314 assert Mailer.issue_add(issue).deliver
318 315 assert !last_email.bcc.include?(user.mail)
319 316 end
320 end
321 317
322 318 # test mailer methods for each language
323 319 def test_issue_add
@@ -63,64 +63,46 class PrincipalTest < ActiveSupport::TestCase
63 63 assert_equal expected_order.map(&:name).map(&:downcase), scope.sorted.all.map(&:name).map(&:downcase)
64 64 end
65 65
66 context "#like" do
67 setup do
68 Principal.create!(:login => 'login')
69 Principal.create!(:login => 'login2')
66 test "like scope should search login" do
67 results = Principal.like('jsmi')
70 68
71 Principal.create!(:firstname => 'firstname')
72 Principal.create!(:firstname => 'firstname2')
73
74 Principal.create!(:lastname => 'lastname')
75 Principal.create!(:lastname => 'lastname2')
76
77 Principal.create!(:mail => 'mail@example.com')
78 Principal.create!(:mail => 'mail2@example.com')
79
80 @palmer = Principal.create!(:firstname => 'David', :lastname => 'Palmer')
69 assert results.any?
70 assert results.all? {|u| u.login.match(/jsmi/i) }
81 71 end
82 72
83 should "search login" do
84 results = Principal.like('login')
73 test "like scope should search firstname" do
74 results = Principal.like('john')
85 75
86 assert_equal 2, results.count
87 assert results.all? {|u| u.login.match(/login/) }
76 assert results.any?
77 assert results.all? {|u| u.firstname.match(/john/i) }
88 78 end
89 79
90 should "search firstname" do
91 results = Principal.like('firstname')
80 test "like scope should search lastname" do
81 results = Principal.like('smi')
92 82
93 assert_equal 2, results.count
94 assert results.all? {|u| u.firstname.match(/firstname/) }
83 assert results.any?
84 assert results.all? {|u| u.lastname.match(/smi/i) }
95 85 end
96 86
97 should "search lastname" do
98 results = Principal.like('lastname')
87 test "like scope should search mail" do
88 results = Principal.like('somenet')
99 89
100 assert_equal 2, results.count
101 assert results.all? {|u| u.lastname.match(/lastname/) }
90 assert results.any?
91 assert results.all? {|u| u.mail.match(/somenet/i) }
102 92 end
103 93
104 should "search mail" do
105 results = Principal.like('mail')
106
107 assert_equal 2, results.count
108 assert results.all? {|u| u.mail.match(/mail/) }
109 end
110
111 should "search firstname and lastname" do
112 results = Principal.like('david palm')
94 test "like scope should search firstname and lastname" do
95 results = Principal.like('john smi')
113 96
114 97 assert_equal 1, results.count
115 assert_equal @palmer, results.first
98 assert_equal User.find(2), results.first
116 99 end
117 100
118 should "search lastname and firstname" do
119 results = Principal.like('palmer davi')
101 test "like scope should search lastname and firstname" do
102 results = Principal.like('smith joh')
120 103
121 104 assert_equal 1, results.count
122 assert_equal @palmer, results.first
123 end
105 assert_equal User.find(2), results.first
124 106 end
125 107
126 108 def test_like_scope_with_cyrillic_name
@@ -435,56 +435,54 class ProjectTest < ActiveSupport::TestCase
435 435 assert_equal [1,2], parent.rolled_up_trackers.collect(&:id)
436 436 end
437 437
438 context "#rolled_up_versions" do
439 setup do
440 @project = Project.generate!
441 @parent_version_1 = Version.generate!(:project => @project)
442 @parent_version_2 = Version.generate!(:project => @project)
443 end
444
445 should "include the versions for the current project" do
446 assert_same_elements [@parent_version_1, @parent_version_2], @project.rolled_up_versions
438 test "#rolled_up_versions should include the versions for the current project" do
439 project = Project.generate!
440 parent_version_1 = Version.generate!(:project => project)
441 parent_version_2 = Version.generate!(:project => project)
442 assert_same_elements [parent_version_1, parent_version_2], project.rolled_up_versions
447 443 end
448 444
449 should "include versions for a subproject" do
450 @subproject = Project.generate!
451 @subproject.set_parent!(@project)
452 @subproject_version = Version.generate!(:project => @subproject)
445 test "#rolled_up_versions should include versions for a subproject" do
446 project = Project.generate!
447 parent_version_1 = Version.generate!(:project => project)
448 parent_version_2 = Version.generate!(:project => project)
449 subproject = Project.generate_with_parent!(project)
450 subproject_version = Version.generate!(:project => subproject)
453 451
454 452 assert_same_elements [
455 @parent_version_1,
456 @parent_version_2,
457 @subproject_version
458 ], @project.rolled_up_versions
459 end
460
461 should "include versions for a sub-subproject" do
462 @subproject = Project.generate!
463 @subproject.set_parent!(@project)
464 @sub_subproject = Project.generate!
465 @sub_subproject.set_parent!(@subproject)
466 @sub_subproject_version = Version.generate!(:project => @sub_subproject)
467
468 @project.reload
453 parent_version_1,
454 parent_version_2,
455 subproject_version
456 ], project.rolled_up_versions
457 end
458
459 test "#rolled_up_versions should include versions for a sub-subproject" do
460 project = Project.generate!
461 parent_version_1 = Version.generate!(:project => project)
462 parent_version_2 = Version.generate!(:project => project)
463 subproject = Project.generate_with_parent!(project)
464 sub_subproject = Project.generate_with_parent!(subproject)
465 sub_subproject_version = Version.generate!(:project => sub_subproject)
466 project.reload
469 467
470 468 assert_same_elements [
471 @parent_version_1,
472 @parent_version_2,
473 @sub_subproject_version
474 ], @project.rolled_up_versions
475 end
476
477 should "only check active projects" do
478 @subproject = Project.generate!
479 @subproject.set_parent!(@project)
480 @subproject_version = Version.generate!(:project => @subproject)
481 assert @subproject.archive
482
483 @project.reload
469 parent_version_1,
470 parent_version_2,
471 sub_subproject_version
472 ], project.rolled_up_versions
473 end
474
475 test "#rolled_up_versions should only check active projects" do
476 project = Project.generate!
477 parent_version_1 = Version.generate!(:project => project)
478 parent_version_2 = Version.generate!(:project => project)
479 subproject = Project.generate_with_parent!(project)
480 subproject_version = Version.generate!(:project => subproject)
481 assert subproject.archive
482 project.reload
484 483
485 assert !@subproject.active?
486 assert_same_elements [@parent_version_1, @parent_version_2], @project.rolled_up_versions
487 end
484 assert !subproject.active?
485 assert_same_elements [parent_version_1, parent_version_2], project.rolled_up_versions
488 486 end
489 487
490 488 def test_shared_versions_none_sharing
@@ -611,12 +609,8 class ProjectTest < ActiveSupport::TestCase
611 609 end
612 610 end
613 611
614 context "enabled_modules" do
615 setup do
612 test "enabled_modules should define module by names and preserve ids" do
616 613 @project = Project.find(1)
617 end
618
619 should "define module by names and preserve ids" do
620 614 # Remove one module
621 615 modules = @project.enabled_modules.slice(0..-2)
622 616 assert modules.any?
@@ -628,7 +622,8 class ProjectTest < ActiveSupport::TestCase
628 622 assert_equal @project.enabled_module_ids.sort, modules.collect(&:id).sort
629 623 end
630 624
631 should "enable a module" do
625 test "enabled_modules should enable a module" do
626 @project = Project.find(1)
632 627 @project.enabled_module_names = []
633 628 @project.reload
634 629 assert_equal [], @project.enabled_module_names
@@ -643,7 +638,8 class ProjectTest < ActiveSupport::TestCase
643 638 assert_equal ["issue_tracking", "gantt"], @project.enabled_module_names
644 639 end
645 640
646 should "disable a module" do
641 test "enabled_modules should disable a module" do
642 @project = Project.find(1)
647 643 #with string
648 644 assert @project.enabled_module_names.include?("issue_tracking")
649 645 @project.disable_module!("issue_tracking")
@@ -657,7 +653,6 class ProjectTest < ActiveSupport::TestCase
657 653 @project.disable_module!(first_module)
658 654 assert ! @project.reload.enabled_module_names.include?(first_module.name)
659 655 end
660 end
661 656
662 657 def test_enabled_module_names_should_not_recreate_enabled_modules
663 658 project = Project.find(1)
General Comments 0
You need to be logged in to leave comments. Login now