summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-12-12 13:49:14 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-12-12 13:49:14 +0000
commitb21b6c365cc1f058207490d924d4c804843464a8 (patch)
tree6a2dc3f6492ee672eb092a241dd9c033aae0c196
parentc6511849987c695057c395f10736b54e565461ee (diff)
downloadredmine-b21b6c365cc1f058207490d924d4c804843464a8.tar.gz
redmine-b21b6c365cc1f058207490d924d4c804843464a8.zip
Fixed: default category ignored when adding a document (#2328).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2124 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/documents_controller.rb1
-rw-r--r--app/models/document.rb6
-rw-r--r--test/functional/documents_controller_test.rb9
-rw-r--r--test/unit/document_test.rb37
4 files changed, 53 insertions, 0 deletions
diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb
index c6c93f9df..2d1c414c9 100644
--- a/app/controllers/documents_controller.rb
+++ b/app/controllers/documents_controller.rb
@@ -35,6 +35,7 @@ class DocumentsController < ApplicationController
else
@grouped = documents.group_by(&:category)
end
+ @document = @project.documents.build
render :layout => false if request.xhr?
end
diff --git a/app/models/document.rb b/app/models/document.rb
index 95c3a52c8..2ec99fe07 100644
--- a/app/models/document.rb
+++ b/app/models/document.rb
@@ -28,4 +28,10 @@ class Document < ActiveRecord::Base
validates_presence_of :project, :title, :category
validates_length_of :title, :maximum => 60
+
+ def after_initialize
+ if new_record?
+ self.category ||= Enumeration.default('DCAT')
+ end
+ end
end
diff --git a/test/functional/documents_controller_test.rb b/test/functional/documents_controller_test.rb
index 7c1f0213a..b2e7abda0 100644
--- a/test/functional/documents_controller_test.rb
+++ b/test/functional/documents_controller_test.rb
@@ -32,10 +32,19 @@ class DocumentsControllerTest < Test::Unit::TestCase
end
def test_index
+ # Sets a default category
+ e = Enumeration.find_by_name('Technical documentation')
+ e.update_attributes(:is_default => true)
+
get :index, :project_id => 'ecookbook'
assert_response :success
assert_template 'index'
assert_not_nil assigns(:grouped)
+
+ # Default category selected in the new document form
+ assert_tag :select, :attributes => {:name => 'document[category_id]'},
+ :child => {:tag => 'option', :attributes => {:selected => 'selected'},
+ :content => 'Technical documentation'}
end
def test_new_with_one_attachment
diff --git a/test/unit/document_test.rb b/test/unit/document_test.rb
new file mode 100644
index 000000000..17a0ad6ea
--- /dev/null
+++ b/test/unit/document_test.rb
@@ -0,0 +1,37 @@
+# Redmine - project management software
+# Copyright (C) 2006-2008 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 DocumentTest < Test::Unit::TestCase
+ fixtures :projects, :enumerations, :documents
+
+ def test_create
+ doc = Document.new(:project => Project.find(1), :title => 'New document', :category => Enumeration.find_by_name('User documentation'))
+ assert doc.save
+ end
+
+ def test_create_with_default_category
+ # Sets a default category
+ e = Enumeration.find_by_name('Technical documentation')
+ e.update_attributes(:is_default => true)
+
+ doc = Document.new(:project => Project.find(1), :title => 'New document')
+ assert_equal e, doc.category
+ assert doc.save
+ end
+end