]> source.dussan.org Git - redmine.git/commitdiff
Fixed: default category ignored when adding a document (#2328).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 12 Dec 2008 13:49:14 +0000 (13:49 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 12 Dec 2008 13:49:14 +0000 (13:49 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2124 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/documents_controller.rb
app/models/document.rb
test/functional/documents_controller_test.rb
test/unit/document_test.rb [new file with mode: 0644]

index c6c93f9df6708e5c7bd6808bf0ca9344ba62a5bb..2d1c414c9dfc53567b2d07142eaa2392a62004c5 100644 (file)
@@ -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
   
index 95c3a52c86923459e52bb26dc015ef4a58a88616..2ec99fe0721b4ae6315bdb5b6656c3f6eb4aba9d 100644 (file)
@@ -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
index 7c1f0213a2edd36656b90f772c336e2951dd3ec0..b2e7abda09ab9d917e050372a1826a5a2814a25a 100644 (file)
@@ -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 (file)
index 0000000..17a0ad6
--- /dev/null
@@ -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