Chris@909: require File.expand_path('../../test_helper', __FILE__) Chris@909: Chris@909: class FilesControllerTest < ActionController::TestCase Chris@909: fixtures :projects, :trackers, :issue_statuses, :issues, Chris@909: :enumerations, :users, :issue_categories, Chris@909: :projects_trackers, Chris@909: :roles, Chris@909: :member_roles, Chris@909: :members, Chris@909: :enabled_modules, Chris@909: :workflows, Chris@909: :journals, :journal_details, Chris@909: :attachments, Chris@909: :versions Chris@909: Chris@909: def setup Chris@909: @controller = FilesController.new Chris@909: @request = ActionController::TestRequest.new Chris@909: @response = ActionController::TestResponse.new Chris@909: @request.session[:user_id] = nil Chris@909: Setting.default_language = 'en' Chris@909: end Chris@909: Chris@909: def test_index Chris@909: get :index, :project_id => 1 Chris@909: assert_response :success Chris@909: assert_template 'index' Chris@909: assert_not_nil assigns(:containers) Chris@909: Chris@909: # file attached to the project Chris@909: assert_tag :a, :content => 'project_file.zip', Chris@909: :attributes => { :href => '/attachments/download/8/project_file.zip' } Chris@909: Chris@909: # file attached to a project's version Chris@909: assert_tag :a, :content => 'version_file.zip', Chris@909: :attributes => { :href => '/attachments/download/9/version_file.zip' } Chris@909: end Chris@909: Chris@909: def test_create_file Chris@909: set_tmp_attachments_directory Chris@909: @request.session[:user_id] = 2 Chris@909: Setting.notified_events = ['file_added'] Chris@909: ActionMailer::Base.deliveries.clear Chris@909: Chris@909: assert_difference 'Attachment.count' do Chris@909: post :create, :project_id => 1, :version_id => '', Chris@909: :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}} Chris@909: assert_response :redirect Chris@909: end Chris@909: assert_redirected_to '/projects/ecookbook/files' Chris@909: a = Attachment.find(:first, :order => 'created_on DESC') Chris@909: assert_equal 'testfile.txt', a.filename Chris@909: assert_equal Project.find(1), a.container Chris@909: Chris@909: mail = ActionMailer::Base.deliveries.last Chris@909: assert_kind_of TMail::Mail, mail Chris@909: assert_equal "[eCookbook] New file", mail.subject Chris@909: assert mail.body.include?('testfile.txt') Chris@909: end Chris@909: Chris@909: def test_create_version_file Chris@909: set_tmp_attachments_directory Chris@909: @request.session[:user_id] = 2 Chris@909: Setting.notified_events = ['file_added'] Chris@909: Chris@909: assert_difference 'Attachment.count' do Chris@909: post :create, :project_id => 1, :version_id => '2', Chris@909: :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}} Chris@909: assert_response :redirect Chris@909: end Chris@909: assert_redirected_to '/projects/ecookbook/files' Chris@909: a = Attachment.find(:first, :order => 'created_on DESC') Chris@909: assert_equal 'testfile.txt', a.filename Chris@909: assert_equal Version.find(2), a.container Chris@909: end Chris@909: Chris@909: end