@@ -0,0 +1,1 | |||
|
1 | this is a text file for upload tests No newline at end of file |
@@ -1,78 +1,58 | |||
|
1 | 1 | require "#{File.dirname(__FILE__)}/../test_helper" |
|
2 | 2 | |
|
3 | 3 | class IssuesTest < ActionController::IntegrationTest |
|
4 | 4 | fixtures :projects, :users, :trackers, :issue_statuses, :issues, :permissions, :permissions_roles, :enumerations |
|
5 | 5 | |
|
6 | 6 | # create an issue |
|
7 | 7 | def test_add_issue |
|
8 | 8 | log_user('jsmith', 'jsmith') |
|
9 | 9 | get "projects/add_issue/1", :tracker_id => "1" |
|
10 | 10 | assert_response :success |
|
11 | 11 | assert_template "projects/add_issue" |
|
12 | 12 | |
|
13 | 13 | post "projects/add_issue/1", :tracker_id => "1", |
|
14 | 14 | :issue => { :start_date => "2006-12-26", |
|
15 | 15 | :priority_id => "3", |
|
16 | 16 | :subject => "new test issue", |
|
17 | 17 | :category_id => "", |
|
18 | 18 | :description => "new issue", |
|
19 | 19 | :done_ratio => "0", |
|
20 | 20 | :due_date => "", |
|
21 | 21 | :assigned_to_id => "" } |
|
22 | 22 | # find created issue |
|
23 | 23 | issue = Issue.find_by_subject("new test issue") |
|
24 | 24 | assert_kind_of Issue, issue |
|
25 | 25 | |
|
26 | 26 | # check redirection |
|
27 | 27 | assert_redirected_to "projects/list_issues/1" |
|
28 | 28 | follow_redirect! |
|
29 | 29 | assert assigns(:issues).include?(issue) |
|
30 | 30 | |
|
31 | 31 | # check issue attributes |
|
32 | 32 | assert_equal 'jsmith', issue.author.login |
|
33 | 33 | assert_equal 1, issue.project.id |
|
34 | 34 | assert_equal 1, issue.status.id |
|
35 | 35 | end |
|
36 | 36 | |
|
37 | 37 | # add then remove 2 attachments to an issue |
|
38 | 38 | def test_issue_attachements |
|
39 | 39 | log_user('jsmith', 'jsmith') |
|
40 | ||
|
41 | file_data_1 = "some text...." | |
|
42 | file_name_1 = "sometext.txt" | |
|
43 | file_data_2 = "more text..." | |
|
44 | file_name_2 = "moretext.txt" | |
|
45 | ||
|
46 | boundary = "rubyqMY6QN9bp6e4kS21H4y0zxcvoor" | |
|
47 | headers = { "Content-Type" => "multipart/form-data; boundary=#{boundary}" } | |
|
48 | 40 | |
|
49 | data = [ | |
|
50 | "--" + boundary, | |
|
51 | "Content-Disposition: form-data; name=\"attachments[]\"; filename=\"#{file_name_1}\"", | |
|
52 | "Content-Type: text/plain", | |
|
53 | "", file_data_1, | |
|
54 | "--" + boundary, | |
|
55 | "Content-Disposition: form-data; name=\"attachments[]\"; filename=\"#{file_name_2}\"", | |
|
56 | "Content-Type: text/plain", | |
|
57 | "", file_data_2, | |
|
58 | "--" + boundary, "" | |
|
59 | ].join("\x0D\x0A") | |
|
60 | ||
|
61 | post "issues/add_attachment/1", data, headers | |
|
41 | post "issues/add_attachment/1", { 'attachments[]' => ActionController::TestUploadedFile.new(Test::Unit::TestCase.fixture_path + '/files/testfile.txt', 'text/plain') } | |
|
62 | 42 | assert_redirected_to "issues/show/1" |
|
63 | 43 | |
|
64 | 44 | # make sure attachment was saved |
|
65 |
attachment = Issue.find(1).attachments.find_by_filename( |
|
|
45 | attachment = Issue.find(1).attachments.find_by_filename("testfile.txt") | |
|
66 | 46 | assert_kind_of Attachment, attachment |
|
67 | 47 | assert_equal Issue.find(1), attachment.container |
|
68 | 48 | # verify the size of the attachment stored in db |
|
69 | assert_equal file_data_1.length, attachment.filesize | |
|
49 | #assert_equal file_data_1.length, attachment.filesize | |
|
70 | 50 | # verify that the attachment was written to disk |
|
71 | 51 | assert File.exist?(attachment.diskfile) |
|
72 | 52 | |
|
73 | 53 | # remove the attachments |
|
74 | 54 | Issue.find(1).attachments.each(&:destroy) |
|
75 | 55 | assert_equal 0, Issue.find(1).attachments.length |
|
76 | 56 | end |
|
77 | 57 | |
|
78 | 58 | end |
@@ -1,55 +1,72 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | ENV["RAILS_ENV"] ||= "test" |
|
19 | 19 | require File.expand_path(File.dirname(__FILE__) + "/../config/environment") |
|
20 | 20 | require 'test_help' |
|
21 | 21 | |
|
22 | 22 | class Test::Unit::TestCase |
|
23 | 23 | # Transactional fixtures accelerate your tests by wrapping each test method |
|
24 | 24 | # in a transaction that's rolled back on completion. This ensures that the |
|
25 | 25 | # test database remains unchanged so your fixtures don't have to be reloaded |
|
26 | 26 | # between every test method. Fewer database queries means faster tests. |
|
27 | 27 | # |
|
28 | 28 | # Read Mike Clark's excellent walkthrough at |
|
29 | 29 | # http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting |
|
30 | 30 | # |
|
31 | 31 | # Every Active Record database supports transactions except MyISAM tables |
|
32 | 32 | # in MySQL. Turn off transactional fixtures in this case; however, if you |
|
33 | 33 | # don't care one way or the other, switching from MyISAM to InnoDB tables |
|
34 | 34 | # is recommended. |
|
35 | 35 | self.use_transactional_fixtures = true |
|
36 | 36 | |
|
37 | 37 | # Instantiated fixtures are slow, but give you @david where otherwise you |
|
38 | 38 | # would need people(:david). If you don't want to migrate your existing |
|
39 | 39 | # test cases which use the @david style and don't mind the speed hit (each |
|
40 | 40 | # instantiated fixtures translates to a database query per test method), |
|
41 | 41 | # then set this back to true. |
|
42 | 42 | self.use_instantiated_fixtures = false |
|
43 | 43 | |
|
44 | 44 | # Add more helper methods to be used by all tests here... |
|
45 | 45 | |
|
46 | 46 | def log_user(login, password) |
|
47 | 47 | get "/account/login" |
|
48 | 48 | assert_equal nil, session[:user_id] |
|
49 | 49 | assert_response :success |
|
50 | 50 | assert_template "account/login" |
|
51 | 51 | post "/account/login", :login => login, :password => password |
|
52 | 52 | assert_redirected_to "my/page" |
|
53 | 53 | assert_equal login, User.find(session[:user_id]).login |
|
54 | 54 | end |
|
55 | 55 | end |
|
56 | ||
|
57 | ||
|
58 | # ActionController::TestUploadedFile bug | |
|
59 | # see http://dev.rubyonrails.org/ticket/4635 | |
|
60 | class String | |
|
61 | def original_filename | |
|
62 | "testfile.txt" | |
|
63 | end | |
|
64 | ||
|
65 | def content_type | |
|
66 | "text/plain" | |
|
67 | end | |
|
68 | ||
|
69 | def read | |
|
70 | self.to_s | |
|
71 | end | |
|
72 | end No newline at end of file |
General Comments 0
You need to be logged in to leave comments.
Login now