Added branch for sys controller refactoring.
git-svn-id: http://redmine.rubyforge.org/svn/branches/work@1006 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
+26
@@ -0,0 +1,26 @@
|
||||
---
|
||||
attachments_001:
|
||||
created_on: 2006-07-19 21:07:27 +02:00
|
||||
downloads: 0
|
||||
content_type: text/plain
|
||||
disk_filename: 060719210727_error281.txt
|
||||
container_id: 3
|
||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||
id: 1
|
||||
container_type: Issue
|
||||
filesize: 28
|
||||
filename: error281.txt
|
||||
author_id: 2
|
||||
attachments_002:
|
||||
created_on: 2006-07-19 21:07:27 +02:00
|
||||
downloads: 0
|
||||
content_type: text/plain
|
||||
disk_filename: 060719210727_document.txt
|
||||
container_id: 1
|
||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||
id: 2
|
||||
container_type: Document
|
||||
filesize: 28
|
||||
filename: document.txt
|
||||
author_id: 2
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
--- {}
|
||||
|
||||
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
---
|
||||
boards_001:
|
||||
name: Help
|
||||
project_id: 1
|
||||
topics_count: 2
|
||||
id: 1
|
||||
description: Help board
|
||||
position: 1
|
||||
last_message_id: 5
|
||||
messages_count: 5
|
||||
boards_002:
|
||||
name: Discussion
|
||||
project_id: 1
|
||||
topics_count: 0
|
||||
id: 2
|
||||
description: Discussion board
|
||||
position: 2
|
||||
last_message_id:
|
||||
messages_count: 0
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
---
|
||||
changes_001:
|
||||
id: 1
|
||||
changeset_id: 100
|
||||
action: A
|
||||
path: /test/some/path/in/the/repo
|
||||
from_path:
|
||||
from_revision:
|
||||
changes_002:
|
||||
id: 2
|
||||
changeset_id: 100
|
||||
action: A
|
||||
path: /test/some/path/elsewhere/in/the/repo
|
||||
from_path:
|
||||
from_revision:
|
||||
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
---
|
||||
changesets_001:
|
||||
commit_date: 2007-04-11
|
||||
committed_on: 2007-04-11 15:14:44 +02:00
|
||||
revision: 1
|
||||
id: 100
|
||||
comments: My very first commit
|
||||
repository_id: 10
|
||||
committer: dlopper
|
||||
changesets_002:
|
||||
commit_date: 2007-04-12
|
||||
committed_on: 2007-04-12 15:14:44 +02:00
|
||||
revision: 2
|
||||
id: 101
|
||||
comments: 'This commit fixes #1, #2 and references #1 & #3'
|
||||
repository_id: 10
|
||||
committer: dlopper
|
||||
changesets_003:
|
||||
commit_date: 2007-04-12
|
||||
committed_on: 2007-04-12 15:14:44 +02:00
|
||||
revision: 3
|
||||
id: 102
|
||||
comments: |-
|
||||
A commit with wrong issue ids
|
||||
IssueID 666 3
|
||||
repository_id: 10
|
||||
committer: dlopper
|
||||
changesets_004:
|
||||
commit_date: 2007-04-12
|
||||
committed_on: 2007-04-12 15:14:44 +02:00
|
||||
revision: 4
|
||||
id: 103
|
||||
comments: |-
|
||||
A commit with an issue id of an other project
|
||||
IssueID 4 2
|
||||
repository_id: 10
|
||||
committer: dlopper
|
||||
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
|
||||
comments_001:
|
||||
commented_type: News
|
||||
commented_id: 1
|
||||
id: 1
|
||||
author_id: 1
|
||||
comments: my first comment
|
||||
created_on: 2006-12-10 18:10:10 +01:00
|
||||
updated_on: 2006-12-10 18:10:10 +01:00
|
||||
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
---
|
||||
custom_fields_001:
|
||||
name: Database
|
||||
min_length: 0
|
||||
regexp: ""
|
||||
is_for_all: false
|
||||
type: IssueCustomField
|
||||
max_length: 0
|
||||
possible_values: MySQL|PostgreSQL|Oracle
|
||||
id: 1
|
||||
is_required: false
|
||||
field_format: list
|
||||
custom_fields_002:
|
||||
name: Searchable field
|
||||
min_length: 1
|
||||
regexp: ""
|
||||
is_for_all: true
|
||||
type: IssueCustomField
|
||||
max_length: 100
|
||||
possible_values: ""
|
||||
id: 2
|
||||
is_required: false
|
||||
field_format: string
|
||||
searchable: true
|
||||
custom_fields_003:
|
||||
name: Development status
|
||||
min_length: 0
|
||||
regexp: ""
|
||||
is_for_all: false
|
||||
type: ProjectCustomField
|
||||
max_length: 0
|
||||
possible_values: Stable|Beta|Alpha|Planning
|
||||
id: 3
|
||||
is_required: true
|
||||
field_format: list
|
||||
custom_fields_004:
|
||||
name: Phone number
|
||||
min_length: 0
|
||||
regexp: ""
|
||||
is_for_all: false
|
||||
type: UserCustomField
|
||||
max_length: 0
|
||||
possible_values: ""
|
||||
id: 4
|
||||
is_required: false
|
||||
field_format: string
|
||||
custom_fields_005:
|
||||
name: Money
|
||||
min_length: 0
|
||||
regexp: ""
|
||||
is_for_all: false
|
||||
type: UserCustomField
|
||||
max_length: 0
|
||||
possible_values: ""
|
||||
id: 5
|
||||
is_required: false
|
||||
field_format: float
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
--- {}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
custom_fields_trackers_001:
|
||||
custom_field_id: 1
|
||||
tracker_id: 1
|
||||
custom_fields_trackers_002:
|
||||
custom_field_id: 2
|
||||
tracker_id: 1
|
||||
custom_fields_trackers_003:
|
||||
custom_field_id: 2
|
||||
tracker_id: 3
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
---
|
||||
custom_values_006:
|
||||
customized_type: Issue
|
||||
custom_field_id: 2
|
||||
customized_id: 3
|
||||
id: 9
|
||||
value: "125"
|
||||
custom_values_007:
|
||||
customized_type: Project
|
||||
custom_field_id: 3
|
||||
customized_id: 1
|
||||
id: 10
|
||||
value: Stable
|
||||
custom_values_001:
|
||||
customized_type: User
|
||||
custom_field_id: 4
|
||||
customized_id: 3
|
||||
id: 2
|
||||
value: ""
|
||||
custom_values_002:
|
||||
customized_type: User
|
||||
custom_field_id: 4
|
||||
customized_id: 4
|
||||
id: 3
|
||||
value: 01 23 45 67 89
|
||||
custom_values_003:
|
||||
customized_type: User
|
||||
custom_field_id: 4
|
||||
customized_id: 2
|
||||
id: 4
|
||||
value: ""
|
||||
custom_values_004:
|
||||
customized_type: Issue
|
||||
custom_field_id: 2
|
||||
customized_id: 1
|
||||
id: 7
|
||||
value: "125"
|
||||
custom_values_005:
|
||||
customized_type: Issue
|
||||
custom_field_id: 2
|
||||
customized_id: 2
|
||||
id: 8
|
||||
value: ""
|
||||
custom_values_008:
|
||||
customized_type: Issue
|
||||
custom_field_id: 1
|
||||
customized_id: 3
|
||||
id: 11
|
||||
value: "MySQL"
|
||||
custom_values_009:
|
||||
customized_type: Issue
|
||||
custom_field_id: 2
|
||||
customized_id: 3
|
||||
id: 12
|
||||
value: "this is a stringforcustomfield search"
|
||||
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
documents_001:
|
||||
created_on: 2007-01-27 15:08:27 +01:00
|
||||
project_id: 1
|
||||
title: "Test document"
|
||||
id: 1
|
||||
description: "Document description"
|
||||
category_id: 1
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
---
|
||||
enabled_modules_001:
|
||||
name: issue_tracking
|
||||
project_id: 1
|
||||
id: 1
|
||||
enabled_modules_002:
|
||||
name: time_tracking
|
||||
project_id: 1
|
||||
id: 2
|
||||
enabled_modules_003:
|
||||
name: news
|
||||
project_id: 1
|
||||
id: 3
|
||||
enabled_modules_004:
|
||||
name: documents
|
||||
project_id: 1
|
||||
id: 4
|
||||
enabled_modules_005:
|
||||
name: files
|
||||
project_id: 1
|
||||
id: 5
|
||||
enabled_modules_006:
|
||||
name: wiki
|
||||
project_id: 1
|
||||
id: 6
|
||||
enabled_modules_007:
|
||||
name: repository
|
||||
project_id: 1
|
||||
id: 7
|
||||
enabled_modules_008:
|
||||
name: boards
|
||||
project_id: 1
|
||||
id: 8
|
||||
enabled_modules_009:
|
||||
name: repository
|
||||
project_id: 3
|
||||
id: 9
|
||||
enabled_modules_010:
|
||||
name: wiki
|
||||
project_id: 3
|
||||
id: 10
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
---
|
||||
enumerations_001:
|
||||
name: Uncategorized
|
||||
id: 1
|
||||
opt: DCAT
|
||||
enumerations_002:
|
||||
name: User documentation
|
||||
id: 2
|
||||
opt: DCAT
|
||||
enumerations_003:
|
||||
name: Technical documentation
|
||||
id: 3
|
||||
opt: DCAT
|
||||
enumerations_004:
|
||||
name: Low
|
||||
id: 4
|
||||
opt: IPRI
|
||||
enumerations_005:
|
||||
name: Normal
|
||||
id: 5
|
||||
opt: IPRI
|
||||
enumerations_006:
|
||||
name: High
|
||||
id: 6
|
||||
opt: IPRI
|
||||
enumerations_007:
|
||||
name: Urgent
|
||||
id: 7
|
||||
opt: IPRI
|
||||
enumerations_008:
|
||||
name: Immediate
|
||||
id: 8
|
||||
opt: IPRI
|
||||
+1
@@ -0,0 +1 @@
|
||||
this is a text file for upload tests
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
---
|
||||
issue_categories_001:
|
||||
name: Printing
|
||||
project_id: 1
|
||||
assigned_to_id: 2
|
||||
id: 1
|
||||
issue_categories_002:
|
||||
name: Recipes
|
||||
project_id: 1
|
||||
assigned_to_id:
|
||||
id: 2
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
---
|
||||
issue_statuses_006:
|
||||
name: Rejected
|
||||
is_default: false
|
||||
is_closed: true
|
||||
id: 6
|
||||
issue_statuses_001:
|
||||
name: New
|
||||
is_default: true
|
||||
is_closed: false
|
||||
id: 1
|
||||
issue_statuses_002:
|
||||
name: Assigned
|
||||
is_default: false
|
||||
is_closed: false
|
||||
id: 2
|
||||
issue_statuses_003:
|
||||
name: Resolved
|
||||
is_default: false
|
||||
is_closed: false
|
||||
id: 3
|
||||
issue_statuses_004:
|
||||
name: Feedback
|
||||
is_default: false
|
||||
is_closed: false
|
||||
id: 4
|
||||
issue_statuses_005:
|
||||
name: Closed
|
||||
is_default: false
|
||||
is_closed: true
|
||||
id: 5
|
||||
Vendored
+60
@@ -0,0 +1,60 @@
|
||||
---
|
||||
issues_001:
|
||||
created_on: <%= 3.days.ago.to_date.to_s(:db) %>
|
||||
project_id: 1
|
||||
updated_on: <%= 1.day.ago.to_date.to_s(:db) %>
|
||||
priority_id: 4
|
||||
subject: Can't print recipes
|
||||
id: 1
|
||||
fixed_version_id:
|
||||
category_id: 1
|
||||
description: Unable to print recipes
|
||||
tracker_id: 1
|
||||
assigned_to_id:
|
||||
author_id: 2
|
||||
status_id: 1
|
||||
issues_002:
|
||||
created_on: 2006-07-19 21:04:21 +02:00
|
||||
project_id: 1
|
||||
updated_on: 2006-07-19 21:09:50 +02:00
|
||||
priority_id: 5
|
||||
subject: Add ingredients categories
|
||||
id: 2
|
||||
fixed_version_id:
|
||||
category_id:
|
||||
description: Ingredients should be classified by categories
|
||||
tracker_id: 2
|
||||
assigned_to_id: 3
|
||||
author_id: 2
|
||||
status_id: 2
|
||||
issues_003:
|
||||
created_on: 2006-07-19 21:07:27 +02:00
|
||||
project_id: 1
|
||||
updated_on: 2006-07-19 21:07:27 +02:00
|
||||
priority_id: 4
|
||||
subject: Error 281 when updating a recipe
|
||||
id: 3
|
||||
fixed_version_id:
|
||||
category_id:
|
||||
description: Error 281 is encountered when saving a recipe
|
||||
tracker_id: 1
|
||||
assigned_to_id:
|
||||
author_id: 2
|
||||
status_id: 1
|
||||
start_date: <%= 1.day.from_now.to_date.to_s(:db) %>
|
||||
due_date: <%= 40.day.ago.to_date.to_s(:db) %>
|
||||
issues_004:
|
||||
created_on: 2006-07-19 21:07:27 +02:00
|
||||
project_id: 2
|
||||
updated_on: 2006-07-19 21:07:27 +02:00
|
||||
priority_id: 4
|
||||
subject: Issue on project 2
|
||||
id: 4
|
||||
fixed_version_id:
|
||||
category_id:
|
||||
description: Issue on project 2
|
||||
tracker_id: 1
|
||||
assigned_to_id:
|
||||
author_id: 2
|
||||
status_id: 1
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
---
|
||||
journal_details_001:
|
||||
old_value: "1"
|
||||
property: attr
|
||||
id: 1
|
||||
value: "2"
|
||||
prop_key: status_id
|
||||
journal_id: 1
|
||||
journal_details_002:
|
||||
old_value: "40"
|
||||
property: attr
|
||||
id: 2
|
||||
value: "30"
|
||||
prop_key: done_ratio
|
||||
journal_id: 1
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
---
|
||||
journals_001:
|
||||
created_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||
notes: "Journal notes"
|
||||
id: 1
|
||||
journalized_type: Issue
|
||||
user_id: 1
|
||||
journalized_id: 1
|
||||
@@ -0,0 +1,14 @@
|
||||
x-sender: <jsmith@somenet.foo>
|
||||
x-receiver: <redmine@somenet.foo>
|
||||
Received: from somenet.foo ([127.0.0.1]) by somenet.foo;
|
||||
Sun, 25 Feb 2007 09:57:56 GMT
|
||||
Date: Sun, 25 Feb 2007 10:57:56 +0100
|
||||
From: jsmith@somenet.foo
|
||||
To: redmine@somenet.foo
|
||||
Message-Id: <45e15df440c00_b90238570a27b@osiris.tmail>
|
||||
In-Reply-To: <45e15df440c29_b90238570a27b@osiris.tmail>
|
||||
Subject: [Cookbook - Feature #2]
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=utf-8
|
||||
|
||||
Note added by mail
|
||||
Vendored
+27
@@ -0,0 +1,27 @@
|
||||
---
|
||||
members_001:
|
||||
created_on: 2006-07-19 19:35:33 +02:00
|
||||
project_id: 1
|
||||
role_id: 1
|
||||
id: 1
|
||||
user_id: 2
|
||||
members_002:
|
||||
created_on: 2006-07-19 19:35:36 +02:00
|
||||
project_id: 1
|
||||
role_id: 2
|
||||
id: 2
|
||||
user_id: 3
|
||||
members_003:
|
||||
created_on: 2006-07-19 19:35:36 +02:00
|
||||
project_id: 2
|
||||
role_id: 2
|
||||
id: 3
|
||||
user_id: 2
|
||||
members_004:
|
||||
id: 4
|
||||
created_on: 2006-07-19 19:35:36 +02:00
|
||||
project_id: 1
|
||||
role_id: 2
|
||||
# Locked user
|
||||
user_id: 5
|
||||
|
||||
Vendored
+57
@@ -0,0 +1,57 @@
|
||||
---
|
||||
messages_001:
|
||||
created_on: 2007-05-12 17:15:32 +02:00
|
||||
updated_on: 2007-05-12 17:15:32 +02:00
|
||||
subject: First post
|
||||
id: 1
|
||||
replies_count: 2
|
||||
last_reply_id: 3
|
||||
content: "This is the very first post\n\
|
||||
in the forum"
|
||||
author_id: 1
|
||||
parent_id:
|
||||
board_id: 1
|
||||
messages_002:
|
||||
created_on: 2007-05-12 17:18:00 +02:00
|
||||
updated_on: 2007-05-12 17:18:00 +02:00
|
||||
subject: First reply
|
||||
id: 2
|
||||
replies_count: 0
|
||||
last_reply_id:
|
||||
content: "Reply to the first post"
|
||||
author_id: 1
|
||||
parent_id: 1
|
||||
board_id: 1
|
||||
messages_003:
|
||||
created_on: 2007-05-12 17:18:02 +02:00
|
||||
updated_on: 2007-05-12 17:18:02 +02:00
|
||||
subject: "RE: First post"
|
||||
id: 3
|
||||
replies_count: 0
|
||||
last_reply_id:
|
||||
content: "An other reply"
|
||||
author_id:
|
||||
parent_id: 1
|
||||
board_id: 1
|
||||
messages_004:
|
||||
created_on: 2007-08-12 17:15:32 +02:00
|
||||
updated_on: 2007-08-12 17:15:32 +02:00
|
||||
subject: Post 2
|
||||
id: 4
|
||||
replies_count: 1
|
||||
last_reply_id: 5
|
||||
content: "This is an other post"
|
||||
author_id:
|
||||
parent_id:
|
||||
board_id: 1
|
||||
messages_005:
|
||||
created_on: 2007-09-12 17:18:00 +02:00
|
||||
updated_on: 2007-09-12 17:18:00 +02:00
|
||||
subject: 'RE: post 2'
|
||||
id: 5
|
||||
replies_count: 0
|
||||
last_reply_id:
|
||||
content: "Reply to the second post"
|
||||
author_id: 1
|
||||
parent_id: 4
|
||||
board_id: 1
|
||||
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
---
|
||||
news_001:
|
||||
created_on: 2006-07-19 22:40:26 +02:00
|
||||
project_id: 1
|
||||
title: eCookbook first release !
|
||||
id: 1
|
||||
description: |-
|
||||
eCookbook 1.0 has been released.
|
||||
|
||||
Visit http://ecookbook.somenet.foo/
|
||||
summary: First version was released...
|
||||
author_id: 2
|
||||
comments_count: 1
|
||||
news_002:
|
||||
created_on: 2006-07-19 22:42:58 +02:00
|
||||
project_id: 1
|
||||
title: 100,000 downloads for eCookbook
|
||||
id: 2
|
||||
description: eCookbook 1.0 have downloaded 100,000 times
|
||||
summary: eCookbook 1.0 have downloaded 100,000 times
|
||||
author_id: 2
|
||||
comments_count: 0
|
||||
Vendored
+45
@@ -0,0 +1,45 @@
|
||||
---
|
||||
projects_001:
|
||||
created_on: 2006-07-19 19:13:59 +02:00
|
||||
name: eCookbook
|
||||
updated_on: 2006-07-19 22:53:01 +02:00
|
||||
projects_count: 2
|
||||
id: 1
|
||||
description: Recipes management application
|
||||
homepage: http://ecookbook.somenet.foo/
|
||||
is_public: true
|
||||
identifier: ecookbook
|
||||
parent_id:
|
||||
projects_002:
|
||||
created_on: 2006-07-19 19:14:19 +02:00
|
||||
name: OnlineStore
|
||||
updated_on: 2006-07-19 19:14:19 +02:00
|
||||
projects_count: 0
|
||||
id: 2
|
||||
description: E-commerce web site
|
||||
homepage: ""
|
||||
is_public: false
|
||||
identifier: onlinestore
|
||||
parent_id:
|
||||
projects_003:
|
||||
created_on: 2006-07-19 19:15:21 +02:00
|
||||
name: eCookbook Subproject 1
|
||||
updated_on: 2006-07-19 19:18:12 +02:00
|
||||
projects_count: 0
|
||||
id: 3
|
||||
description: eCookBook Subproject 1
|
||||
homepage: ""
|
||||
is_public: true
|
||||
identifier: subproject1
|
||||
parent_id: 1
|
||||
projects_004:
|
||||
created_on: 2006-07-19 19:15:51 +02:00
|
||||
name: eCookbook Subproject 2
|
||||
updated_on: 2006-07-19 19:17:07 +02:00
|
||||
projects_count: 0
|
||||
id: 4
|
||||
description: eCookbook Subproject 2
|
||||
homepage: ""
|
||||
is_public: true
|
||||
identifier: subproject1
|
||||
parent_id: 1
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
---
|
||||
projects_trackers_012:
|
||||
project_id: 4
|
||||
tracker_id: 3
|
||||
projects_trackers_001:
|
||||
project_id: 1
|
||||
tracker_id: 1
|
||||
projects_trackers_013:
|
||||
project_id: 5
|
||||
tracker_id: 1
|
||||
projects_trackers_002:
|
||||
project_id: 1
|
||||
tracker_id: 2
|
||||
projects_trackers_014:
|
||||
project_id: 5
|
||||
tracker_id: 2
|
||||
projects_trackers_003:
|
||||
project_id: 1
|
||||
tracker_id: 3
|
||||
projects_trackers_015:
|
||||
project_id: 5
|
||||
tracker_id: 3
|
||||
projects_trackers_004:
|
||||
project_id: 2
|
||||
tracker_id: 1
|
||||
projects_trackers_005:
|
||||
project_id: 2
|
||||
tracker_id: 2
|
||||
projects_trackers_006:
|
||||
project_id: 2
|
||||
tracker_id: 3
|
||||
projects_trackers_007:
|
||||
project_id: 3
|
||||
tracker_id: 1
|
||||
projects_trackers_008:
|
||||
project_id: 3
|
||||
tracker_id: 2
|
||||
projects_trackers_009:
|
||||
project_id: 3
|
||||
tracker_id: 3
|
||||
projects_trackers_010:
|
||||
project_id: 4
|
||||
tracker_id: 1
|
||||
projects_trackers_011:
|
||||
project_id: 4
|
||||
tracker_id: 2
|
||||
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
---
|
||||
queries_001:
|
||||
name: Multiple custom fields query
|
||||
project_id: 1
|
||||
filters: |
|
||||
---
|
||||
cf_1:
|
||||
:values:
|
||||
- MySQL
|
||||
:operator: "="
|
||||
status_id:
|
||||
:values:
|
||||
- "1"
|
||||
:operator: o
|
||||
cf_2:
|
||||
:values:
|
||||
- "125"
|
||||
:operator: "="
|
||||
|
||||
id: 1
|
||||
is_public: true
|
||||
user_id: 1
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
---
|
||||
repositories_001:
|
||||
project_id: 1
|
||||
url: file:///<%= RAILS_ROOT.gsub(%r{config\/\.\.}, '') %>/tmp/test/subversion_repository
|
||||
id: 10
|
||||
root_url: file:///<%= RAILS_ROOT.gsub(%r{config\/\.\.}, '') %>/tmp/test/subversion_repository
|
||||
password: ""
|
||||
login: ""
|
||||
type: Subversion
|
||||
repositories_002:
|
||||
project_id: 2
|
||||
url: svn://localhost/test
|
||||
id: 11
|
||||
root_url: svn://localhost
|
||||
password: ""
|
||||
login: ""
|
||||
type: Subversion
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Vendored
+163
@@ -0,0 +1,163 @@
|
||||
---
|
||||
roles_004:
|
||||
name: Non member
|
||||
id: 4
|
||||
builtin: 1
|
||||
permissions: |
|
||||
---
|
||||
- :add_issues
|
||||
- :edit_issues
|
||||
- :manage_issue_relations
|
||||
- :add_issue_notes
|
||||
- :change_issue_status
|
||||
- :move_issues
|
||||
- :save_queries
|
||||
- :view_gantt
|
||||
- :view_calendar
|
||||
- :log_time
|
||||
- :view_time_entries
|
||||
- :comment_news
|
||||
- :view_documents
|
||||
- :manage_documents
|
||||
- :view_wiki_pages
|
||||
- :edit_wiki_pages
|
||||
- :add_messages
|
||||
- :view_files
|
||||
- :manage_files
|
||||
- :browse_repository
|
||||
- :view_changesets
|
||||
|
||||
position: 5
|
||||
roles_005:
|
||||
name: Anonymous
|
||||
id: 5
|
||||
builtin: 2
|
||||
permissions: |
|
||||
---
|
||||
- :view_gantt
|
||||
- :view_calendar
|
||||
- :view_time_entries
|
||||
- :view_documents
|
||||
- :view_wiki_pages
|
||||
- :view_files
|
||||
- :browse_repository
|
||||
- :view_changesets
|
||||
|
||||
position: 6
|
||||
roles_001:
|
||||
name: Manager
|
||||
id: 1
|
||||
builtin: 0
|
||||
permissions: |
|
||||
---
|
||||
- :edit_project
|
||||
- :manage_members
|
||||
- :manage_versions
|
||||
- :manage_categories
|
||||
- :add_issues
|
||||
- :edit_issues
|
||||
- :manage_issue_relations
|
||||
- :add_issue_notes
|
||||
- :change_issue_status
|
||||
- :move_issues
|
||||
- :delete_issues
|
||||
- :manage_public_queries
|
||||
- :save_queries
|
||||
- :view_gantt
|
||||
- :view_calendar
|
||||
- :log_time
|
||||
- :view_time_entries
|
||||
- :manage_news
|
||||
- :comment_news
|
||||
- :view_documents
|
||||
- :manage_documents
|
||||
- :view_wiki_pages
|
||||
- :edit_wiki_pages
|
||||
- :delete_wiki_pages
|
||||
- :rename_wiki_pages
|
||||
- :add_messages
|
||||
- :edit_messages
|
||||
- :delete_messages
|
||||
- :manage_boards
|
||||
- :view_files
|
||||
- :manage_files
|
||||
- :browse_repository
|
||||
- :view_changesets
|
||||
|
||||
position: 2
|
||||
roles_002:
|
||||
name: Developer
|
||||
id: 2
|
||||
builtin: 0
|
||||
permissions: |
|
||||
---
|
||||
- :edit_project
|
||||
- :manage_members
|
||||
- :manage_versions
|
||||
- :manage_categories
|
||||
- :add_issues
|
||||
- :edit_issues
|
||||
- :manage_issue_relations
|
||||
- :add_issue_notes
|
||||
- :change_issue_status
|
||||
- :move_issues
|
||||
- :delete_issues
|
||||
- :manage_public_queries
|
||||
- :save_queries
|
||||
- :view_gantt
|
||||
- :view_calendar
|
||||
- :log_time
|
||||
- :view_time_entries
|
||||
- :manage_news
|
||||
- :comment_news
|
||||
- :view_documents
|
||||
- :manage_documents
|
||||
- :view_wiki_pages
|
||||
- :edit_wiki_pages
|
||||
- :delete_wiki_pages
|
||||
- :add_messages
|
||||
- :manage_boards
|
||||
- :view_files
|
||||
- :manage_files
|
||||
- :browse_repository
|
||||
- :view_changesets
|
||||
|
||||
position: 3
|
||||
roles_003:
|
||||
name: Reporter
|
||||
id: 3
|
||||
builtin: 0
|
||||
permissions: |
|
||||
---
|
||||
- :edit_project
|
||||
- :manage_members
|
||||
- :manage_versions
|
||||
- :manage_categories
|
||||
- :add_issues
|
||||
- :edit_issues
|
||||
- :manage_issue_relations
|
||||
- :add_issue_notes
|
||||
- :change_issue_status
|
||||
- :move_issues
|
||||
- :delete_issues
|
||||
- :manage_public_queries
|
||||
- :save_queries
|
||||
- :view_gantt
|
||||
- :view_calendar
|
||||
- :log_time
|
||||
- :view_time_entries
|
||||
- :manage_news
|
||||
- :comment_news
|
||||
- :view_documents
|
||||
- :manage_documents
|
||||
- :view_wiki_pages
|
||||
- :edit_wiki_pages
|
||||
- :delete_wiki_pages
|
||||
- :add_messages
|
||||
- :manage_boards
|
||||
- :view_files
|
||||
- :manage_files
|
||||
- :browse_repository
|
||||
- :view_changesets
|
||||
|
||||
position: 4
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
---
|
||||
time_entries_001:
|
||||
created_on: 2007-03-23 12:54:18 +01:00
|
||||
tweek: 12
|
||||
tmonth: 3
|
||||
project_id: 1
|
||||
comments: My hours
|
||||
updated_on: 2007-03-23 12:54:18 +01:00
|
||||
activity_id: 8
|
||||
spent_on: 2007-03-23
|
||||
issue_id: 1
|
||||
id: 1
|
||||
hours: 4.25
|
||||
user_id: 2
|
||||
tyear: 2007
|
||||
time_entries_002:
|
||||
created_on: 2007-03-23 14:11:04 +01:00
|
||||
tweek: 12
|
||||
tmonth: 3
|
||||
project_id: 1
|
||||
comments: ""
|
||||
updated_on: 2007-03-23 14:11:04 +01:00
|
||||
activity_id: 8
|
||||
spent_on: 2007-03-23
|
||||
issue_id: 1
|
||||
id: 2
|
||||
hours: 150.0
|
||||
user_id: 1
|
||||
tyear: 2007
|
||||
time_entries_003:
|
||||
created_on: 2007-04-21 12:20:48 +02:00
|
||||
tweek: 16
|
||||
tmonth: 4
|
||||
project_id: 1
|
||||
comments: ""
|
||||
updated_on: 2007-04-21 12:20:48 +02:00
|
||||
activity_id: 8
|
||||
spent_on: 2007-04-21
|
||||
issue_id: 2
|
||||
id: 3
|
||||
hours: 1.0
|
||||
user_id: 1
|
||||
tyear: 2007
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
---
|
||||
tokens_001:
|
||||
created_on: 2007-01-21 00:39:12 +01:00
|
||||
action: register
|
||||
id: 1
|
||||
value: DwMJ2yIxBNeAk26znMYzYmz5dAiIina0GFrPnGTM
|
||||
user_id: 1
|
||||
tokens_002:
|
||||
created_on: 2007-01-21 00:39:52 +01:00
|
||||
action: recovery
|
||||
id: 2
|
||||
value: sahYSIaoYrsZUef86sTHrLISdznW6ApF36h5WSnm
|
||||
user_id: 2
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
---
|
||||
trackers_001:
|
||||
name: Bug
|
||||
id: 1
|
||||
is_in_chlog: true
|
||||
trackers_002:
|
||||
name: Feature request
|
||||
id: 2
|
||||
is_in_chlog: true
|
||||
trackers_003:
|
||||
name: Support request
|
||||
id: 3
|
||||
is_in_chlog: false
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
---
|
||||
user_preferences_001:
|
||||
others: |
|
||||
---
|
||||
:my_page_layout:
|
||||
left:
|
||||
- latest_news
|
||||
- documents
|
||||
right:
|
||||
- issues_assigned_to_me
|
||||
- issues_reported_by_me
|
||||
top:
|
||||
- calendar
|
||||
|
||||
id: 1
|
||||
user_id: 1
|
||||
hide_mail: true
|
||||
user_preferences_002:
|
||||
others: |+
|
||||
--- {}
|
||||
|
||||
id: 2
|
||||
user_id: 3
|
||||
hide_mail: false
|
||||
Vendored
+77
@@ -0,0 +1,77 @@
|
||||
---
|
||||
users_004:
|
||||
created_on: 2006-07-19 19:34:07 +02:00
|
||||
status: 1
|
||||
last_login_on:
|
||||
language: en
|
||||
hashed_password: 4e4aeb7baaf0706bd670263fef42dad15763b608
|
||||
updated_on: 2006-07-19 19:34:07 +02:00
|
||||
admin: false
|
||||
mail: rhill@somenet.foo
|
||||
lastname: Hill
|
||||
firstname: Robert
|
||||
id: 4
|
||||
auth_source_id:
|
||||
mail_notification: true
|
||||
login: rhill
|
||||
users_001:
|
||||
created_on: 2006-07-19 19:12:21 +02:00
|
||||
status: 1
|
||||
last_login_on: 2006-07-19 22:57:52 +02:00
|
||||
language: en
|
||||
hashed_password: d033e22ae348aeb5660fc2140aec35850c4da997
|
||||
updated_on: 2006-07-19 22:57:52 +02:00
|
||||
admin: true
|
||||
mail: admin@somenet.foo
|
||||
lastname: Admin
|
||||
firstname: redMine
|
||||
id: 1
|
||||
auth_source_id:
|
||||
mail_notification: true
|
||||
login: admin
|
||||
users_002:
|
||||
created_on: 2006-07-19 19:32:09 +02:00
|
||||
status: 1
|
||||
last_login_on: 2006-07-19 22:42:15 +02:00
|
||||
language: en
|
||||
hashed_password: a9a653d4151fa2c081ba1ffc2c2726f3b80b7d7d
|
||||
updated_on: 2006-07-19 22:42:15 +02:00
|
||||
admin: false
|
||||
mail: jsmith@somenet.foo
|
||||
lastname: Smith
|
||||
firstname: John
|
||||
id: 2
|
||||
auth_source_id:
|
||||
mail_notification: true
|
||||
login: jsmith
|
||||
users_003:
|
||||
created_on: 2006-07-19 19:33:19 +02:00
|
||||
status: 1
|
||||
last_login_on:
|
||||
language: en
|
||||
hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
|
||||
updated_on: 2006-07-19 19:33:19 +02:00
|
||||
admin: false
|
||||
mail: dlopper@somenet.foo
|
||||
lastname: Lopper
|
||||
firstname: Dave
|
||||
id: 3
|
||||
auth_source_id:
|
||||
mail_notification: true
|
||||
login: dlopper
|
||||
users_005:
|
||||
id: 5
|
||||
created_on: 2006-07-19 19:33:19 +02:00
|
||||
# Locked
|
||||
status: 3
|
||||
last_login_on:
|
||||
language: en
|
||||
hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415
|
||||
updated_on: 2006-07-19 19:33:19 +02:00
|
||||
admin: false
|
||||
mail: dlopper2@somenet.foo
|
||||
lastname: Lopper2
|
||||
firstname: Dave2
|
||||
auth_source_id:
|
||||
mail_notification: true
|
||||
login: dlopper2
|
||||
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
---
|
||||
versions_001:
|
||||
created_on: 2006-07-19 21:00:07 +02:00
|
||||
name: "0.1"
|
||||
project_id: 1
|
||||
updated_on: 2006-07-19 21:00:07 +02:00
|
||||
id: 1
|
||||
description: Beta
|
||||
effective_date: 2006-07-01
|
||||
versions_002:
|
||||
created_on: 2006-07-19 21:00:33 +02:00
|
||||
name: "1.0"
|
||||
project_id: 1
|
||||
updated_on: 2006-07-19 21:00:33 +02:00
|
||||
id: 2
|
||||
description: Stable release
|
||||
effective_date: 2006-07-19
|
||||
versions_003:
|
||||
created_on: 2006-07-19 21:00:33 +02:00
|
||||
name: "2.0"
|
||||
project_id: 1
|
||||
updated_on: 2006-07-19 21:00:33 +02:00
|
||||
id: 3
|
||||
description: Future version
|
||||
effective_date:
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
wiki_content_versions_001:
|
||||
updated_on: 2007-03-07 00:08:07 +01:00
|
||||
page_id: 1
|
||||
id: 1
|
||||
version: 1
|
||||
author_id: 1
|
||||
comments: Page creation
|
||||
wiki_content_id: 1
|
||||
compression: ""
|
||||
data: |-
|
||||
h1. CookBook documentation␍
|
||||
␍
|
||||
Some [[documentation]] here...
|
||||
wiki_content_versions_002:
|
||||
updated_on: 2007-03-07 00:08:34 +01:00
|
||||
page_id: 1
|
||||
id: 2
|
||||
version: 2
|
||||
author_id: 1
|
||||
comments: Small update
|
||||
wiki_content_id: 1
|
||||
compression: ""
|
||||
data: |-
|
||||
h1. CookBook documentation␍
|
||||
␍
|
||||
Some updated [[documentation]] here...
|
||||
wiki_content_versions_003:
|
||||
updated_on: 2007-03-07 00:10:51 +01:00
|
||||
page_id: 1
|
||||
id: 3
|
||||
version: 3
|
||||
author_id: 1
|
||||
comments: ""
|
||||
wiki_content_id: 1
|
||||
compression: ""
|
||||
data: |-
|
||||
h1. CookBook documentation
|
||||
Some updated [[documentation]] here...
|
||||
wiki_content_versions_004:
|
||||
data: |-
|
||||
h1. Another page
|
||||
|
||||
This is a link to a ticket: #2
|
||||
updated_on: 2007-03-08 00:18:07 +01:00
|
||||
page_id: 2
|
||||
wiki_content_id: 2
|
||||
id: 4
|
||||
version: 1
|
||||
author_id: 1
|
||||
comments:
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
---
|
||||
wiki_contents_001:
|
||||
text: |-
|
||||
h1. CookBook documentation␍
|
||||
␍
|
||||
Some updated [[documentation]] here with gzipped history
|
||||
updated_on: 2007-03-07 00:10:51 +01:00
|
||||
page_id: 1
|
||||
id: 1
|
||||
version: 3
|
||||
author_id: 1
|
||||
comments: Gzip compression activated
|
||||
wiki_contents_002:
|
||||
text: |-
|
||||
h1. Another page
|
||||
|
||||
This is a link to a ticket: #2
|
||||
updated_on: 2007-03-08 00:18:07 +01:00
|
||||
page_id: 2
|
||||
id: 2
|
||||
version: 1
|
||||
author_id: 1
|
||||
comments:
|
||||
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
---
|
||||
wiki_pages_001:
|
||||
created_on: 2007-03-07 00:08:07 +01:00
|
||||
title: CookBook_documentation
|
||||
id: 1
|
||||
wiki_id: 1
|
||||
wiki_pages_002:
|
||||
created_on: 2007-03-08 00:18:07 +01:00
|
||||
title: Another_page
|
||||
id: 2
|
||||
wiki_id: 1
|
||||
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
---
|
||||
wikis_001:
|
||||
status: 1
|
||||
start_page: CookBook documentation
|
||||
project_id: 1
|
||||
id: 1
|
||||
Vendored
+1621
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,73 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'account_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class AccountController; def rescue_action(e) raise e end; end
|
||||
|
||||
class AccountControllerTest < Test::Unit::TestCase
|
||||
fixtures :users
|
||||
|
||||
def setup
|
||||
@controller = AccountController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_show
|
||||
get :show, :id => 2
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_not_nil assigns(:user)
|
||||
end
|
||||
|
||||
def test_show_inactive
|
||||
get :show, :id => 5
|
||||
assert_response 404
|
||||
assert_nil assigns(:user)
|
||||
end
|
||||
|
||||
def test_login_with_wrong_password
|
||||
post :login, :login => 'admin', :password => 'bad'
|
||||
assert_response :success
|
||||
assert_template 'login'
|
||||
assert_tag 'div',
|
||||
:attributes => { :class => "flash error" },
|
||||
:content => /Invalid user or password/
|
||||
end
|
||||
|
||||
def test_autologin
|
||||
Setting.autologin = "7"
|
||||
Token.delete_all
|
||||
post :login, :login => 'admin', :password => 'admin', :autologin => 1
|
||||
assert_redirected_to 'my/page'
|
||||
token = Token.find :first
|
||||
assert_not_nil token
|
||||
assert_equal User.find_by_login('admin'), token.user
|
||||
assert_equal 'autologin', token.action
|
||||
end
|
||||
|
||||
def test_logout
|
||||
@request.session[:user_id] = 2
|
||||
get :logout
|
||||
assert_redirected_to ''
|
||||
assert_nil @request.session[:user_id]
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,61 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'admin_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class AdminController; def rescue_action(e) raise e end; end
|
||||
|
||||
class AdminControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users
|
||||
|
||||
def setup
|
||||
@controller = AdminController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
@request.session[:user_id] = 1 # admin
|
||||
end
|
||||
|
||||
def test_get_mail_options
|
||||
get :mail_options
|
||||
assert_response :success
|
||||
assert_template 'mail_options'
|
||||
end
|
||||
|
||||
def test_post_mail_options
|
||||
post :mail_options, :settings => {'mail_from' => 'functional@test.foo'}
|
||||
assert_redirected_to 'admin/mail_options'
|
||||
assert_equal 'functional@test.foo', Setting.mail_from
|
||||
end
|
||||
|
||||
def test_test_email
|
||||
get :test_email
|
||||
assert_redirected_to 'admin/mail_options'
|
||||
mail = ActionMailer::Base.deliveries.last
|
||||
assert_kind_of TMail::Mail, mail
|
||||
user = User.find(1)
|
||||
assert_equal [user.mail], mail.bcc
|
||||
end
|
||||
|
||||
def test_info
|
||||
get :info
|
||||
assert_response :success
|
||||
assert_template 'info'
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,39 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'application'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class ApplicationController; def rescue_action(e) raise e end; end
|
||||
|
||||
class ApplicationControllerTest < Test::Unit::TestCase
|
||||
def setup
|
||||
@controller = ApplicationController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
end
|
||||
|
||||
# check that all language files are valid
|
||||
def test_localization
|
||||
lang_files_count = Dir["#{RAILS_ROOT}/lang/*.yml"].size
|
||||
assert_equal lang_files_count, GLoc.valid_languages.size
|
||||
GLoc.valid_languages.each do |lang|
|
||||
assert set_language_if_valid(lang)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,50 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'boards_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class BoardsController; def rescue_action(e) raise e end; end
|
||||
|
||||
class BoardsControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :members, :roles, :boards, :messages, :enabled_modules
|
||||
|
||||
def setup
|
||||
@controller = BoardsController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_index
|
||||
get :index, :project_id => 1
|
||||
assert_response :success
|
||||
assert_template 'index'
|
||||
assert_not_nil assigns(:boards)
|
||||
assert_not_nil assigns(:project)
|
||||
end
|
||||
|
||||
def test_show
|
||||
get :show, :project_id => 1, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_not_nil assigns(:board)
|
||||
assert_not_nil assigns(:project)
|
||||
assert_not_nil assigns(:topics)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,163 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'issues_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class IssuesController; def rescue_action(e) raise e end; end
|
||||
|
||||
class IssuesControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects,
|
||||
:users,
|
||||
:roles,
|
||||
:members,
|
||||
:issues,
|
||||
:issue_statuses,
|
||||
:trackers,
|
||||
:issue_categories,
|
||||
:enabled_modules,
|
||||
:enumerations,
|
||||
:attachments
|
||||
|
||||
def setup
|
||||
@controller = IssuesController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_index
|
||||
get :index
|
||||
assert_response :success
|
||||
assert_template 'index.rhtml'
|
||||
assert_not_nil assigns(:issues)
|
||||
assert_nil assigns(:project)
|
||||
end
|
||||
|
||||
def test_index_with_project
|
||||
get :index, :project_id => 1
|
||||
assert_response :success
|
||||
assert_template 'index.rhtml'
|
||||
assert_not_nil assigns(:issues)
|
||||
end
|
||||
|
||||
def test_index_with_project_and_filter
|
||||
get :index, :project_id => 1, :set_filter => 1
|
||||
assert_response :success
|
||||
assert_template 'index.rhtml'
|
||||
assert_not_nil assigns(:issues)
|
||||
end
|
||||
|
||||
def test_index_csv_with_project
|
||||
get :index, :format => 'csv'
|
||||
assert_response :success
|
||||
assert_not_nil assigns(:issues)
|
||||
assert_equal 'text/csv', @response.content_type
|
||||
|
||||
get :index, :project_id => 1, :format => 'csv'
|
||||
assert_response :success
|
||||
assert_not_nil assigns(:issues)
|
||||
assert_equal 'text/csv', @response.content_type
|
||||
end
|
||||
|
||||
def test_index_pdf
|
||||
get :index, :format => 'pdf'
|
||||
assert_response :success
|
||||
assert_not_nil assigns(:issues)
|
||||
assert_equal 'application/pdf', @response.content_type
|
||||
|
||||
get :index, :project_id => 1, :format => 'pdf'
|
||||
assert_response :success
|
||||
assert_not_nil assigns(:issues)
|
||||
assert_equal 'application/pdf', @response.content_type
|
||||
end
|
||||
|
||||
def test_changes
|
||||
get :changes, :project_id => 1
|
||||
assert_response :success
|
||||
assert_not_nil assigns(:changes)
|
||||
assert_equal 'application/atom+xml', @response.content_type
|
||||
end
|
||||
|
||||
def test_show
|
||||
get :show, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'show.rhtml'
|
||||
assert_not_nil assigns(:issue)
|
||||
end
|
||||
|
||||
def test_get_edit
|
||||
@request.session[:user_id] = 2
|
||||
get :edit, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'edit'
|
||||
assert_not_nil assigns(:issue)
|
||||
assert_equal Issue.find(1), assigns(:issue)
|
||||
end
|
||||
|
||||
def test_post_edit
|
||||
@request.session[:user_id] = 2
|
||||
post :edit, :id => 1, :issue => {:subject => 'Modified subject'}
|
||||
assert_redirected_to 'issues/show/1'
|
||||
assert_equal 'Modified subject', Issue.find(1).subject
|
||||
end
|
||||
|
||||
def test_post_change_status
|
||||
issue = Issue.find(1)
|
||||
assert_equal 1, issue.status_id
|
||||
@request.session[:user_id] = 2
|
||||
post :change_status, :id => 1,
|
||||
:new_status_id => 2,
|
||||
:issue => { :assigned_to_id => 3 },
|
||||
:notes => 'Assigned to dlopper',
|
||||
:confirm => 1
|
||||
assert_redirected_to 'issues/show/1'
|
||||
issue.reload
|
||||
assert_equal 2, issue.status_id
|
||||
j = issue.journals.find(:first, :order => 'created_on DESC')
|
||||
assert_equal 'Assigned to dlopper', j.notes
|
||||
assert_equal 2, j.details.size
|
||||
end
|
||||
|
||||
def test_context_menu
|
||||
@request.session[:user_id] = 2
|
||||
get :context_menu, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'context_menu'
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
@request.session[:user_id] = 2
|
||||
post :destroy, :id => 1
|
||||
assert_redirected_to 'projects/1/issues'
|
||||
assert_nil Issue.find_by_id(1)
|
||||
end
|
||||
|
||||
def test_destroy_attachment
|
||||
issue = Issue.find(3)
|
||||
a = issue.attachments.size
|
||||
@request.session[:user_id] = 2
|
||||
post :destroy_attachment, :id => 3, :attachment_id => 1
|
||||
assert_redirected_to 'issues/show/3'
|
||||
assert_nil Attachment.find_by_id(1)
|
||||
issue.reload
|
||||
assert_equal((a-1), issue.attachments.size)
|
||||
j = issue.journals.find(:first, :order => 'created_on DESC')
|
||||
assert_equal 'attachment', j.details.first.property
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,99 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'messages_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class MessagesController; def rescue_action(e) raise e end; end
|
||||
|
||||
class MessagesControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :members, :roles, :boards, :messages, :enabled_modules
|
||||
|
||||
def setup
|
||||
@controller = MessagesController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_show
|
||||
get :show, :board_id => 1, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_not_nil assigns(:board)
|
||||
assert_not_nil assigns(:project)
|
||||
assert_not_nil assigns(:topic)
|
||||
end
|
||||
|
||||
def test_show_message_not_found
|
||||
get :show, :board_id => 1, :id => 99999
|
||||
assert_response 404
|
||||
end
|
||||
|
||||
def test_get_new
|
||||
@request.session[:user_id] = 2
|
||||
get :new, :board_id => 1
|
||||
assert_response :success
|
||||
assert_template 'new'
|
||||
end
|
||||
|
||||
def test_post_new
|
||||
@request.session[:user_id] = 2
|
||||
post :new, :board_id => 1,
|
||||
:message => { :subject => 'Test created message',
|
||||
:content => 'Message body'}
|
||||
assert_redirected_to 'messages/show'
|
||||
message = Message.find_by_subject('Test created message')
|
||||
assert_not_nil message
|
||||
assert_equal 'Message body', message.content
|
||||
assert_equal 2, message.author_id
|
||||
assert_equal 1, message.board_id
|
||||
end
|
||||
|
||||
def test_get_edit
|
||||
@request.session[:user_id] = 2
|
||||
get :edit, :board_id => 1, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'edit'
|
||||
end
|
||||
|
||||
def test_post_edit
|
||||
@request.session[:user_id] = 2
|
||||
post :edit, :board_id => 1, :id => 1,
|
||||
:message => { :subject => 'New subject',
|
||||
:content => 'New body'}
|
||||
assert_redirected_to 'messages/show'
|
||||
message = Message.find(1)
|
||||
assert_equal 'New subject', message.subject
|
||||
assert_equal 'New body', message.content
|
||||
end
|
||||
|
||||
def test_reply
|
||||
@request.session[:user_id] = 2
|
||||
post :reply, :board_id => 1, :id => 1, :reply => { :content => 'This is a test reply', :subject => 'Test reply' }
|
||||
assert_redirected_to 'messages/show'
|
||||
assert Message.find_by_subject('Test reply')
|
||||
end
|
||||
|
||||
def test_destroy_topic
|
||||
@request.session[:user_id] = 2
|
||||
post :destroy, :board_id => 1, :id => 1
|
||||
assert_redirected_to 'boards/show'
|
||||
assert_nil Message.find_by_id(1)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,91 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'my_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class MyController; def rescue_action(e) raise e end; end
|
||||
|
||||
class MyControllerTest < Test::Unit::TestCase
|
||||
fixtures :users, :issues, :issue_statuses, :trackers, :enumerations
|
||||
|
||||
def setup
|
||||
@controller = MyController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@request.session[:user_id] = 2
|
||||
@response = ActionController::TestResponse.new
|
||||
end
|
||||
|
||||
def test_index
|
||||
get :index
|
||||
assert_response :success
|
||||
assert_template 'page'
|
||||
end
|
||||
|
||||
def test_page
|
||||
get :page
|
||||
assert_response :success
|
||||
assert_template 'page'
|
||||
end
|
||||
|
||||
def test_get_account
|
||||
get :account
|
||||
assert_response :success
|
||||
assert_template 'account'
|
||||
assert_equal User.find(2), assigns(:user)
|
||||
end
|
||||
|
||||
def test_update_account
|
||||
post :account, :user => {:firstname => "Joe", :login => "root", :admin => 1}
|
||||
assert_redirected_to 'my/account'
|
||||
user = User.find(2)
|
||||
assert_equal user, assigns(:user)
|
||||
assert_equal "Joe", user.firstname
|
||||
assert_equal "jsmith", user.login
|
||||
assert !user.admin?
|
||||
end
|
||||
|
||||
def test_change_password
|
||||
get :password
|
||||
assert_response :success
|
||||
assert_template 'password'
|
||||
|
||||
# non matching password confirmation
|
||||
post :password, :password => 'jsmith',
|
||||
:new_password => 'hello',
|
||||
:new_password_confirmation => 'hello2'
|
||||
assert_response :success
|
||||
assert_template 'password'
|
||||
assert_tag :tag => "div", :attributes => { :class => "errorExplanation" }
|
||||
|
||||
# wrong password
|
||||
post :password, :password => 'wrongpassword',
|
||||
:new_password => 'hello',
|
||||
:new_password_confirmation => 'hello'
|
||||
assert_response :success
|
||||
assert_template 'password'
|
||||
assert_equal 'Wrong password', flash[:error]
|
||||
|
||||
# good password
|
||||
post :password, :password => 'jsmith',
|
||||
:new_password => 'hello',
|
||||
:new_password_confirmation => 'hello'
|
||||
assert_redirected_to 'my/account'
|
||||
assert User.try_to_login('jsmith', 'hello')
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,48 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'news_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class NewsController; def rescue_action(e) raise e end; end
|
||||
|
||||
class NewsControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :roles, :members, :enabled_modules
|
||||
|
||||
def setup
|
||||
@controller = NewsController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_index
|
||||
get :index
|
||||
assert_response :success
|
||||
assert_template 'index'
|
||||
assert_not_nil assigns(:newss)
|
||||
assert_nil assigns(:project)
|
||||
end
|
||||
|
||||
def test_index_with_project
|
||||
get :index, :project_id => 1
|
||||
assert_response :success
|
||||
assert_template 'index'
|
||||
assert_not_nil assigns(:newss)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,257 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'projects_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class ProjectsController; def rescue_action(e) raise e end; end
|
||||
|
||||
class ProjectsControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :versions, :users, :roles, :members, :issues, :journals, :journal_details, :trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations
|
||||
|
||||
def setup
|
||||
@controller = ProjectsController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
end
|
||||
|
||||
def test_index
|
||||
get :index
|
||||
assert_response :success
|
||||
assert_template 'list'
|
||||
end
|
||||
|
||||
def test_list
|
||||
get :list
|
||||
assert_response :success
|
||||
assert_template 'list'
|
||||
assert_not_nil assigns(:project_tree)
|
||||
# Root project as hash key
|
||||
assert assigns(:project_tree).has_key?(Project.find(1))
|
||||
# Subproject in corresponding value
|
||||
assert assigns(:project_tree)[Project.find(1)].include?(Project.find(3))
|
||||
end
|
||||
|
||||
def test_show
|
||||
get :show, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_not_nil assigns(:project)
|
||||
end
|
||||
|
||||
def test_settings
|
||||
@request.session[:user_id] = 2 # manager
|
||||
get :settings, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'settings'
|
||||
end
|
||||
|
||||
def test_edit
|
||||
@request.session[:user_id] = 2 # manager
|
||||
post :edit, :id => 1, :project => {:name => 'Test changed name'}
|
||||
assert_redirected_to 'projects/settings/1'
|
||||
project = Project.find(1)
|
||||
assert_equal 'Test changed name', project.name
|
||||
end
|
||||
|
||||
def test_get_destroy
|
||||
@request.session[:user_id] = 1 # admin
|
||||
get :destroy, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'destroy'
|
||||
assert_not_nil Project.find_by_id(1)
|
||||
end
|
||||
|
||||
def test_post_destroy
|
||||
@request.session[:user_id] = 1 # admin
|
||||
post :destroy, :id => 1, :confirm => 1
|
||||
assert_redirected_to 'admin/projects'
|
||||
assert_nil Project.find_by_id(1)
|
||||
end
|
||||
|
||||
def test_list_documents
|
||||
get :list_documents, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'list_documents'
|
||||
assert_not_nil assigns(:grouped)
|
||||
end
|
||||
|
||||
def test_bulk_edit_issues
|
||||
@request.session[:user_id] = 2
|
||||
# update issues priority
|
||||
post :bulk_edit_issues, :id => 1, :issue_ids => [1, 2], :priority_id => 7, :notes => 'Bulk editing', :assigned_to_id => ''
|
||||
assert_response 302
|
||||
# check that the issues were updated
|
||||
assert_equal [7, 7], Issue.find_all_by_id([1, 2]).collect {|i| i.priority.id}
|
||||
assert_equal 'Bulk editing', Issue.find(1).journals.find(:first, :order => 'created_on DESC').notes
|
||||
end
|
||||
|
||||
def test_move_issues_to_another_project
|
||||
@request.session[:user_id] = 1
|
||||
post :move_issues, :id => 1, :issue_ids => [1, 2], :new_project_id => 2
|
||||
assert_redirected_to 'projects/1/issues'
|
||||
assert_equal 2, Issue.find(1).project_id
|
||||
assert_equal 2, Issue.find(2).project_id
|
||||
end
|
||||
|
||||
def test_move_issues_to_another_tracker
|
||||
@request.session[:user_id] = 1
|
||||
post :move_issues, :id => 1, :issue_ids => [1, 2], :new_tracker_id => 3
|
||||
assert_redirected_to 'projects/1/issues'
|
||||
assert_equal 3, Issue.find(1).tracker_id
|
||||
assert_equal 3, Issue.find(2).tracker_id
|
||||
end
|
||||
|
||||
def test_list_files
|
||||
get :list_files, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'list_files'
|
||||
assert_not_nil assigns(:versions)
|
||||
end
|
||||
|
||||
def test_changelog
|
||||
get :changelog, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'changelog'
|
||||
assert_not_nil assigns(:versions)
|
||||
end
|
||||
|
||||
def test_roadmap
|
||||
get :roadmap, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'roadmap'
|
||||
assert_not_nil assigns(:versions)
|
||||
# Version with no date set appears
|
||||
assert assigns(:versions).include?(Version.find(3))
|
||||
# Completed version doesn't appear
|
||||
assert !assigns(:versions).include?(Version.find(1))
|
||||
end
|
||||
|
||||
def test_roadmap_with_completed_versions
|
||||
get :roadmap, :id => 1, :completed => 1
|
||||
assert_response :success
|
||||
assert_template 'roadmap'
|
||||
assert_not_nil assigns(:versions)
|
||||
# Version with no date set appears
|
||||
assert assigns(:versions).include?(Version.find(3))
|
||||
# Completed version appears
|
||||
assert assigns(:versions).include?(Version.find(1))
|
||||
end
|
||||
|
||||
def test_activity
|
||||
get :activity, :id => 1, :year => 2.days.ago.to_date.year, :month => 2.days.ago.to_date.month
|
||||
assert_response :success
|
||||
assert_template 'activity'
|
||||
assert_not_nil assigns(:events_by_day)
|
||||
|
||||
assert_tag :tag => "h3",
|
||||
:content => /#{2.days.ago.to_date.day}/,
|
||||
:sibling => { :tag => "ul",
|
||||
:child => { :tag => "li",
|
||||
:child => { :tag => "p",
|
||||
:content => /(#{IssueStatus.find(2).name})/,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
get :activity, :id => 1, :year => 3.days.ago.to_date.year, :month => 3.days.ago.to_date.month
|
||||
assert_response :success
|
||||
assert_template 'activity'
|
||||
assert_not_nil assigns(:events_by_day)
|
||||
|
||||
assert_tag :tag => "h3",
|
||||
:content => /#{3.day.ago.to_date.day}/,
|
||||
:sibling => { :tag => "ul",
|
||||
:child => { :tag => "li",
|
||||
:child => { :tag => "p",
|
||||
:content => /#{Issue.find(1).subject}/,
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
def test_calendar
|
||||
get :calendar, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'calendar'
|
||||
assert_not_nil assigns(:calendar)
|
||||
end
|
||||
|
||||
def test_calendar_with_subprojects
|
||||
get :calendar, :id => 1, :with_subprojects => 1, :tracker_ids => [1, 2]
|
||||
assert_response :success
|
||||
assert_template 'calendar'
|
||||
assert_not_nil assigns(:calendar)
|
||||
end
|
||||
|
||||
def test_gantt
|
||||
get :gantt, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'gantt.rhtml'
|
||||
assert_not_nil assigns(:events)
|
||||
end
|
||||
|
||||
def test_gantt_with_subprojects
|
||||
get :gantt, :id => 1, :with_subprojects => 1, :tracker_ids => [1, 2]
|
||||
assert_response :success
|
||||
assert_template 'gantt.rhtml'
|
||||
assert_not_nil assigns(:events)
|
||||
end
|
||||
|
||||
def test_gantt_export_to_pdf
|
||||
get :gantt, :id => 1, :format => 'pdf'
|
||||
assert_response :success
|
||||
assert_template 'gantt.rfpdf'
|
||||
assert_equal 'application/pdf', @response.content_type
|
||||
assert_not_nil assigns(:events)
|
||||
end
|
||||
|
||||
def test_archive
|
||||
@request.session[:user_id] = 1 # admin
|
||||
post :archive, :id => 1
|
||||
assert_redirected_to 'admin/projects'
|
||||
assert !Project.find(1).active?
|
||||
end
|
||||
|
||||
def test_unarchive
|
||||
@request.session[:user_id] = 1 # admin
|
||||
Project.find(1).archive
|
||||
post :unarchive, :id => 1
|
||||
assert_redirected_to 'admin/projects'
|
||||
assert Project.find(1).active?
|
||||
end
|
||||
|
||||
def test_add_issue
|
||||
@request.session[:user_id] = 2
|
||||
get :add_issue, :id => 1, :tracker_id => 1
|
||||
assert_response :success
|
||||
assert_template 'add_issue'
|
||||
post :add_issue, :id => 1, :issue => {:tracker_id => 1, :subject => 'This is the test_add_issue issue', :description => 'This is the description', :priority_id => 5}
|
||||
assert_redirected_to 'projects/1/issues'
|
||||
assert Issue.find_by_subject('This is the test_add_issue issue')
|
||||
end
|
||||
|
||||
def test_copy_issue
|
||||
@request.session[:user_id] = 2
|
||||
get :add_issue, :id => 1, :copy_from => 1
|
||||
assert_template 'add_issue'
|
||||
assert_not_nil assigns(:issue)
|
||||
orig = Issue.find(1)
|
||||
assert_equal orig.subject, assigns(:issue).subject
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,64 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'repositories_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class RepositoriesController; def rescue_action(e) raise e end; end
|
||||
|
||||
class RepositoriesControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :roles, :members, :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers
|
||||
|
||||
def setup
|
||||
@controller = RepositoriesController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_revisions
|
||||
get :revisions, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'revisions'
|
||||
assert_not_nil assigns(:changesets)
|
||||
end
|
||||
|
||||
def test_revision_with_before_nil_and_afer_normal
|
||||
get :revision, {:id => 1, :rev => 1}
|
||||
assert_response :success
|
||||
assert_template 'revision'
|
||||
assert_no_tag :tag => "div", :attributes => { :class => "contextual" },
|
||||
:child => { :tag => "a", :attributes => { :href => '/repositories/revision/1?rev=0'}
|
||||
}
|
||||
assert_tag :tag => "div", :attributes => { :class => "contextual" },
|
||||
:child => { :tag => "a", :attributes => { :href => '/repositories/revision/1?rev=2'}
|
||||
}
|
||||
end
|
||||
|
||||
def test_graph_commits_per_month
|
||||
get :graph, :id => 1, :graph => 'commits_per_month'
|
||||
assert_response :success
|
||||
assert_equal 'image/svg+xml', @response.content_type
|
||||
end
|
||||
|
||||
def test_graph_commits_per_author
|
||||
get :graph, :id => 1, :graph => 'commits_per_author'
|
||||
assert_response :success
|
||||
assert_equal 'image/svg+xml', @response.content_type
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,117 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'repositories_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class RepositoriesController; def rescue_action(e) raise e end; end
|
||||
|
||||
class RepositoriesMercurialControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :roles, :members, :repositories, :enabled_modules
|
||||
|
||||
# No '..' in the repository path
|
||||
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository'
|
||||
|
||||
def setup
|
||||
@controller = RepositoriesController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH)
|
||||
end
|
||||
|
||||
def test_show
|
||||
get :show, :id => 3
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_not_nil assigns(:entries)
|
||||
assert_not_nil assigns(:changesets)
|
||||
end
|
||||
|
||||
def test_browse_root
|
||||
get :browse, :id => 3
|
||||
assert_response :success
|
||||
assert_template 'browse'
|
||||
assert_not_nil assigns(:entries)
|
||||
assert_equal 3, assigns(:entries).size
|
||||
assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'}
|
||||
assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'}
|
||||
assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'}
|
||||
end
|
||||
|
||||
def test_browse_directory
|
||||
get :browse, :id => 3, :path => ['images']
|
||||
assert_response :success
|
||||
assert_template 'browse'
|
||||
assert_not_nil assigns(:entries)
|
||||
assert_equal 2, assigns(:entries).size
|
||||
entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
|
||||
assert_not_nil entry
|
||||
assert_equal 'file', entry.kind
|
||||
assert_equal 'images/edit.png', entry.path
|
||||
end
|
||||
|
||||
def test_changes
|
||||
get :changes, :id => 3, :path => ['images', 'edit.png']
|
||||
assert_response :success
|
||||
assert_template 'changes'
|
||||
assert_tag :tag => 'h2', :content => 'edit.png'
|
||||
end
|
||||
|
||||
def test_entry_show
|
||||
get :entry, :id => 3, :path => ['sources', 'watchers_controller.rb']
|
||||
assert_response :success
|
||||
assert_template 'entry'
|
||||
# Line 19
|
||||
assert_tag :tag => 'th',
|
||||
:content => /10/,
|
||||
:attributes => { :class => /line-num/ },
|
||||
:sibling => { :tag => 'td', :content => /WITHOUT ANY WARRANTY/ }
|
||||
end
|
||||
|
||||
def test_entry_download
|
||||
get :entry, :id => 3, :path => ['sources', 'watchers_controller.rb'], :format => 'raw'
|
||||
assert_response :success
|
||||
# File content
|
||||
assert @response.body.include?('WITHOUT ANY WARRANTY')
|
||||
end
|
||||
|
||||
def test_diff
|
||||
# Full diff of changeset 4
|
||||
get :diff, :id => 3, :rev => 4
|
||||
assert_response :success
|
||||
assert_template 'diff'
|
||||
# Line 22 removed
|
||||
assert_tag :tag => 'th',
|
||||
:content => /22/,
|
||||
:sibling => { :tag => 'td',
|
||||
:attributes => { :class => /diff_out/ },
|
||||
:content => /def remove/ }
|
||||
end
|
||||
|
||||
def test_annotate
|
||||
get :annotate, :id => 3, :path => ['sources', 'watchers_controller.rb']
|
||||
assert_response :success
|
||||
assert_template 'annotate'
|
||||
# Line 23, revision 4
|
||||
assert_tag :tag => 'th', :content => /23/,
|
||||
:sibling => { :tag => 'td', :child => { :tag => 'a', :content => /4/ } },
|
||||
:sibling => { :tag => 'td', :content => /jsmith/ },
|
||||
:sibling => { :tag => 'td', :content => /watcher =/ }
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,91 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'repositories_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class RepositoriesController; def rescue_action(e) raise e end; end
|
||||
|
||||
class RepositoriesSubversionControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :roles, :members, :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers
|
||||
|
||||
# No '..' in the repository path for svn
|
||||
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/subversion_repository'
|
||||
|
||||
def setup
|
||||
@controller = RepositoriesController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
if File.directory?(REPOSITORY_PATH)
|
||||
def test_show
|
||||
get :show, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_not_nil assigns(:entries)
|
||||
assert_not_nil assigns(:changesets)
|
||||
end
|
||||
|
||||
def test_browse_root
|
||||
get :browse, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'browse'
|
||||
assert_not_nil assigns(:entries)
|
||||
entry = assigns(:entries).detect {|e| e.name == 'subversion_test'}
|
||||
assert_equal 'dir', entry.kind
|
||||
end
|
||||
|
||||
def test_browse_directory
|
||||
get :browse, :id => 1, :path => ['subversion_test']
|
||||
assert_response :success
|
||||
assert_template 'browse'
|
||||
assert_not_nil assigns(:entries)
|
||||
entry = assigns(:entries).detect {|e| e.name == 'helloworld.c'}
|
||||
assert_equal 'file', entry.kind
|
||||
assert_equal 'subversion_test/helloworld.c', entry.path
|
||||
end
|
||||
|
||||
def test_entry
|
||||
get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c']
|
||||
assert_response :success
|
||||
assert_template 'entry'
|
||||
end
|
||||
|
||||
def test_entry_download
|
||||
get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'], :format => 'raw'
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
def test_diff
|
||||
get :diff, :id => 1, :rev => 3
|
||||
assert_response :success
|
||||
assert_template 'diff'
|
||||
end
|
||||
|
||||
def test_annotate
|
||||
get :annotate, :id => 1, :path => ['subversion_test', 'helloworld.c']
|
||||
assert_response :success
|
||||
assert_template 'annotate'
|
||||
end
|
||||
else
|
||||
puts "Subversion test repository NOT FOUND. Skipping functional tests !!!"
|
||||
def test_fake; assert true end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,65 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'search_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class SearchController; def rescue_action(e) raise e end; end
|
||||
|
||||
class SearchControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :issues, :custom_fields, :custom_values
|
||||
|
||||
def setup
|
||||
@controller = SearchController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_search_for_projects
|
||||
get :index
|
||||
assert_response :success
|
||||
assert_template 'index'
|
||||
|
||||
get :index, :q => "cook"
|
||||
assert_response :success
|
||||
assert_template 'index'
|
||||
assert assigns(:results).include?(Project.find(1))
|
||||
end
|
||||
|
||||
def test_search_without_searchable_custom_fields
|
||||
CustomField.update_all "searchable = #{ActiveRecord::Base.connection.quoted_false}"
|
||||
|
||||
get :index, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'index'
|
||||
assert_not_nil assigns(:project)
|
||||
|
||||
get :index, :id => 1, :q => "can"
|
||||
assert_response :success
|
||||
assert_template 'index'
|
||||
end
|
||||
|
||||
def test_search_with_searchable_custom_fields
|
||||
get :index, :id => 1, :q => "stringforcustomfield"
|
||||
assert_response :success
|
||||
results = assigns(:results)
|
||||
assert_not_nil results
|
||||
assert_equal 1, results.size
|
||||
assert results.include?(Issue.find(3))
|
||||
end
|
||||
|
||||
def test_quick_jump_to_issue
|
||||
# issue of a public project
|
||||
get :index, :q => "3"
|
||||
assert_redirected_to 'issues/show/3'
|
||||
|
||||
# issue of a private project
|
||||
get :index, :q => "4"
|
||||
assert_response :success
|
||||
assert_template 'index'
|
||||
end
|
||||
|
||||
def test_tokens_with_quotes
|
||||
get :index, :id => 1, :q => '"good bye" hello "bye bye"'
|
||||
assert_equal ["good bye", "hello", "bye bye"], assigns(:tokens)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,31 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'sys_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class SysController; def rescue_action(e) raise e end; end
|
||||
|
||||
class SysControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :repositories
|
||||
|
||||
def setup
|
||||
@controller = SysController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
# Enable WS
|
||||
Setting.sys_api_enabled = 1
|
||||
end
|
||||
|
||||
def test_projects
|
||||
result = invoke :projects
|
||||
assert_equal Project.count, result.size
|
||||
assert result.first.is_a?(Project)
|
||||
end
|
||||
|
||||
def test_repository_created
|
||||
project = Project.find(3)
|
||||
assert_nil project.repository
|
||||
assert invoke(:repository_created, project.identifier, 'http://localhost/svn')
|
||||
project.reload
|
||||
assert_not_nil project.repository
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,52 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'timelog_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class TimelogController; def rescue_action(e) raise e end; end
|
||||
|
||||
class TimelogControllerTest < Test::Unit::TestCase
|
||||
fixtures :time_entries, :issues
|
||||
|
||||
def setup
|
||||
@controller = TimelogController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
end
|
||||
|
||||
def test_report_no_criteria
|
||||
get :report, :project_id => 1
|
||||
assert_response :success
|
||||
assert_template 'report'
|
||||
end
|
||||
|
||||
def test_report_one_criteria
|
||||
get :report, :project_id => 1, :period => "month", :date_from => "2007-01-01", :date_to => "2007-12-31", :criterias => ["member"]
|
||||
assert_response :success
|
||||
assert_template 'report'
|
||||
assert_not_nil assigns(:hours)
|
||||
end
|
||||
|
||||
def test_report_two_criterias
|
||||
get :report, :project_id => 1, :period => "week", :date_from => "2007-01-01", :date_to => "2007-12-31", :criterias => ["member", "activity"]
|
||||
assert_response :success
|
||||
assert_template 'report'
|
||||
assert_not_nil assigns(:hours)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,62 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'users_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class UsersController; def rescue_action(e) raise e end; end
|
||||
|
||||
class UsersControllerTest < Test::Unit::TestCase
|
||||
fixtures :users, :projects, :members
|
||||
|
||||
def setup
|
||||
@controller = UsersController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
@request.session[:user_id] = 1 # admin
|
||||
end
|
||||
|
||||
def test_index
|
||||
get :index
|
||||
assert_response :success
|
||||
assert_template 'list'
|
||||
end
|
||||
|
||||
def test_list
|
||||
get :list
|
||||
assert_response :success
|
||||
assert_template 'list'
|
||||
assert_not_nil assigns(:users)
|
||||
# active users only
|
||||
assert_nil assigns(:users).detect {|u| !u.active?}
|
||||
end
|
||||
|
||||
def test_edit_membership
|
||||
post :edit_membership, :id => 2, :membership_id => 1,
|
||||
:membership => { :role_id => 2}
|
||||
assert_redirected_to 'users/edit/2'
|
||||
assert_equal 2, Member.find(1).role_id
|
||||
end
|
||||
|
||||
def test_destroy_membership
|
||||
post :destroy_membership, :id => 2, :membership_id => 1
|
||||
assert_redirected_to 'users/edit/2'
|
||||
assert_nil Member.find_by_id(1)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,73 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'versions_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class VersionsController; def rescue_action(e) raise e end; end
|
||||
|
||||
class VersionsControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :versions, :users, :roles, :members, :enabled_modules
|
||||
|
||||
def setup
|
||||
@controller = VersionsController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_show
|
||||
get :show, :id => 2
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_not_nil assigns(:version)
|
||||
|
||||
assert_tag :tag => 'h2', :content => /1.0/
|
||||
end
|
||||
|
||||
def test_get_edit
|
||||
@request.session[:user_id] = 2
|
||||
get :edit, :id => 2
|
||||
assert_response :success
|
||||
assert_template 'edit'
|
||||
end
|
||||
|
||||
def test_post_edit
|
||||
@request.session[:user_id] = 2
|
||||
post :edit, :id => 2,
|
||||
:version => { :name => 'New version name',
|
||||
:effective_date => Date.today.strftime("%Y-%m-%d")}
|
||||
assert_redirected_to 'projects/settings/1'
|
||||
version = Version.find(2)
|
||||
assert_equal 'New version name', version.name
|
||||
assert_equal Date.today, version.effective_date
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
@request.session[:user_id] = 2
|
||||
post :destroy, :id => 2
|
||||
assert_redirected_to 'projects/settings/1'
|
||||
assert_nil Version.find_by_id(2)
|
||||
end
|
||||
|
||||
def test_issue_status_by
|
||||
xhr :get, :status_by, :id => 2
|
||||
assert_response :success
|
||||
assert_template '_issue_counts'
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,49 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'welcome_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class WelcomeController; def rescue_action(e) raise e end; end
|
||||
|
||||
class WelcomeControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :news
|
||||
|
||||
def setup
|
||||
@controller = WelcomeController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_index
|
||||
get :index
|
||||
assert_response :success
|
||||
assert_template 'index'
|
||||
assert_not_nil assigns(:news)
|
||||
assert_not_nil assigns(:projects)
|
||||
assert !assigns(:projects).include?(Project.find(:first, :conditions => {:is_public => false}))
|
||||
end
|
||||
|
||||
def test_browser_language
|
||||
Setting.default_language = 'en'
|
||||
@request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3'
|
||||
get :index
|
||||
assert_equal :fr, @controller.current_language
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,145 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'wiki_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class WikiController; def rescue_action(e) raise e end; end
|
||||
|
||||
class WikiControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :roles, :members, :enabled_modules, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
|
||||
|
||||
def setup
|
||||
@controller = WikiController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_show_start_page
|
||||
get :index, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_tag :tag => 'h1', :content => /CookBook documentation/
|
||||
end
|
||||
|
||||
def test_show_page_with_name
|
||||
get :index, :id => 1, :page => 'Another_page'
|
||||
assert_response :success
|
||||
assert_template 'show'
|
||||
assert_tag :tag => 'h1', :content => /Another page/
|
||||
end
|
||||
|
||||
def test_show_unexistent_page_without_edit_right
|
||||
get :index, :id => 1, :page => 'Unexistent page'
|
||||
assert_response 404
|
||||
end
|
||||
|
||||
def test_show_unexistent_page_with_edit_right
|
||||
@request.session[:user_id] = 2
|
||||
get :index, :id => 1, :page => 'Unexistent page'
|
||||
assert_response :success
|
||||
assert_template 'edit'
|
||||
end
|
||||
|
||||
def test_create_page
|
||||
@request.session[:user_id] = 2
|
||||
post :edit, :id => 1,
|
||||
:page => 'New page',
|
||||
:content => {:comments => 'Created the page',
|
||||
:text => "h1. New page\n\nThis is a new page",
|
||||
:version => 0}
|
||||
assert_redirected_to 'wiki/1/New_page'
|
||||
page = Project.find(1).wiki.find_page('New page')
|
||||
assert !page.new_record?
|
||||
assert_not_nil page.content
|
||||
assert_equal 'Created the page', page.content.comments
|
||||
end
|
||||
|
||||
def test_preview
|
||||
@request.session[:user_id] = 2
|
||||
xhr :post, :preview, :id => 1, :page => 'CookBook_documentation',
|
||||
:content => { :comments => '',
|
||||
:text => 'this is a *previewed text*',
|
||||
:version => 3 }
|
||||
assert_response :success
|
||||
assert_template 'common/_preview'
|
||||
assert_tag :tag => 'strong', :content => /previewed text/
|
||||
end
|
||||
|
||||
def test_history
|
||||
get :history, :id => 1, :page => 'CookBook_documentation'
|
||||
assert_response :success
|
||||
assert_template 'history'
|
||||
assert_not_nil assigns(:versions)
|
||||
assert_equal 3, assigns(:versions).size
|
||||
end
|
||||
|
||||
def test_diff
|
||||
get :diff, :id => 1, :page => 'CookBook_documentation', :version => 2, :version_from => 1
|
||||
assert_response :success
|
||||
assert_template 'diff'
|
||||
assert_tag :tag => 'span', :attributes => { :class => 'diff_in'},
|
||||
:content => /updated/
|
||||
end
|
||||
|
||||
def test_rename_with_redirect
|
||||
@request.session[:user_id] = 2
|
||||
post :rename, :id => 1, :page => 'Another_page',
|
||||
:wiki_page => { :title => 'Another renamed page',
|
||||
:redirect_existing_links => 1 }
|
||||
assert_redirected_to 'wiki/1/Another_renamed_page'
|
||||
wiki = Project.find(1).wiki
|
||||
# Check redirects
|
||||
assert_not_nil wiki.find_page('Another page')
|
||||
assert_nil wiki.find_page('Another page', :with_redirect => false)
|
||||
end
|
||||
|
||||
def test_rename_without_redirect
|
||||
@request.session[:user_id] = 2
|
||||
post :rename, :id => 1, :page => 'Another_page',
|
||||
:wiki_page => { :title => 'Another renamed page',
|
||||
:redirect_existing_links => "0" }
|
||||
assert_redirected_to 'wiki/1/Another_renamed_page'
|
||||
wiki = Project.find(1).wiki
|
||||
# Check that there's no redirects
|
||||
assert_nil wiki.find_page('Another page')
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
@request.session[:user_id] = 2
|
||||
post :destroy, :id => 1, :page => 'CookBook_documentation'
|
||||
assert_redirected_to 'wiki/1/Page_index/special'
|
||||
end
|
||||
|
||||
def test_page_index
|
||||
get :special, :id => 1, :page => 'Page_index'
|
||||
assert_response :success
|
||||
assert_template 'special_page_index'
|
||||
pages = assigns(:pages)
|
||||
assert_not_nil pages
|
||||
assert_equal 2, pages.size
|
||||
assert_tag :tag => 'a', :attributes => { :href => '/wiki/1/CookBook_documentation' },
|
||||
:content => /CookBook documentation/
|
||||
end
|
||||
|
||||
def test_not_found
|
||||
get :index, :id => 999
|
||||
assert_response 404
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,56 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'wikis_controller'
|
||||
|
||||
# Re-raise errors caught by the controller.
|
||||
class WikisController; def rescue_action(e) raise e end; end
|
||||
|
||||
class WikisControllerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :roles, :members, :enabled_modules, :wikis
|
||||
|
||||
def setup
|
||||
@controller = WikisController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_create
|
||||
@request.session[:user_id] = 1
|
||||
assert_nil Project.find(3).wiki
|
||||
post :edit, :id => 3, :wiki => { :start_page => 'Start page' }
|
||||
assert_response :success
|
||||
wiki = Project.find(3).wiki
|
||||
assert_not_nil wiki
|
||||
assert_equal 'Start page', wiki.start_page
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
@request.session[:user_id] = 1
|
||||
post :destroy, :id => 1, :confirm => 1
|
||||
assert_redirected_to 'projects/settings/1'
|
||||
assert_nil Project.find(1).wiki
|
||||
end
|
||||
|
||||
def test_not_found
|
||||
@request.session[:user_id] = 1
|
||||
post :destroy, :id => 999, :confirm => 1
|
||||
assert_response 404
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,35 @@
|
||||
# Re-raise errors caught by the controller.
|
||||
class StubController < ApplicationController
|
||||
def rescue_action(e) raise e end;
|
||||
attr_accessor :request, :url
|
||||
end
|
||||
|
||||
class HelperTestCase < Test::Unit::TestCase
|
||||
|
||||
# Add other helpers here if you need them
|
||||
include ActionView::Helpers::ActiveRecordHelper
|
||||
include ActionView::Helpers::TagHelper
|
||||
include ActionView::Helpers::FormTagHelper
|
||||
include ActionView::Helpers::FormOptionsHelper
|
||||
include ActionView::Helpers::FormHelper
|
||||
include ActionView::Helpers::UrlHelper
|
||||
include ActionView::Helpers::AssetTagHelper
|
||||
include ActionView::Helpers::PrototypeHelper
|
||||
|
||||
def setup
|
||||
super
|
||||
|
||||
@request = ActionController::TestRequest.new
|
||||
@controller = StubController.new
|
||||
@controller.request = @request
|
||||
|
||||
# Fake url rewriter so we can test url_for
|
||||
@controller.url = ActionController::UrlRewriter.new @request, {}
|
||||
|
||||
ActionView::Helpers::AssetTagHelper::reset_javascript_include_default
|
||||
end
|
||||
|
||||
def test_dummy
|
||||
# do nothing - required by test/unit
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,101 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require "#{File.dirname(__FILE__)}/../test_helper"
|
||||
|
||||
class AccountTest < ActionController::IntegrationTest
|
||||
fixtures :users
|
||||
|
||||
# Replace this with your real tests.
|
||||
def test_login
|
||||
get "my/page"
|
||||
assert_redirected_to "account/login"
|
||||
log_user('jsmith', 'jsmith')
|
||||
|
||||
get "my/account"
|
||||
assert_response :success
|
||||
assert_template "my/account"
|
||||
end
|
||||
|
||||
def test_lost_password
|
||||
Token.delete_all
|
||||
|
||||
get "account/lost_password"
|
||||
assert_response :success
|
||||
assert_template "account/lost_password"
|
||||
|
||||
post "account/lost_password", :mail => 'jsmith@somenet.foo'
|
||||
assert_redirected_to "account/login"
|
||||
|
||||
token = Token.find(:first)
|
||||
assert_equal 'recovery', token.action
|
||||
assert_equal 'jsmith@somenet.foo', token.user.mail
|
||||
assert !token.expired?
|
||||
|
||||
get "account/lost_password", :token => token.value
|
||||
assert_response :success
|
||||
assert_template "account/password_recovery"
|
||||
|
||||
post "account/lost_password", :token => token.value, :new_password => 'newpass', :new_password_confirmation => 'newpass'
|
||||
assert_redirected_to "account/login"
|
||||
assert_equal 'Password was successfully updated.', flash[:notice]
|
||||
|
||||
log_user('jsmith', 'newpass')
|
||||
assert_equal 0, Token.count
|
||||
end
|
||||
|
||||
def test_register_with_automatic_activation
|
||||
Setting.self_registration = '3'
|
||||
|
||||
get 'account/register'
|
||||
assert_response :success
|
||||
assert_template 'account/register'
|
||||
|
||||
post 'account/register', :user => {:login => "newuser", :language => "en", :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar"},
|
||||
:password => "newpass", :password_confirmation => "newpass"
|
||||
assert_redirected_to 'account/login'
|
||||
log_user('newuser', 'newpass')
|
||||
end
|
||||
|
||||
def test_register_with_manual_activation
|
||||
Setting.self_registration = '2'
|
||||
|
||||
post 'account/register', :user => {:login => "newuser", :language => "en", :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar"},
|
||||
:password => "newpass", :password_confirmation => "newpass"
|
||||
assert_redirected_to 'account/login'
|
||||
assert !User.find_by_login('newuser').active?
|
||||
end
|
||||
|
||||
def test_register_with_email_activation
|
||||
Setting.self_registration = '1'
|
||||
Token.delete_all
|
||||
|
||||
post 'account/register', :user => {:login => "newuser", :language => "en", :firstname => "New", :lastname => "User", :mail => "newuser@foo.bar"},
|
||||
:password => "newpass", :password_confirmation => "newpass"
|
||||
assert_redirected_to 'account/login'
|
||||
assert !User.find_by_login('newuser').active?
|
||||
|
||||
token = Token.find(:first)
|
||||
assert_equal 'register', token.action
|
||||
assert_equal 'newuser@foo.bar', token.user.mail
|
||||
assert !token.expired?
|
||||
|
||||
get 'account/activate', :token => token.value
|
||||
assert_redirected_to 'account/login'
|
||||
log_user('newuser', 'newpass')
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,65 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require "#{File.dirname(__FILE__)}/../test_helper"
|
||||
|
||||
class AdminTest < ActionController::IntegrationTest
|
||||
fixtures :users
|
||||
|
||||
def test_add_user
|
||||
log_user("admin", "admin")
|
||||
get "/users/add"
|
||||
assert_response :success
|
||||
assert_template "users/add"
|
||||
post "/users/add", :user => { :login => "psmith", :firstname => "Paul", :lastname => "Smith", :mail => "psmith@somenet.foo", :language => "en" }, :password => "psmith09", :password_confirmation => "psmith09"
|
||||
assert_redirected_to "users/list"
|
||||
|
||||
user = User.find_by_login("psmith")
|
||||
assert_kind_of User, user
|
||||
logged_user = User.try_to_login("psmith", "psmith09")
|
||||
assert_kind_of User, logged_user
|
||||
assert_equal "Paul", logged_user.firstname
|
||||
|
||||
post "users/edit", :id => user.id, :user => { :status => User::STATUS_LOCKED }
|
||||
assert_redirected_to "users/list"
|
||||
locked_user = User.try_to_login("psmith", "psmith09")
|
||||
assert_equal nil, locked_user
|
||||
end
|
||||
|
||||
def test_add_project
|
||||
log_user("admin", "admin")
|
||||
get "projects/add"
|
||||
assert_response :success
|
||||
assert_template "projects/add"
|
||||
post "projects/add", :project => { :name => "blog",
|
||||
:description => "weblog",
|
||||
:identifier => "blog",
|
||||
:is_public => 1 },
|
||||
'custom_fields[3]' => 'Beta'
|
||||
assert_redirected_to "admin/projects"
|
||||
assert_equal 'Successful creation.', flash[:notice]
|
||||
|
||||
project = Project.find_by_name("blog")
|
||||
assert_kind_of Project, project
|
||||
assert_equal "weblog", project.description
|
||||
assert_equal true, project.is_public?
|
||||
|
||||
get "admin/projects"
|
||||
assert_response :success
|
||||
assert_template "admin/projects"
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,58 @@
|
||||
require "#{File.dirname(__FILE__)}/../test_helper"
|
||||
|
||||
class IssuesTest < ActionController::IntegrationTest
|
||||
fixtures :projects, :users, :trackers, :issue_statuses, :issues, :enumerations
|
||||
|
||||
# create an issue
|
||||
def test_add_issue
|
||||
log_user('jsmith', 'jsmith')
|
||||
get "projects/add_issue/1", :tracker_id => "1"
|
||||
assert_response :success
|
||||
assert_template "projects/add_issue"
|
||||
|
||||
post "projects/add_issue/1", :tracker_id => "1",
|
||||
:issue => { :start_date => "2006-12-26",
|
||||
:priority_id => "3",
|
||||
:subject => "new test issue",
|
||||
:category_id => "",
|
||||
:description => "new issue",
|
||||
:done_ratio => "0",
|
||||
:due_date => "",
|
||||
:assigned_to_id => "" }
|
||||
# find created issue
|
||||
issue = Issue.find_by_subject("new test issue")
|
||||
assert_kind_of Issue, issue
|
||||
|
||||
# check redirection
|
||||
assert_redirected_to "projects/1/issues"
|
||||
follow_redirect!
|
||||
assert assigns(:issues).include?(issue)
|
||||
|
||||
# check issue attributes
|
||||
assert_equal 'jsmith', issue.author.login
|
||||
assert_equal 1, issue.project.id
|
||||
assert_equal 1, issue.status.id
|
||||
end
|
||||
|
||||
# add then remove 2 attachments to an issue
|
||||
def test_issue_attachements
|
||||
log_user('jsmith', 'jsmith')
|
||||
|
||||
post "issues/add_note/1", { :notes => 'Some notes', 'attachments[]' => ActionController::TestUploadedFile.new(Test::Unit::TestCase.fixture_path + '/files/testfile.txt', 'text/plain') }
|
||||
assert_redirected_to "issues/show/1"
|
||||
|
||||
# make sure attachment was saved
|
||||
attachment = Issue.find(1).attachments.find_by_filename("testfile.txt")
|
||||
assert_kind_of Attachment, attachment
|
||||
assert_equal Issue.find(1), attachment.container
|
||||
# verify the size of the attachment stored in db
|
||||
#assert_equal file_data_1.length, attachment.filesize
|
||||
# verify that the attachment was written to disk
|
||||
assert File.exist?(attachment.diskfile)
|
||||
|
||||
# remove the attachments
|
||||
Issue.find(1).attachments.each(&:destroy)
|
||||
assert_equal 0, Issue.find(1).attachments.length
|
||||
end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,44 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require "#{File.dirname(__FILE__)}/../test_helper"
|
||||
|
||||
class ProjectsTest < ActionController::IntegrationTest
|
||||
fixtures :projects, :users, :members
|
||||
|
||||
def test_archive_project
|
||||
subproject = Project.find(1).children.first
|
||||
log_user("admin", "admin")
|
||||
get "admin/projects"
|
||||
assert_response :success
|
||||
assert_template "admin/projects"
|
||||
post "projects/archive", :id => 1
|
||||
assert_redirected_to "admin/projects"
|
||||
assert !Project.find(1).active?
|
||||
|
||||
get "projects/show", :id => 1
|
||||
assert_response 403
|
||||
get "projects/show", :id => subproject.id
|
||||
assert_response 403
|
||||
|
||||
post "projects/unarchive", :id => 1
|
||||
assert_redirected_to "admin/projects"
|
||||
assert Project.find(1).active?
|
||||
get "projects/show", :id => 1
|
||||
assert_response :success
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,73 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
ENV["RAILS_ENV"] ||= "test"
|
||||
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
||||
require 'test_help'
|
||||
require File.expand_path(File.dirname(__FILE__) + '/helper_testcase')
|
||||
|
||||
class Test::Unit::TestCase
|
||||
# Transactional fixtures accelerate your tests by wrapping each test method
|
||||
# in a transaction that's rolled back on completion. This ensures that the
|
||||
# test database remains unchanged so your fixtures don't have to be reloaded
|
||||
# between every test method. Fewer database queries means faster tests.
|
||||
#
|
||||
# Read Mike Clark's excellent walkthrough at
|
||||
# http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
|
||||
#
|
||||
# Every Active Record database supports transactions except MyISAM tables
|
||||
# in MySQL. Turn off transactional fixtures in this case; however, if you
|
||||
# don't care one way or the other, switching from MyISAM to InnoDB tables
|
||||
# is recommended.
|
||||
self.use_transactional_fixtures = true
|
||||
|
||||
# Instantiated fixtures are slow, but give you @david where otherwise you
|
||||
# would need people(:david). If you don't want to migrate your existing
|
||||
# test cases which use the @david style and don't mind the speed hit (each
|
||||
# instantiated fixtures translates to a database query per test method),
|
||||
# then set this back to true.
|
||||
self.use_instantiated_fixtures = false
|
||||
|
||||
# Add more helper methods to be used by all tests here...
|
||||
|
||||
def log_user(login, password)
|
||||
get "/account/login"
|
||||
assert_equal nil, session[:user_id]
|
||||
assert_response :success
|
||||
assert_template "account/login"
|
||||
post "/account/login", :login => login, :password => password
|
||||
assert_redirected_to "my/page"
|
||||
assert_equal login, User.find(session[:user_id]).login
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# ActionController::TestUploadedFile bug
|
||||
# see http://dev.rubyonrails.org/ticket/4635
|
||||
class String
|
||||
def original_filename
|
||||
"testfile.txt"
|
||||
end
|
||||
|
||||
def content_type
|
||||
"text/plain"
|
||||
end
|
||||
|
||||
def read
|
||||
self.to_s
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,30 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class BoardTest < Test::Unit::TestCase
|
||||
fixtures :projects, :boards, :messages
|
||||
|
||||
def setup
|
||||
@project = Project.find(1)
|
||||
end
|
||||
|
||||
def test_create
|
||||
board = Board.new(:project => @project, :name => 'Test board', :description => 'Test board description')
|
||||
assert board.save
|
||||
board.reload
|
||||
assert_equal 'Test board', board.name
|
||||
assert_equal 'Test board description', board.description
|
||||
assert_equal @project, board.project
|
||||
assert_equal 0, board.topics_count
|
||||
assert_equal 0, board.messages_count
|
||||
assert_nil board.last_message
|
||||
# last position
|
||||
assert_equal @project.boards.size, board.position
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
board = Board.find(1)
|
||||
assert board.destroy
|
||||
# make sure that the associated messages are removed
|
||||
assert_equal 0, Message.count(:conditions => {:board_id => 1})
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,43 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class CalendarTest < Test::Unit::TestCase
|
||||
|
||||
def test_monthly
|
||||
c = Redmine::Helpers::Calendar.new(Date.today, :fr, :month)
|
||||
assert_equal [1, 7], [c.startdt.cwday, c.enddt.cwday]
|
||||
|
||||
c = Redmine::Helpers::Calendar.new('2007-07-14'.to_date, :fr, :month)
|
||||
assert_equal ['2007-06-25'.to_date, '2007-08-05'.to_date], [c.startdt, c.enddt]
|
||||
|
||||
c = Redmine::Helpers::Calendar.new(Date.today, :en, :month)
|
||||
assert_equal [7, 6], [c.startdt.cwday, c.enddt.cwday]
|
||||
end
|
||||
|
||||
def test_weekly
|
||||
c = Redmine::Helpers::Calendar.new(Date.today, :fr, :week)
|
||||
assert_equal [1, 7], [c.startdt.cwday, c.enddt.cwday]
|
||||
|
||||
c = Redmine::Helpers::Calendar.new('2007-07-14'.to_date, :fr, :week)
|
||||
assert_equal ['2007-07-09'.to_date, '2007-07-15'.to_date], [c.startdt, c.enddt]
|
||||
|
||||
c = Redmine::Helpers::Calendar.new(Date.today, :en, :week)
|
||||
assert_equal [7, 6], [c.startdt.cwday, c.enddt.cwday]
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,62 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class ChangesetTest < Test::Unit::TestCase
|
||||
fixtures :projects, :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :users, :members, :trackers
|
||||
|
||||
def setup
|
||||
end
|
||||
|
||||
def test_ref_keywords_any
|
||||
Setting.commit_fix_status_id = IssueStatus.find(:first, :conditions => ["is_closed = ?", true]).id
|
||||
Setting.commit_fix_done_ratio = '90'
|
||||
Setting.commit_ref_keywords = '*'
|
||||
Setting.commit_fix_keywords = 'fixes , closes'
|
||||
|
||||
c = Changeset.new(:repository => Project.find(1).repository,
|
||||
:committed_on => Time.now,
|
||||
:comments => 'New commit (#2). Fixes #1')
|
||||
c.scan_comment_for_issue_ids
|
||||
|
||||
assert_equal [1, 2], c.issue_ids.sort
|
||||
fixed = Issue.find(1)
|
||||
assert fixed.closed?
|
||||
assert_equal 90, fixed.done_ratio
|
||||
end
|
||||
|
||||
def test_previous
|
||||
changeset = Changeset.find_by_revision(3)
|
||||
assert_equal Changeset.find_by_revision(2), changeset.previous
|
||||
end
|
||||
|
||||
def test_previous_nil
|
||||
changeset = Changeset.find_by_revision(1)
|
||||
assert_nil changeset.previous
|
||||
end
|
||||
|
||||
def test_next
|
||||
changeset = Changeset.find_by_revision(2)
|
||||
assert_equal Changeset.find_by_revision(3), changeset.next
|
||||
end
|
||||
|
||||
def test_next_nil
|
||||
changeset = Changeset.find_by_revision(4)
|
||||
assert_nil changeset.next
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,47 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class CommentTest < Test::Unit::TestCase
|
||||
fixtures :users, :news, :comments
|
||||
|
||||
def setup
|
||||
@jsmith = User.find(2)
|
||||
@news = News.find(1)
|
||||
end
|
||||
|
||||
def test_create
|
||||
comment = Comment.new(:commented => @news, :author => @jsmith, :comments => "my comment")
|
||||
assert comment.save
|
||||
@news.reload
|
||||
assert_equal 2, @news.comments_count
|
||||
end
|
||||
|
||||
def test_validate
|
||||
comment = Comment.new(:commented => @news)
|
||||
assert !comment.save
|
||||
assert_equal 2, comment.errors.length
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
comment = Comment.find(1)
|
||||
assert comment.destroy
|
||||
@news.reload
|
||||
assert_equal 0, @news.comments_count
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,32 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class CustomFieldTest < Test::Unit::TestCase
|
||||
fixtures :custom_fields
|
||||
|
||||
def test_create
|
||||
field = UserCustomField.new(:name => 'Money money money', :field_format => 'float')
|
||||
assert field.save
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
field = CustomField.find(1)
|
||||
assert field.destroy
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,34 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class CustomValueTest < Test::Unit::TestCase
|
||||
fixtures :custom_fields
|
||||
|
||||
def test_float_field
|
||||
v = CustomValue.new(:customized => User.find(:first), :custom_field => UserCustomField.find_by_name('Money'))
|
||||
v.value = '11.2'
|
||||
assert v.save
|
||||
v.value = ''
|
||||
assert v.save
|
||||
v.value = '-6.250'
|
||||
assert v.save
|
||||
v.value = '6a'
|
||||
assert !v.save
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,106 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../../test_helper'
|
||||
|
||||
class ApplicationHelperTest < HelperTestCase
|
||||
include ApplicationHelper
|
||||
include ActionView::Helpers::TextHelper
|
||||
fixtures :projects, :repositories, :changesets, :trackers, :issue_statuses, :issues
|
||||
|
||||
def setup
|
||||
super
|
||||
end
|
||||
|
||||
def test_auto_links
|
||||
to_test = {
|
||||
'http://foo.bar' => '<a class="external" href="http://foo.bar">http://foo.bar</a>',
|
||||
'http://foo.bar/~user' => '<a class="external" href="http://foo.bar/~user">http://foo.bar/~user</a>',
|
||||
'http://foo.bar.' => '<a class="external" href="http://foo.bar">http://foo.bar</a>.',
|
||||
'http://foo.bar/foo.bar#foo.bar.' => '<a class="external" href="http://foo.bar/foo.bar#foo.bar">http://foo.bar/foo.bar#foo.bar</a>.',
|
||||
'www.foo.bar' => '<a class="external" href="http://www.foo.bar">www.foo.bar</a>',
|
||||
'http://foo.bar/page?p=1&t=z&s=' => '<a class="external" href="http://foo.bar/page?p=1&t=z&s=">http://foo.bar/page?p=1&t=z&s=</a>',
|
||||
'http://foo.bar/page#125' => '<a class="external" href="http://foo.bar/page#125">http://foo.bar/page#125</a>'
|
||||
}
|
||||
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) }
|
||||
end
|
||||
|
||||
def test_auto_mailto
|
||||
assert_equal '<p><a href="mailto:test@foo.bar" class="email">test@foo.bar</a></p>',
|
||||
textilizable('test@foo.bar')
|
||||
end
|
||||
|
||||
def test_textile_tags
|
||||
to_test = {
|
||||
# inline images
|
||||
'!http://foo.bar/image.jpg!' => '<img src="http://foo.bar/image.jpg" alt="" />',
|
||||
'floating !>http://foo.bar/image.jpg!' => 'floating <div style="float:right"><img src="http://foo.bar/image.jpg" alt="" /></div>',
|
||||
# textile links
|
||||
'This is a "link":http://foo.bar' => 'This is a <a href="http://foo.bar" class="external">link</a>',
|
||||
'This is an intern "link":/foo/bar' => 'This is an intern <a href="/foo/bar">link</a>',
|
||||
'"link (Link title)":http://foo.bar' => '<a href="http://foo.bar" title="Link title" class="external">link</a>'
|
||||
}
|
||||
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) }
|
||||
end
|
||||
|
||||
def test_redmine_links
|
||||
issue_link = link_to('#3', {:controller => 'issues', :action => 'show', :id => 3},
|
||||
:class => 'issue', :title => 'Error 281 when updating a recipe (New)')
|
||||
changeset_link = link_to('r1', {:controller => 'repositories', :action => 'revision', :id => 1, :rev => 1},
|
||||
:class => 'changeset', :title => 'My very first commit')
|
||||
|
||||
to_test = {
|
||||
'#3, #3 and #3.' => "#{issue_link}, #{issue_link} and #{issue_link}.",
|
||||
'r1' => changeset_link
|
||||
}
|
||||
@project = Project.find(1)
|
||||
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) }
|
||||
end
|
||||
|
||||
def test_macro_hello_world
|
||||
text = "{{hello_world}}"
|
||||
assert textilizable(text).match(/Hello world!/)
|
||||
end
|
||||
|
||||
def test_date_format_default
|
||||
today = Date.today
|
||||
Setting.date_format = ''
|
||||
assert_equal l_date(today), format_date(today)
|
||||
end
|
||||
|
||||
def test_date_format
|
||||
today = Date.today
|
||||
Setting.date_format = '%d %m %Y'
|
||||
assert_equal today.strftime('%d %m %Y'), format_date(today)
|
||||
end
|
||||
|
||||
def test_time_format_default
|
||||
now = Time.now
|
||||
Setting.date_format = ''
|
||||
Setting.time_format = ''
|
||||
assert_equal l_datetime(now), format_time(now)
|
||||
assert_equal l_time(now), format_time(now, false)
|
||||
end
|
||||
|
||||
def test_time_format
|
||||
now = Time.now
|
||||
Setting.date_format = '%d %m %Y'
|
||||
Setting.time_format = '%H %M'
|
||||
assert_equal now.strftime('%d %m %Y %H %M'), format_time(now)
|
||||
assert_equal now.strftime('%H %M'), format_time(now, false)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,41 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../../test_helper'
|
||||
|
||||
class ProjectsHelperTest < HelperTestCase
|
||||
include ProjectsHelper
|
||||
include ActionView::Helpers::TextHelper
|
||||
fixtures :projects, :trackers, :issue_statuses, :issues, :enumerations, :users, :issue_categories
|
||||
|
||||
def setup
|
||||
super
|
||||
end
|
||||
|
||||
if Object.const_defined?(:Magick)
|
||||
def test_gantt_image
|
||||
assert gantt_image(Issue.find(:all, :conditions => "start_date IS NOT NULL AND due_date IS NOT NULL"), Date.today, 6, 2)
|
||||
end
|
||||
|
||||
def test_gantt_image_with_days
|
||||
assert gantt_image(Issue.find(:all, :conditions => "start_date IS NOT NULL AND due_date IS NOT NULL"), Date.today, 3, 4)
|
||||
end
|
||||
else
|
||||
puts "RMagick not installed. Skipping tests !!!"
|
||||
def test_fake; assert true end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,41 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class IssueCategoryTest < Test::Unit::TestCase
|
||||
fixtures :issue_categories, :issues
|
||||
|
||||
def setup
|
||||
@category = IssueCategory.find(1)
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
issue = @category.issues.first
|
||||
@category.destroy
|
||||
# Make sure the category was nullified on the issue
|
||||
assert_nil issue.reload.category
|
||||
end
|
||||
|
||||
def test_destroy_with_reassign
|
||||
issue = @category.issues.first
|
||||
reassign_to = IssueCategory.find(2)
|
||||
@category.destroy(reassign_to)
|
||||
# Make sure the issue was reassigned
|
||||
assert_equal reassign_to, issue.reload.category
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,49 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class IssueStatusTest < Test::Unit::TestCase
|
||||
fixtures :issue_statuses
|
||||
|
||||
def test_create
|
||||
status = IssueStatus.new :name => "Assigned"
|
||||
assert !status.save
|
||||
# status name uniqueness
|
||||
assert_equal 1, status.errors.count
|
||||
|
||||
status.name = "Test Status"
|
||||
assert status.save
|
||||
assert !status.is_default
|
||||
end
|
||||
|
||||
def test_default
|
||||
status = IssueStatus.default
|
||||
assert_kind_of IssueStatus, status
|
||||
end
|
||||
|
||||
def test_change_default
|
||||
status = IssueStatus.find(2)
|
||||
assert !status.is_default
|
||||
status.is_default = true
|
||||
assert status.save
|
||||
status.reload
|
||||
|
||||
assert_equal status, IssueStatus.default
|
||||
assert !IssueStatus.find(1).is_default
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,73 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class IssueTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :members, :trackers, :projects_trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :custom_fields, :custom_values, :time_entries
|
||||
|
||||
def test_category_based_assignment
|
||||
issue = Issue.create(:project_id => 1, :tracker_id => 1, :author_id => 3, :status_id => 1, :priority => Enumeration.get_values('IPRI').first, :subject => 'Assignment test', :description => 'Assignment test', :category_id => 1)
|
||||
assert_equal IssueCategory.find(1).assigned_to, issue.assigned_to
|
||||
end
|
||||
|
||||
def test_copy
|
||||
issue = Issue.new.copy_from(1)
|
||||
assert issue.save
|
||||
issue.reload
|
||||
orig = Issue.find(1)
|
||||
assert_equal orig.subject, issue.subject
|
||||
assert_equal orig.tracker, issue.tracker
|
||||
assert_equal orig.custom_values.first.value, issue.custom_values.first.value
|
||||
end
|
||||
|
||||
def test_close_duplicates
|
||||
# Create 3 issues
|
||||
issue1 = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 1, :status_id => 1, :priority => Enumeration.get_values('IPRI').first, :subject => 'Duplicates test', :description => 'Duplicates test')
|
||||
assert issue1.save
|
||||
issue2 = issue1.clone
|
||||
assert issue2.save
|
||||
issue3 = issue1.clone
|
||||
assert issue3.save
|
||||
|
||||
# 2 is a dupe of 1
|
||||
IssueRelation.create(:issue_from => issue1, :issue_to => issue2, :relation_type => IssueRelation::TYPE_DUPLICATES)
|
||||
# And 3 is a dupe of 2
|
||||
IssueRelation.create(:issue_from => issue2, :issue_to => issue3, :relation_type => IssueRelation::TYPE_DUPLICATES)
|
||||
|
||||
assert issue1.reload.duplicates.include?(issue2)
|
||||
|
||||
# Closing issue 1
|
||||
issue1.init_journal(User.find(:first), "Closing issue1")
|
||||
issue1.status = IssueStatus.find :first, :conditions => {:is_closed => true}
|
||||
assert issue1.save
|
||||
# 2 and 3 should be also closed
|
||||
assert issue2.reload.closed?
|
||||
assert issue3.reload.closed?
|
||||
end
|
||||
|
||||
def test_move_to_another_project
|
||||
issue = Issue.find(1)
|
||||
assert issue.move_to(Project.find(2))
|
||||
issue.reload
|
||||
assert_equal 2, issue.project_id
|
||||
# Category removed
|
||||
assert_nil issue.category
|
||||
# Make sure time entries were move to the target project
|
||||
assert_equal 2, issue.time_entries.first.project_id
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,39 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class JournalTest < Test::Unit::TestCase
|
||||
fixtures :issues, :issue_statuses, :journals, :journal_details
|
||||
|
||||
def setup
|
||||
@journal = Journal.find 1
|
||||
end
|
||||
|
||||
def test_journalized_is_an_issue
|
||||
issue = @journal.issue
|
||||
assert_kind_of Issue, issue
|
||||
assert_equal 1, issue.id
|
||||
end
|
||||
|
||||
def test_new_status
|
||||
status = @journal.new_status
|
||||
assert_not_nil status
|
||||
assert_kind_of IssueStatus, status
|
||||
assert_equal 2, status.id
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,57 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class MailHandlerTest < Test::Unit::TestCase
|
||||
fixtures :users, :projects, :enabled_modules, :roles, :members, :issues, :trackers, :enumerations
|
||||
|
||||
FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures'
|
||||
CHARSET = "utf-8"
|
||||
|
||||
include ActionMailer::Quoting
|
||||
|
||||
def setup
|
||||
ActionMailer::Base.delivery_method = :test
|
||||
ActionMailer::Base.perform_deliveries = true
|
||||
ActionMailer::Base.deliveries = []
|
||||
|
||||
@expected = TMail::Mail.new
|
||||
@expected.set_content_type "text", "plain", { "charset" => CHARSET }
|
||||
@expected.mime_version = '1.0'
|
||||
end
|
||||
|
||||
def test_add_note_to_issue
|
||||
raw = read_fixture("add_note_to_issue.txt").join
|
||||
MailHandler.receive(raw)
|
||||
|
||||
issue = Issue.find(2)
|
||||
journal = issue.journals.find(:first, :order => "created_on DESC")
|
||||
assert journal
|
||||
assert_equal User.find_by_mail("jsmith@somenet.foo"), journal.user
|
||||
assert_equal "Note added by mail", journal.notes
|
||||
end
|
||||
|
||||
private
|
||||
def read_fixture(action)
|
||||
IO.readlines("#{FIXTURES_PATH}/mail_handler/#{action}")
|
||||
end
|
||||
|
||||
def encode(subject)
|
||||
quoted_printable(subject, CHARSET)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,100 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class MailerTest < Test::Unit::TestCase
|
||||
fixtures :projects, :issues, :users, :members, :documents, :attachments, :news, :tokens, :journals, :journal_details, :trackers, :issue_statuses, :enumerations
|
||||
|
||||
# test mailer methods for each language
|
||||
def test_issue_add
|
||||
issue = Issue.find(1)
|
||||
GLoc.valid_languages.each do |lang|
|
||||
Setting.default_language = lang.to_s
|
||||
assert Mailer.deliver_issue_add(issue)
|
||||
end
|
||||
end
|
||||
|
||||
def test_issue_edit
|
||||
journal = Journal.find(1)
|
||||
GLoc.valid_languages.each do |lang|
|
||||
Setting.default_language = lang.to_s
|
||||
assert Mailer.deliver_issue_edit(journal)
|
||||
end
|
||||
end
|
||||
|
||||
def test_document_added
|
||||
document = Document.find(1)
|
||||
GLoc.valid_languages.each do |lang|
|
||||
Setting.default_language = lang.to_s
|
||||
assert Mailer.deliver_document_added(document)
|
||||
end
|
||||
end
|
||||
|
||||
def test_attachments_added
|
||||
attachements = [ Attachment.find_by_container_type('Document') ]
|
||||
GLoc.valid_languages.each do |lang|
|
||||
Setting.default_language = lang.to_s
|
||||
assert Mailer.deliver_attachments_added(attachements)
|
||||
end
|
||||
end
|
||||
|
||||
def test_news_added
|
||||
news = News.find(:first)
|
||||
GLoc.valid_languages.each do |lang|
|
||||
Setting.default_language = lang.to_s
|
||||
assert Mailer.deliver_news_added(news)
|
||||
end
|
||||
end
|
||||
|
||||
def test_message_posted
|
||||
message = Message.find(:first)
|
||||
recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author}
|
||||
recipients = recipients.compact.uniq
|
||||
GLoc.valid_languages.each do |lang|
|
||||
Setting.default_language = lang.to_s
|
||||
assert Mailer.deliver_message_posted(message, recipients)
|
||||
end
|
||||
end
|
||||
|
||||
def test_account_information
|
||||
user = User.find(:first)
|
||||
GLoc.valid_languages.each do |lang|
|
||||
user.update_attribute :language, lang.to_s
|
||||
user.reload
|
||||
assert Mailer.deliver_account_information(user, 'pAsswORd')
|
||||
end
|
||||
end
|
||||
|
||||
def test_lost_password
|
||||
token = Token.find(2)
|
||||
GLoc.valid_languages.each do |lang|
|
||||
token.user.update_attribute :language, lang.to_s
|
||||
token.reload
|
||||
assert Mailer.deliver_lost_password(token)
|
||||
end
|
||||
end
|
||||
|
||||
def test_register
|
||||
token = Token.find(1)
|
||||
GLoc.valid_languages.each do |lang|
|
||||
token.user.update_attribute :language, lang.to_s
|
||||
token.reload
|
||||
assert Mailer.deliver_register(token)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,51 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class MemberTest < Test::Unit::TestCase
|
||||
fixtures :users, :projects, :roles, :members
|
||||
|
||||
def setup
|
||||
@jsmith = Member.find(1)
|
||||
end
|
||||
|
||||
def test_create
|
||||
member = Member.new(:project_id => 1, :user_id => 4, :role_id => 1)
|
||||
assert member.save
|
||||
end
|
||||
|
||||
def test_update
|
||||
assert_equal "eCookbook", @jsmith.project.name
|
||||
assert_equal "Manager", @jsmith.role.name
|
||||
assert_equal "jsmith", @jsmith.user.login
|
||||
|
||||
@jsmith.role = Role.find(2)
|
||||
assert @jsmith.save
|
||||
end
|
||||
|
||||
def test_validate
|
||||
member = Member.new(:project_id => 1, :user_id => 2, :role_id =>2)
|
||||
# same use can't have more than one role for a project
|
||||
assert !member.save
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
@jsmith.destroy
|
||||
assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,70 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class MessageTest < Test::Unit::TestCase
|
||||
fixtures :projects, :boards, :messages
|
||||
|
||||
def setup
|
||||
@board = Board.find(1)
|
||||
@user = User.find(1)
|
||||
end
|
||||
|
||||
def test_create
|
||||
topics_count = @board.topics_count
|
||||
messages_count = @board.messages_count
|
||||
|
||||
message = Message.new(:board => @board, :subject => 'Test message', :content => 'Test message content', :author => @user)
|
||||
assert message.save
|
||||
@board.reload
|
||||
# topics count incremented
|
||||
assert_equal topics_count+1, @board[:topics_count]
|
||||
# messages count incremented
|
||||
assert_equal messages_count+1, @board[:messages_count]
|
||||
assert_equal message, @board.last_message
|
||||
end
|
||||
|
||||
def test_reply
|
||||
topics_count = @board.topics_count
|
||||
messages_count = @board.messages_count
|
||||
@message = Message.find(1)
|
||||
replies_count = @message.replies_count
|
||||
|
||||
reply = Message.new(:board => @board, :subject => 'Test reply', :content => 'Test reply content', :parent => @message, :author => @user)
|
||||
assert reply.save
|
||||
@board.reload
|
||||
# same topics count
|
||||
assert_equal topics_count, @board[:topics_count]
|
||||
# messages count incremented
|
||||
assert_equal messages_count+1, @board[:messages_count]
|
||||
assert_equal reply, @board.last_message
|
||||
@message.reload
|
||||
# replies count incremented
|
||||
assert_equal replies_count+1, @message[:replies_count]
|
||||
assert_equal reply, @message.last_reply
|
||||
end
|
||||
|
||||
def test_destroy_topic
|
||||
message = Message.find(1)
|
||||
board = message.board
|
||||
topics_count, messages_count = board.topics_count, board.messages_count
|
||||
assert message.destroy
|
||||
board.reload
|
||||
|
||||
# Replies deleted
|
||||
assert Message.find_all_by_parent_id(1).empty?
|
||||
# Checks counters
|
||||
assert_equal topics_count - 1, board.topics_count
|
||||
assert_equal messages_count - 3, board.messages_count
|
||||
end
|
||||
|
||||
def test_destroy_reply
|
||||
message = Message.find(5)
|
||||
board = message.board
|
||||
topics_count, messages_count = board.topics_count, board.messages_count
|
||||
assert message.destroy
|
||||
board.reload
|
||||
|
||||
# Checks counters
|
||||
assert_equal topics_count, board.topics_count
|
||||
assert_equal messages_count - 1, board.messages_count
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,124 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class ProjectTest < Test::Unit::TestCase
|
||||
fixtures :projects, :issues, :issue_statuses, :journals, :journal_details, :users, :members, :roles
|
||||
|
||||
def setup
|
||||
@ecookbook = Project.find(1)
|
||||
@ecookbook_sub1 = Project.find(3)
|
||||
end
|
||||
|
||||
def test_truth
|
||||
assert_kind_of Project, @ecookbook
|
||||
assert_equal "eCookbook", @ecookbook.name
|
||||
end
|
||||
|
||||
def test_update
|
||||
assert_equal "eCookbook", @ecookbook.name
|
||||
@ecookbook.name = "eCook"
|
||||
assert @ecookbook.save, @ecookbook.errors.full_messages.join("; ")
|
||||
@ecookbook.reload
|
||||
assert_equal "eCook", @ecookbook.name
|
||||
end
|
||||
|
||||
def test_validate
|
||||
@ecookbook.name = ""
|
||||
assert !@ecookbook.save
|
||||
assert_equal 1, @ecookbook.errors.count
|
||||
assert_equal "activerecord_error_blank", @ecookbook.errors.on(:name)
|
||||
end
|
||||
|
||||
def test_public_projects
|
||||
public_projects = Project.find(:all, :conditions => ["is_public=?", true])
|
||||
assert_equal 3, public_projects.length
|
||||
assert_equal true, public_projects[0].is_public?
|
||||
end
|
||||
|
||||
def test_archive
|
||||
user = @ecookbook.members.first.user
|
||||
@ecookbook.archive
|
||||
@ecookbook.reload
|
||||
|
||||
assert !@ecookbook.active?
|
||||
assert !user.projects.include?(@ecookbook)
|
||||
# Subproject are also archived
|
||||
assert !@ecookbook.children.empty?
|
||||
assert @ecookbook.active_children.empty?
|
||||
end
|
||||
|
||||
def test_unarchive
|
||||
user = @ecookbook.members.first.user
|
||||
@ecookbook.archive
|
||||
# A subproject of an archived project can not be unarchived
|
||||
assert !@ecookbook_sub1.unarchive
|
||||
|
||||
# Unarchive project
|
||||
assert @ecookbook.unarchive
|
||||
@ecookbook.reload
|
||||
assert @ecookbook.active?
|
||||
assert user.projects.include?(@ecookbook)
|
||||
# Subproject can now be unarchived
|
||||
@ecookbook_sub1.reload
|
||||
assert @ecookbook_sub1.unarchive
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
# 2 active members
|
||||
assert_equal 2, @ecookbook.members.size
|
||||
# and 1 is locked
|
||||
assert_equal 3, Member.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).size
|
||||
|
||||
@ecookbook.destroy
|
||||
# make sure that the project non longer exists
|
||||
assert_raise(ActiveRecord::RecordNotFound) { Project.find(@ecookbook.id) }
|
||||
# make sure all members have been removed
|
||||
assert_equal 0, Member.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).size
|
||||
end
|
||||
|
||||
def test_subproject_ok
|
||||
sub = Project.find(2)
|
||||
sub.parent = @ecookbook
|
||||
assert sub.save
|
||||
assert_equal @ecookbook.id, sub.parent.id
|
||||
@ecookbook.reload
|
||||
assert_equal 3, @ecookbook.children.size
|
||||
end
|
||||
|
||||
def test_subproject_invalid
|
||||
sub = Project.find(2)
|
||||
sub.parent = @ecookbook_sub1
|
||||
assert !sub.save
|
||||
end
|
||||
|
||||
def test_subproject_invalid_2
|
||||
sub = @ecookbook
|
||||
sub.parent = Project.find(2)
|
||||
assert !sub.save
|
||||
end
|
||||
|
||||
def test_issues_status_changes
|
||||
journals = @ecookbook.issues_status_changes 3.days.ago.to_date, Date.today
|
||||
assert_equal 1, journals.size
|
||||
assert_kind_of Journal, journals.first
|
||||
|
||||
journals = @ecookbook.issues_status_changes 30.days.ago.to_date, 10.days.ago.to_date
|
||||
assert_equal 0, journals.size
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,44 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class QueryTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :custom_fields, :custom_values, :queries
|
||||
|
||||
def test_query_with_multiple_custom_fields
|
||||
query = Query.find(1)
|
||||
assert query.valid?
|
||||
assert query.statement.include?("custom_values.value IN ('MySQL')")
|
||||
issues = Issue.find :all,:include => [ :assigned_to, :status, :tracker, :project, :priority ], :conditions => query.statement
|
||||
assert_equal 1, issues.length
|
||||
assert_equal Issue.find(3), issues.first
|
||||
end
|
||||
|
||||
def test_default_columns
|
||||
q = Query.new
|
||||
assert !q.columns.empty?
|
||||
end
|
||||
|
||||
def test_set_column_names
|
||||
q = Query.new
|
||||
q.column_names = ['tracker', :subject, '', 'unknonw_column']
|
||||
assert_equal [:tracker, :subject], q.columns.collect {|c| c.name}
|
||||
c = q.columns.first
|
||||
assert q.has_column?(c)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,88 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class RepositoryBazaarTest < Test::Unit::TestCase
|
||||
fixtures :projects
|
||||
|
||||
# No '..' in the repository path
|
||||
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/bazaar_repository'
|
||||
REPOSITORY_PATH.gsub!(/\/+/, '/')
|
||||
|
||||
def setup
|
||||
@project = Project.find(1)
|
||||
assert @repository = Repository::Bazaar.create(:project => @project, :url => "file:///#{REPOSITORY_PATH}")
|
||||
end
|
||||
|
||||
if File.directory?(REPOSITORY_PATH)
|
||||
def test_fetch_changesets_from_scratch
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
|
||||
assert_equal 4, @repository.changesets.count
|
||||
assert_equal 9, @repository.changes.count
|
||||
assert_equal 'Initial import', @repository.changesets.find_by_revision(1).comments
|
||||
end
|
||||
|
||||
def test_fetch_changesets_incremental
|
||||
@repository.fetch_changesets
|
||||
# Remove changesets with revision > 5
|
||||
@repository.changesets.find(:all, :conditions => 'revision > 2').each(&:destroy)
|
||||
@repository.reload
|
||||
assert_equal 2, @repository.changesets.count
|
||||
|
||||
@repository.fetch_changesets
|
||||
assert_equal 4, @repository.changesets.count
|
||||
end
|
||||
|
||||
def test_entries
|
||||
entries = @repository.entries
|
||||
assert_equal 2, entries.size
|
||||
|
||||
assert_equal 'dir', entries[0].kind
|
||||
assert_equal 'directory', entries[0].name
|
||||
|
||||
assert_equal 'file', entries[1].kind
|
||||
assert_equal 'doc-mkdir.txt', entries[1].name
|
||||
end
|
||||
|
||||
def test_entries_in_subdirectory
|
||||
entries = @repository.entries('directory')
|
||||
assert_equal 3, entries.size
|
||||
|
||||
assert_equal 'file', entries.last.kind
|
||||
assert_equal 'edit.png', entries.last.name
|
||||
end
|
||||
|
||||
def test_cat
|
||||
cat = @repository.scm.cat('directory/document.txt')
|
||||
assert cat =~ /Write the contents of a file as of a given revision to standard output/
|
||||
end
|
||||
|
||||
def test_annotate
|
||||
annotate = @repository.scm.annotate('doc-mkdir.txt')
|
||||
assert_equal 17, annotate.lines.size
|
||||
assert_equal 1, annotate.revisions[0].identifier
|
||||
assert_equal 'jsmith@', annotate.revisions[0].author
|
||||
assert_equal 'mkdir', annotate.lines[0]
|
||||
end
|
||||
else
|
||||
puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!"
|
||||
def test_fake; assert true end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,60 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
require 'pp'
|
||||
class RepositoryCvsTest < Test::Unit::TestCase
|
||||
fixtures :projects
|
||||
|
||||
# No '..' in the repository path
|
||||
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository'
|
||||
REPOSITORY_PATH.gsub!(/\//, "\\") if RUBY_PLATFORM =~ /mswin/
|
||||
# CVS module
|
||||
MODULE_NAME = 'test'
|
||||
|
||||
def setup
|
||||
@project = Project.find(1)
|
||||
assert @repository = Repository::Cvs.create(:project => @project,
|
||||
:root_url => REPOSITORY_PATH,
|
||||
:url => MODULE_NAME)
|
||||
end
|
||||
|
||||
if File.directory?(REPOSITORY_PATH)
|
||||
def test_fetch_changesets_from_scratch
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
|
||||
assert_equal 5, @repository.changesets.count
|
||||
assert_equal 14, @repository.changes.count
|
||||
assert_equal 'Two files changed', @repository.changesets.find_by_revision(3).comments
|
||||
end
|
||||
|
||||
def test_fetch_changesets_incremental
|
||||
@repository.fetch_changesets
|
||||
# Remove changesets with revision > 2
|
||||
@repository.changesets.find(:all, :conditions => 'revision > 2').each(&:destroy)
|
||||
@repository.reload
|
||||
assert_equal 2, @repository.changesets.count
|
||||
|
||||
@repository.fetch_changesets
|
||||
assert_equal 5, @repository.changesets.count
|
||||
end
|
||||
else
|
||||
puts "CVS test repository NOT FOUND. Skipping unit tests !!!"
|
||||
def test_fake; assert true end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,55 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class RepositoryMercurialTest < Test::Unit::TestCase
|
||||
fixtures :projects
|
||||
|
||||
# No '..' in the repository path
|
||||
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository'
|
||||
|
||||
def setup
|
||||
@project = Project.find(1)
|
||||
assert @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH)
|
||||
end
|
||||
|
||||
if File.directory?(REPOSITORY_PATH)
|
||||
def test_fetch_changesets_from_scratch
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
|
||||
assert_equal 6, @repository.changesets.count
|
||||
assert_equal 11, @repository.changes.count
|
||||
assert_equal "Initial import.\nThe repository contains 3 files.", @repository.changesets.find_by_revision(0).comments
|
||||
end
|
||||
|
||||
def test_fetch_changesets_incremental
|
||||
@repository.fetch_changesets
|
||||
# Remove changesets with revision > 2
|
||||
@repository.changesets.find(:all, :conditions => 'revision > 2').each(&:destroy)
|
||||
@repository.reload
|
||||
assert_equal 3, @repository.changesets.count
|
||||
|
||||
@repository.fetch_changesets
|
||||
assert_equal 6, @repository.changesets.count
|
||||
end
|
||||
else
|
||||
puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
|
||||
def test_fake; assert true end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,55 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class RepositorySubversionTest < Test::Unit::TestCase
|
||||
fixtures :projects
|
||||
|
||||
# No '..' in the repository path for svn
|
||||
REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/subversion_repository'
|
||||
|
||||
def setup
|
||||
@project = Project.find(1)
|
||||
assert @repository = Repository::Subversion.create(:project => @project, :url => "file:///#{REPOSITORY_PATH}")
|
||||
end
|
||||
|
||||
if File.directory?(REPOSITORY_PATH)
|
||||
def test_fetch_changesets_from_scratch
|
||||
@repository.fetch_changesets
|
||||
@repository.reload
|
||||
|
||||
assert_equal 8, @repository.changesets.count
|
||||
assert_equal 16, @repository.changes.count
|
||||
assert_equal 'Initial import.', @repository.changesets.find_by_revision(1).comments
|
||||
end
|
||||
|
||||
def test_fetch_changesets_incremental
|
||||
@repository.fetch_changesets
|
||||
# Remove changesets with revision > 5
|
||||
@repository.changesets.find(:all, :conditions => 'revision > 5').each(&:destroy)
|
||||
@repository.reload
|
||||
assert_equal 5, @repository.changesets.count
|
||||
|
||||
@repository.fetch_changesets
|
||||
assert_equal 8, @repository.changesets.count
|
||||
end
|
||||
else
|
||||
puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
|
||||
def test_fake; assert true end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,76 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class RepositoryTest < Test::Unit::TestCase
|
||||
fixtures :projects, :repositories, :issues, :issue_statuses, :changesets, :changes
|
||||
|
||||
def setup
|
||||
@repository = Project.find(1).repository
|
||||
end
|
||||
|
||||
def test_create
|
||||
repository = Repository::Subversion.new(:project => Project.find(3))
|
||||
assert !repository.save
|
||||
|
||||
repository.url = "svn://localhost"
|
||||
assert repository.save
|
||||
repository.reload
|
||||
|
||||
project = Project.find(3)
|
||||
assert_equal repository, project.repository
|
||||
end
|
||||
|
||||
def test_scan_changesets_for_issue_ids
|
||||
# choosing a status to apply to fix issues
|
||||
Setting.commit_fix_status_id = IssueStatus.find(:first, :conditions => ["is_closed = ?", true]).id
|
||||
Setting.commit_fix_done_ratio = "90"
|
||||
Setting.commit_ref_keywords = 'refs , references, IssueID'
|
||||
Setting.commit_fix_keywords = 'fixes , closes'
|
||||
|
||||
# make sure issue 1 is not already closed
|
||||
assert !Issue.find(1).status.is_closed?
|
||||
|
||||
Repository.scan_changesets_for_issue_ids
|
||||
assert_equal [101, 102], Issue.find(3).changeset_ids
|
||||
|
||||
# fixed issues
|
||||
fixed_issue = Issue.find(1)
|
||||
assert fixed_issue.status.is_closed?
|
||||
assert_equal 90, fixed_issue.done_ratio
|
||||
assert_equal [101], fixed_issue.changeset_ids
|
||||
|
||||
# ignoring commits referencing an issue of another project
|
||||
assert_equal [], Issue.find(4).changesets
|
||||
end
|
||||
|
||||
def test_for_changeset_comments_strip
|
||||
repository = Repository::Mercurial.create( :project => Project.find( 4 ), :url => '/foo/bar/baz' )
|
||||
comment = <<-COMMENT
|
||||
This is a loooooooooooooooooooooooooooong comment
|
||||
|
||||
|
||||
COMMENT
|
||||
changeset = Changeset.new(
|
||||
:comments => comment, :commit_date => Time.now, :revision => 0, :scmid => 'f39b7922fb3c',
|
||||
:committer => 'foo <foo@example.com>', :committed_on => Time.now, :repository => repository )
|
||||
assert( changeset.save )
|
||||
assert_not_equal( comment, changeset.comments )
|
||||
assert_equal( 'This is a loooooooooooooooooooooooooooong comment', changeset.comments )
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,45 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class SettingTest < Test::Unit::TestCase
|
||||
|
||||
def test_read_default
|
||||
assert_equal "Redmine", Setting.app_title
|
||||
assert Setting.self_registration?
|
||||
assert !Setting.login_required?
|
||||
end
|
||||
|
||||
def test_update
|
||||
Setting.app_title = "My title"
|
||||
assert_equal "My title", Setting.app_title
|
||||
# make sure db has been updated (INSERT)
|
||||
assert_equal "My title", Setting.find_by_name('app_title').value
|
||||
|
||||
Setting.app_title = "My other title"
|
||||
assert_equal "My other title", Setting.app_title
|
||||
# make sure db has been updated (UPDATE)
|
||||
assert_equal "My other title", Setting.find_by_name('app_title').value
|
||||
end
|
||||
|
||||
def test_serialized_setting
|
||||
Setting.notified_events = ['issue_added', 'issue_updated', 'news_added']
|
||||
assert_equal ['issue_added', 'issue_updated', 'news_added'], Setting.notified_events
|
||||
assert_equal ['issue_added', 'issue_updated', 'news_added'], Setting.find_by_name('notified_events').value
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,29 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class TokenTest < Test::Unit::TestCase
|
||||
fixtures :tokens
|
||||
|
||||
def test_create
|
||||
token = Token.new
|
||||
token.save
|
||||
assert_equal 40, token.value.length
|
||||
assert !token.expired?
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,43 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class UserPreferenceTest < Test::Unit::TestCase
|
||||
fixtures :users, :user_preferences
|
||||
|
||||
def test_create
|
||||
user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")
|
||||
user.login = "newuser"
|
||||
user.password, user.password_confirmation = "password", "password"
|
||||
assert user.save
|
||||
|
||||
assert_kind_of UserPreference, user.pref
|
||||
assert_kind_of Hash, user.pref.others
|
||||
assert user.pref.save
|
||||
end
|
||||
|
||||
def test_update
|
||||
user = User.find(1)
|
||||
assert_equal true, user.pref.hide_mail
|
||||
user.pref['preftest'] = 'value'
|
||||
assert user.pref.save
|
||||
|
||||
user.reload
|
||||
assert_equal 'value', user.pref['preftest']
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,139 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class UserTest < Test::Unit::TestCase
|
||||
fixtures :users, :members, :projects
|
||||
|
||||
def setup
|
||||
@admin = User.find(1)
|
||||
@jsmith = User.find(2)
|
||||
@dlopper = User.find(3)
|
||||
end
|
||||
|
||||
def test_truth
|
||||
assert_kind_of User, @jsmith
|
||||
end
|
||||
|
||||
def test_create
|
||||
user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")
|
||||
|
||||
user.login = "jsmith"
|
||||
user.password, user.password_confirmation = "password", "password"
|
||||
# login uniqueness
|
||||
assert !user.save
|
||||
assert_equal 1, user.errors.count
|
||||
|
||||
user.login = "newuser"
|
||||
user.password, user.password_confirmation = "passwd", "password"
|
||||
# password confirmation
|
||||
assert !user.save
|
||||
assert_equal 1, user.errors.count
|
||||
|
||||
user.password, user.password_confirmation = "password", "password"
|
||||
assert user.save
|
||||
end
|
||||
|
||||
def test_update
|
||||
assert_equal "admin", @admin.login
|
||||
@admin.login = "john"
|
||||
assert @admin.save, @admin.errors.full_messages.join("; ")
|
||||
@admin.reload
|
||||
assert_equal "john", @admin.login
|
||||
end
|
||||
|
||||
def test_validate
|
||||
@admin.login = ""
|
||||
assert !@admin.save
|
||||
assert_equal 1, @admin.errors.count
|
||||
end
|
||||
|
||||
def test_password
|
||||
user = User.try_to_login("admin", "admin")
|
||||
assert_kind_of User, user
|
||||
assert_equal "admin", user.login
|
||||
user.password = "hello"
|
||||
assert user.save
|
||||
|
||||
user = User.try_to_login("admin", "hello")
|
||||
assert_kind_of User, user
|
||||
assert_equal "admin", user.login
|
||||
assert_equal User.hash_password("hello"), user.hashed_password
|
||||
end
|
||||
|
||||
def test_lock
|
||||
user = User.try_to_login("jsmith", "jsmith")
|
||||
assert_equal @jsmith, user
|
||||
|
||||
@jsmith.status = User::STATUS_LOCKED
|
||||
assert @jsmith.save
|
||||
|
||||
user = User.try_to_login("jsmith", "jsmith")
|
||||
assert_equal nil, user
|
||||
end
|
||||
|
||||
def test_create_anonymous
|
||||
AnonymousUser.delete_all
|
||||
anon = User.anonymous
|
||||
assert !anon.new_record?
|
||||
assert_kind_of AnonymousUser, anon
|
||||
end
|
||||
|
||||
def test_rss_key
|
||||
assert_nil @jsmith.rss_token
|
||||
key = @jsmith.rss_key
|
||||
assert_equal 40, key.length
|
||||
|
||||
@jsmith.reload
|
||||
assert_equal key, @jsmith.rss_key
|
||||
end
|
||||
|
||||
def test_role_for_project
|
||||
# user with a role
|
||||
role = @jsmith.role_for_project(Project.find(1))
|
||||
assert_kind_of Role, role
|
||||
assert_equal "Manager", role.name
|
||||
|
||||
# user with no role
|
||||
assert !@dlopper.role_for_project(Project.find(2)).member?
|
||||
end
|
||||
|
||||
def test_mail_notification_all
|
||||
@jsmith.mail_notification = true
|
||||
@jsmith.notified_project_ids = []
|
||||
@jsmith.save
|
||||
@jsmith.reload
|
||||
assert @jsmith.projects.first.recipients.include?(@jsmith.mail)
|
||||
end
|
||||
|
||||
def test_mail_notification_selected
|
||||
@jsmith.mail_notification = false
|
||||
@jsmith.notified_project_ids = [1]
|
||||
@jsmith.save
|
||||
@jsmith.reload
|
||||
assert Project.find(1).recipients.include?(@jsmith.mail)
|
||||
end
|
||||
|
||||
def test_mail_notification_none
|
||||
@jsmith.mail_notification = false
|
||||
@jsmith.notified_project_ids = []
|
||||
@jsmith.save
|
||||
@jsmith.reload
|
||||
assert !@jsmith.projects.first.recipients.include?(@jsmith.mail)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,69 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class WatcherTest < Test::Unit::TestCase
|
||||
fixtures :issues, :users
|
||||
|
||||
def setup
|
||||
@user = User.find(1)
|
||||
@issue = Issue.find(1)
|
||||
end
|
||||
|
||||
def test_watch
|
||||
assert @issue.add_watcher(@user)
|
||||
@issue.reload
|
||||
assert @issue.watchers.detect { |w| w.user == @user }
|
||||
end
|
||||
|
||||
def test_cant_watch_twice
|
||||
assert @issue.add_watcher(@user)
|
||||
assert !@issue.add_watcher(@user)
|
||||
end
|
||||
|
||||
def test_watched_by
|
||||
assert @issue.add_watcher(@user)
|
||||
@issue.reload
|
||||
assert @issue.watched_by?(@user)
|
||||
assert Issue.watched_by(@user).include?(@issue)
|
||||
end
|
||||
|
||||
def test_recipients
|
||||
@issue.watchers.delete_all
|
||||
@issue.reload
|
||||
|
||||
assert @issue.watcher_recipients.empty?
|
||||
assert @issue.add_watcher(@user)
|
||||
|
||||
@user.mail_notification = true
|
||||
@user.save
|
||||
@issue.reload
|
||||
assert @issue.watcher_recipients.include?(@user.mail)
|
||||
|
||||
@user.mail_notification = false
|
||||
@user.save
|
||||
@issue.reload
|
||||
assert @issue.watcher_recipients.include?(@user.mail)
|
||||
end
|
||||
|
||||
def test_unwatch
|
||||
assert @issue.add_watcher(@user)
|
||||
@issue.reload
|
||||
assert_equal 1, @issue.remove_watcher(@user)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,60 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class WikiContentTest < Test::Unit::TestCase
|
||||
fixtures :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions, :users
|
||||
|
||||
def setup
|
||||
@wiki = Wiki.find(1)
|
||||
@page = @wiki.pages.first
|
||||
end
|
||||
|
||||
def test_create
|
||||
page = WikiPage.new(:wiki => @wiki, :title => "Page")
|
||||
page.content = WikiContent.new(:text => "Content text", :author => User.find(1), :comments => "My comment")
|
||||
assert page.save
|
||||
page.reload
|
||||
|
||||
content = page.content
|
||||
assert_kind_of WikiContent, content
|
||||
assert_equal 1, content.version
|
||||
assert_equal 1, content.versions.length
|
||||
assert_equal "Content text", content.text
|
||||
assert_equal "My comment", content.comments
|
||||
assert_equal User.find(1), content.author
|
||||
assert_equal content.text, content.versions.last.text
|
||||
end
|
||||
|
||||
def test_update
|
||||
content = @page.content
|
||||
version_count = content.version
|
||||
content.text = "My new content"
|
||||
assert content.save
|
||||
content.reload
|
||||
assert_equal version_count+1, content.version
|
||||
assert_equal version_count+1, content.versions.length
|
||||
end
|
||||
|
||||
def test_fetch_history
|
||||
assert !@page.content.versions.empty?
|
||||
@page.content.versions.each do |version|
|
||||
assert_kind_of String, version.text
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,59 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class WikiPageTest < Test::Unit::TestCase
|
||||
fixtures :projects, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
|
||||
|
||||
def setup
|
||||
@wiki = Wiki.find(1)
|
||||
@page = @wiki.pages.first
|
||||
end
|
||||
|
||||
def test_create
|
||||
page = WikiPage.new(:wiki => @wiki)
|
||||
assert !page.save
|
||||
assert_equal 1, page.errors.count
|
||||
|
||||
page.title = "Page"
|
||||
assert page.save
|
||||
page.reload
|
||||
|
||||
@wiki.reload
|
||||
assert @wiki.pages.include?(page)
|
||||
end
|
||||
|
||||
def test_find_or_new_page
|
||||
page = @wiki.find_or_new_page("CookBook documentation")
|
||||
assert_kind_of WikiPage, page
|
||||
assert !page.new_record?
|
||||
|
||||
page = @wiki.find_or_new_page("Non existing page")
|
||||
assert_kind_of WikiPage, page
|
||||
assert page.new_record?
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
page = WikiPage.find(1)
|
||||
page.destroy
|
||||
assert_nil WikiPage.find_by_id(1)
|
||||
# make sure that page content and its history are deleted
|
||||
assert WikiContent.find_all_by_page_id(1).empty?
|
||||
assert WikiContent.versioned_class.find_all_by_page_id(1).empty?
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,73 @@
|
||||
# redMine - project management software
|
||||
# Copyright (C) 2006-2007 Jean-Philippe Lang
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class WikiRedirectTest < Test::Unit::TestCase
|
||||
fixtures :projects, :wikis
|
||||
|
||||
def setup
|
||||
@wiki = Wiki.find(1)
|
||||
@original = WikiPage.create(:wiki => @wiki, :title => 'Original title')
|
||||
end
|
||||
|
||||
def test_create_redirect
|
||||
@original.title = 'New title'
|
||||
assert @original.save
|
||||
@original.reload
|
||||
|
||||
assert_equal 'New_title', @original.title
|
||||
assert @wiki.redirects.find_by_title('Original_title')
|
||||
assert @wiki.find_page('Original title')
|
||||
end
|
||||
|
||||
def test_update_redirect
|
||||
# create a redirect that point to this page
|
||||
assert WikiRedirect.create(:wiki => @wiki, :title => 'An_old_page', :redirects_to => 'Original_title')
|
||||
|
||||
@original.title = 'New title'
|
||||
@original.save
|
||||
# make sure the old page now points to the new page
|
||||
assert_equal 'New_title', @wiki.find_page('An old page').title
|
||||
end
|
||||
|
||||
def test_reverse_rename
|
||||
# create a redirect that point to this page
|
||||
assert WikiRedirect.create(:wiki => @wiki, :title => 'An_old_page', :redirects_to => 'Original_title')
|
||||
|
||||
@original.title = 'An old page'
|
||||
@original.save
|
||||
assert !@wiki.redirects.find_by_title_and_redirects_to('An_old_page', 'An_old_page')
|
||||
assert @wiki.redirects.find_by_title_and_redirects_to('Original_title', 'An_old_page')
|
||||
end
|
||||
|
||||
def test_rename_to_already_redirected
|
||||
assert WikiRedirect.create(:wiki => @wiki, :title => 'An_old_page', :redirects_to => 'Other_page')
|
||||
|
||||
@original.title = 'An old page'
|
||||
@original.save
|
||||
# this redirect have to be removed since 'An old page' page now exists
|
||||
assert !@wiki.redirects.find_by_title_and_redirects_to('An_old_page', 'Other_page')
|
||||
end
|
||||
|
||||
def test_redirects_removed_when_deleting_page
|
||||
assert WikiRedirect.create(:wiki => @wiki, :title => 'An_old_page', :redirects_to => 'Original_title')
|
||||
|
||||
@original.destroy
|
||||
assert !@wiki.redirects.find(:first)
|
||||
end
|
||||
end
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user