Commit 1846267f58586d0540c5582ee2a8fa82df702659

Authored by AntonioTerceiro
1 parent 8110369e

ActionItem21: checkpoint



git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@943 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/controllers/my_profile/cms_controller.rb
1 class CmsController < MyProfileController 1 class CmsController < MyProfileController
2 2
3 - define_option :page_class, Article  
4 -  
5 - protect 'post_content', :profile, :only => [:edit, :new, :reorder, :delete] 3 + # FIXME add the access control again
  4 + # protect 'post_content', :profile, :only => [:edit, :new, :reorder, :delete]
  5 +
  6 + def view
  7 + @document = profile.documents.find(params[:id])
  8 + end
6 9
7 protected 10 protected
8 11
app/models/article.rb
1 class Article < ActiveRecord::Base 1 class Article < ActiveRecord::Base
2 2
  3 + belongs_to :profile
  4 + validates_presence_of :profile_id, :name, :slug, :path
  5 +
3 acts_as_taggable 6 acts_as_taggable
4 7
5 acts_as_filesystem 8 acts_as_filesystem
6 9
7 acts_as_versioned 10 acts_as_versioned
8 11
9 - def profile(reload = false)  
10 - @profile = nil if reload  
11 - @profile ||= Profile.find_by_identifier(self.full_path.split(/\//).first)  
12 - end  
13 -  
14 end 12 end
app/models/profile.rb
@@ -109,7 +109,8 @@ class Profile &lt; ActiveRecord::Base @@ -109,7 +109,8 @@ class Profile &lt; ActiveRecord::Base
109 # +limit+ is the maximum number of documents to be returned. It defaults to 109 # +limit+ is the maximum number of documents to be returned. It defaults to
110 # 10. 110 # 10.
111 def recent_documents(limit = 10) 111 def recent_documents(limit = 10)
112 - homepage.children.find(:all, :limit => limit, :order => 'created_on desc') 112 + # FIXME not like this anymore
  113 + raise 'needs to be rewritten'
113 end 114 end
114 115
115 def superior_instance 116 def superior_instance
app/views/cms/view.rhtml 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +<%# FIXME %>
  2 +
  3 +<h2><%= @document.title %></h2>
config/environment.rb
@@ -77,4 +77,4 @@ Tag.hierarchical = true @@ -77,4 +77,4 @@ Tag.hierarchical = true
77 # string transliteration 77 # string transliteration
78 require 'noosfero/transliterations' 78 require 'noosfero/transliterations'
79 79
80 -require 'acts_as_versioned' 80 +require 'acts_as_filesystem'
db/migrate/007_create_articles.rb
@@ -6,6 +6,7 @@ class CreateArticles &lt; ActiveRecord::Migration @@ -6,6 +6,7 @@ class CreateArticles &lt; ActiveRecord::Migration
6 t.column :name, :string 6 t.column :name, :string
7 t.column :slug, :string 7 t.column :slug, :string
8 t.column :path, :text, :default => '' 8 t.column :path, :text, :default => ''
  9 + t.column :parent_id, :integer # acts as tree included
9 10
10 # main data 11 # main data
11 t.column :body, :text 12 t.column :body, :text
@@ -13,14 +14,11 @@ class CreateArticles &lt; ActiveRecord::Migration @@ -13,14 +14,11 @@ class CreateArticles &lt; ActiveRecord::Migration
13 # belongs to profile 14 # belongs to profile
14 t.column :profile_id, :integer 15 t.column :profile_id, :integer
15 16
16 - # acts as tree  
17 - t.column :parent_id, :integer  
18 -  
19 # keep track of timestamps 17 # keep track of timestamps
20 t.column :updated_on, :datetime 18 t.column :updated_on, :datetime
21 t.column :created_on, :datetime 19 t.column :created_on, :datetime
22 20
23 - # versioning stuff 21 + # acts as versioned
24 t.column :version, :integer 22 t.column :version, :integer
25 t.column :lock_version, :integer 23 t.column :lock_version, :integer
26 end 24 end
test/functional/cms_controller_test.rb
@@ -11,7 +11,22 @@ class CmsControllerTest &lt; Test::Unit::TestCase @@ -11,7 +11,22 @@ class CmsControllerTest &lt; Test::Unit::TestCase
11 @response = ActionController::TestResponse.new 11 @response = ActionController::TestResponse.new
12 end 12 end
13 13
14 - def test_missing  
15 - flunk 'need to add some tests for CmsController ' 14 + attr_reader :profile
  15 +
  16 + should 'list top level documents on index' do
  17 + flunk 'not yet'
  18 + end
  19 +
  20 + should 'be able to view a particular document' do
  21 + flunk 'not yet'
  22 + end
  23 +
  24 + should 'be able to edit a document' do
  25 + flunk 'not yet'
  26 + end
  27 +
  28 + should 'be able to save a save a document' do
  29 + flunk 'not yet'
16 end 30 end
  31 +
17 end 32 end
test/unit/article_test.rb
@@ -2,37 +2,53 @@ require File.dirname(__FILE__) + &#39;/../test_helper&#39; @@ -2,37 +2,53 @@ require File.dirname(__FILE__) + &#39;/../test_helper&#39;
2 2
3 class ArticleTest < Test::Unit::TestCase 3 class ArticleTest < Test::Unit::TestCase
4 4
5 - def test_should_use_keywords_as_tags  
6 - article = Article.new  
7 - article.title = 'a test article'  
8 - article.body = 'lalala'  
9 - article.parent = Article.find_by_path('ze')  
10 - article.keywords = 'one, two, three'  
11 - article.save!  
12 -  
13 - assert article.has_keyword?('one')  
14 - assert article.has_keyword?('two')  
15 - assert article.has_keyword?('three') 5 + def setup
  6 + @profile = create_user('testing').person
16 end 7 end
  8 + attr_reader :profile
17 9
18 - should 'have an associated profile' do  
19 - # FIXME this is now wrong  
20 - article = Article.new(:title => 'someuser', :body => "some text")  
21 - article.save! 10 + should 'have and require an associated profile' do
  11 + a = Article.new
  12 + a.valid?
  13 + assert a.errors.invalid?(:profile_id)
22 14
23 - Profile.expects(:find_by_identifier).with("someuser")  
24 - article.profile 15 + a.profile = profile
  16 + a.valid?
  17 + assert !a.errors.invalid?(:profile_id)
25 end 18 end
26 19
27 - should 'get associated profile from name of root page' do  
28 - article = Article.new(:title => "test article", :body => 'some sample text')  
29 - article.parent = Article.find_by_path('ze')  
30 - article.save! 20 + should 'require values for name, slug and path' do
  21 + a = Article.new
  22 + a.valid?
  23 + assert a.errors.invalid?(:name)
  24 + assert a.errors.invalid?(:slug)
  25 + assert a.errors.invalid?(:path)
  26 +
  27 + a.name = 'my article'
  28 + a.valid?
  29 + assert !a.errors.invalid?(:name)
  30 + assert !a.errors.invalid?(:name)
  31 + assert !a.errors.invalid?(:path)
  32 + end
  33 +
  34 + should 'act as versioned' do
  35 + a = Article.create!(:name => 'my article', :body => 'my text', :profile_id => profile.id)
  36 + assert_equal 1, a.versions.size
  37 + a.name = 'some other name'
  38 + a.save!
  39 + assert_equal 2, a.versions.size
  40 + end
31 41
32 - assert_equal 'ze/test-article', article.full_path 42 + should 'act as taggable' do
  43 + a = Article.create!(:name => 'my article', :profile_id => profile.id)
  44 + a.tag_list = ['one', 'two']
  45 + tags = a.tag_list.names
  46 + assert tags.include?('one')
  47 + assert tags.include?('two')
  48 + end
33 49
34 - Profile.expects(:find_by_identifier).with("ze")  
35 - article.profile 50 + should 'act as filesystem' do
  51 + flunk 'not yet'
36 end 52 end
37 53
38 end 54 end
test/unit/category_test.rb
1 require File.dirname(__FILE__) + '/../test_helper' 1 require File.dirname(__FILE__) + '/../test_helper'
2 2
  3 +# FIXME move the filesystem-related tests out here
3 class CategoryTest < Test::Unit::TestCase 4 class CategoryTest < Test::Unit::TestCase
4 5
5 def setup 6 def setup