muck-contents 0.2.11 → 0.2.12

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.11
1
+ 0.2.12
@@ -32,13 +32,13 @@ module ActiveRecord
32
32
  has_many :content_permissions, :dependent => :destroy
33
33
  has_many :content_translations, :dependent => :destroy
34
34
 
35
- named_scope :by_newest, :order => "created_at DESC"
36
- named_scope :recent, lambda { { :conditions => ['created_at > ?', 1.week.ago] } }
37
- named_scope :by_alpha, :order => "title ASC"
38
- named_scope :public, :conditions => "is_public = true"
39
- named_scope :by_parent, lambda { |parent_id| { :conditions => ['parent_id = ?', parent_id || 0] } }
40
- named_scope :by_creator, lambda { |creator_id| { :conditions => ['creator_id = ?', creator_id || 0] } }
41
- named_scope :no_contentable, :conditions => 'contentable_id IS NULL'
35
+ named_scope :by_newest, :order => "contents.created_at DESC"
36
+ named_scope :recent, lambda { { :conditions => ['contents.created_at > ?', 1.week.ago] } }
37
+ named_scope :by_alpha, :order => "contents.title ASC"
38
+ named_scope :public, :conditions => "contents.is_public = true"
39
+ named_scope :by_parent, lambda { |parent_id| { :conditions => ['contents.parent_id = ?', parent_id || 0] } }
40
+ named_scope :by_creator, lambda { |creator_id| { :conditions => ['contents.creator_id = ?', creator_id || 0] } }
41
+ named_scope :no_contentable, :conditions => 'contents.contentable_id IS NULL'
42
42
  # include the '/' in case the user forgets. Note 'get_content_scope' will add the '/' so
43
43
  # if we don't include it here the content won't be found as the scope won't match up.
44
44
  named_scope :by_scope, lambda { |scope| { :conditions => ["slugs.scope = ?", File.join('/', scope)], :include => [:slugs] } }
@@ -1,15 +1,15 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{muck-contents}
8
- s.version = "0.2.11"
8
+ s.version = "0.2.12"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin Ball", "Joel Duffin"]
12
- s.date = %q{2009-11-30}
12
+ s.date = %q{2009-12-16}
13
13
  s.email = %q{justin@tatemae.com}
14
14
  s.extra_rdoc_files = [
15
15
  "README.rdoc"
@@ -3136,3 +3136,4 @@ Gem::Specification.new do |s|
3136
3136
  s.add_dependency(%q<fleakr>, [">= 0"])
3137
3137
  end
3138
3138
  end
3139
+
@@ -1,3 +1,21 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: comments
4
+ #
5
+ # id :integer not null, primary key
6
+ # commentable_id :integer default(0)
7
+ # commentable_type :string(15) default("")
8
+ # body :text
9
+ # user_id :integer
10
+ # parent_id :integer
11
+ # lft :integer
12
+ # rgt :integer
13
+ # is_denied :integer default(0), not null
14
+ # is_reviewed :boolean
15
+ # created_at :datetime
16
+ # updated_at :datetime
17
+ #
18
+
1
19
  class Comment < ActiveRecord::Base
2
20
 
3
21
  acts_as_muck_comment
@@ -1,7 +1,30 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: contents
4
+ #
5
+ # id :integer not null, primary key
6
+ # creator_id :integer
7
+ # title :string(255)
8
+ # body :text
9
+ # locale :string(255)
10
+ # body_raw :text
11
+ # contentable_id :integer
12
+ # contentable_type :string(255)
13
+ # parent_id :integer
14
+ # lft :integer
15
+ # rgt :integer
16
+ # is_public :boolean
17
+ # state :string(255)
18
+ # created_at :datetime
19
+ # updated_at :datetime
20
+ # layout :string(255)
21
+ # comment_count :integer default(0)
22
+ #
23
+
1
24
  class Content < ActiveRecord::Base
2
25
  acts_as_muck_content(
3
26
  :git_repository => GlobalConfig.content_git_repository,
4
27
  :enable_auto_translations => GlobalConfig.enable_auto_translations,
5
28
  :enable_solr => GlobalConfig.content_enable_solr
6
29
  )
7
- end
30
+ end
@@ -1,3 +1,14 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: content_permissions
4
+ #
5
+ # id :integer not null, primary key
6
+ # content_id :integer
7
+ # user_id :integer
8
+ # created_at :datetime
9
+ # updated_at :datetime
10
+ #
11
+
1
12
  class ContentPermission < ActiveRecord::Base
2
13
  acts_as_muck_content_permission
3
- end
14
+ end
@@ -1,3 +1,17 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: content_translations
4
+ #
5
+ # id :integer not null, primary key
6
+ # content_id :integer
7
+ # title :string(255)
8
+ # body :text
9
+ # locale :string(255)
10
+ # user_edited :boolean
11
+ # created_at :datetime
12
+ # updated_at :datetime
13
+ #
14
+
1
15
  class ContentTranslation < ActiveRecord::Base
2
16
  acts_as_muck_content_translation
3
- end
17
+ end
@@ -2,34 +2,27 @@
2
2
  #
3
3
  # Table name: uploads
4
4
  #
5
- # id :integer(4) not null, primary key
6
- # creator_id :integer(4)
5
+ # id :integer not null, primary key
6
+ # creator_id :integer
7
7
  # name :string(255)
8
8
  # caption :string(1000)
9
9
  # description :text
10
- # is_public :boolean(1) default(TRUE)
11
- # uploadable_id :integer(4)
10
+ # is_public :boolean default(TRUE)
11
+ # uploadable_id :integer
12
12
  # uploadable_type :string(255)
13
13
  # width :string(255)
14
14
  # height :string(255)
15
15
  # local_file_name :string(255)
16
16
  # local_content_type :string(255)
17
- # local_file_size :integer(4)
17
+ # local_file_size :integer
18
18
  # local_updated_at :datetime
19
19
  # remote_file_name :string(255)
20
20
  # remote_content_type :string(255)
21
- # remote_file_size :integer(4)
21
+ # remote_file_size :integer
22
22
  # remote_updated_at :datetime
23
23
  # created_at :datetime
24
24
  # updated_at :datetime
25
25
  #
26
- # Indexes
27
- #
28
- # index_uploads_on_creator_id (creator_id)
29
- # index_uploads_on_uploadable_id (uploadable_id)
30
- # index_uploads_on_uploadable_type (uploadable_type)
31
- # index_uploads_on_local_content_type (local_content_type)
32
- #
33
26
 
34
27
  class Upload < ActiveRecord::Base
35
28
 
@@ -1,3 +1,34 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: users
4
+ #
5
+ # id :integer not null, primary key
6
+ # login :string(255)
7
+ # email :string(255)
8
+ # first_name :string(255)
9
+ # last_name :string(255)
10
+ # crypted_password :string(255)
11
+ # password_salt :string(255)
12
+ # persistence_token :string(255) not null
13
+ # single_access_token :string(255) not null
14
+ # perishable_token :string(255) not null
15
+ # login_count :integer default(0), not null
16
+ # failed_login_count :integer default(0), not null
17
+ # last_request_at :datetime
18
+ # current_login_at :datetime
19
+ # last_login_at :datetime
20
+ # current_login_ip :string(255)
21
+ # last_login_ip :string(255)
22
+ # terms_of_service :boolean not null
23
+ # time_zone :string(255) default("UTC")
24
+ # disabled_at :datetime
25
+ # created_at :datetime
26
+ # activated_at :datetime
27
+ # updated_at :datetime
28
+ # identity_url :string(255)
29
+ # url_key :string(255)
30
+ #
31
+
1
32
  class User < ActiveRecord::Base
2
33
  acts_as_authentic do |c|
3
34
  c.crypto_provider = Authlogic::CryptoProviders::BCrypt
@@ -14,4 +45,4 @@ class User < ActiveRecord::Base
14
45
  true
15
46
  end
16
47
 
17
- end
48
+ end
@@ -1,19 +1,17 @@
1
1
  development:
2
- adapter: sqlite3
3
- database: db/development.sqlite3
4
- timeout: 5000
2
+ adapter: mysql
3
+ database: muck_contents
4
+ username: root
5
+ password:
6
+ host: localhost
7
+ encoding: utf8
5
8
 
6
9
  test: &TEST
7
- adapter: sqlite3
8
- database: db/test.sqlite3
9
- timeout: 5000
10
-
11
- production:
12
- adapter: sqlite3
13
- database: db/production.sqlite3
14
- timeout: 5000
15
-
16
- cucumber:
17
- <<: *TEST
10
+ adapter: mysql
11
+ database: muck_contents_test
12
+ username: root
13
+ password:
14
+ host: localhost
15
+ encoding: utf8
18
16
  cucumber:
19
17
  <<: *TEST
@@ -1,3 +1,14 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: content_permissions
4
+ #
5
+ # id :integer not null, primary key
6
+ # content_id :integer
7
+ # user_id :integer
8
+ # created_at :datetime
9
+ # updated_at :datetime
10
+ #
11
+
1
12
  require File.dirname(__FILE__) + '/../test_helper'
2
13
 
3
14
  # Used to test muck_content_permission
@@ -29,4 +40,4 @@ class ContentPermissionTest < ActiveSupport::TestCase
29
40
 
30
41
  end
31
42
 
32
- end
43
+ end
@@ -1,3 +1,26 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: contents
4
+ #
5
+ # id :integer not null, primary key
6
+ # creator_id :integer
7
+ # title :string(255)
8
+ # body :text
9
+ # locale :string(255)
10
+ # body_raw :text
11
+ # contentable_id :integer
12
+ # contentable_type :string(255)
13
+ # parent_id :integer
14
+ # lft :integer
15
+ # rgt :integer
16
+ # is_public :boolean
17
+ # state :string(255)
18
+ # created_at :datetime
19
+ # updated_at :datetime
20
+ # layout :string(255)
21
+ # comment_count :integer default(0)
22
+ #
23
+
1
24
  require File.dirname(__FILE__) + '/../test_helper'
2
25
 
3
26
  # Used to test muck_content
@@ -29,15 +52,50 @@ class ContentTest < ActiveSupport::TestCase
29
52
  should_validate_presence_of :body_raw
30
53
  should_validate_presence_of :locale
31
54
 
32
- should_have_named_scope :by_newest
33
- should_have_named_scope :recent
34
- should_have_named_scope :by_alpha
35
- should_have_named_scope :public
36
- should_have_named_scope :no_contentable
37
-
55
+ should_scope_by_newest
56
+ should_scope_recent
57
+ should_scope_public
58
+ should_scope_by_alpha_title
59
+ should_scope_by_creator
60
+
38
61
  should_sanitize :title
39
62
  should_sanitize :body
40
-
63
+
64
+ context "named scopes" do
65
+ context "no_contentable" do
66
+ # named_scope :no_contentable, :conditions => 'contentable_id IS NULL'
67
+ setup do
68
+ @user = Factory(:user)
69
+ @content_not = Factory(:content, :contentable => nil)
70
+ @content = Factory(:content, :contentable => @user)
71
+ end
72
+ should "not find content with contentable association" do
73
+ assert !Content.no_contentable.include?(@content)
74
+ end
75
+ should "find content without contentable association" do
76
+ assert Content.no_contentable.include?(@content_not)
77
+ end
78
+ end
79
+ context "by_scope" do
80
+ # named_scope :by_scope, lambda { |scope| { :conditions => ["slugs.scope = ?", File.join('/', scope)], :include => [:slugs] } }
81
+ # TODO add test
82
+ end
83
+ context "by_parent" do
84
+ # named_scope :by_parent, lambda { |parent_id| { :conditions => ['parent_id = ?', parent_id || 0] } }
85
+ setup do
86
+ Content.delete_all
87
+ @parent_content = Factory(:content)
88
+ @item = Factory(:content, :parent => @parent_content)
89
+ @item1 = Factory(:content)
90
+ end
91
+ should "find items by the source they are associated with" do
92
+ items = Content.by_parent(@parent_content)
93
+ assert items.include?(@item), "created_by didn't find item whose parent is user"
94
+ assert !items.include?(@item1), "created_by found item that should not have user as a parent"
95
+ end
96
+ end
97
+ end
98
+
41
99
  context "translations" do
42
100
  should "have localized title" do
43
101
  assert_equal 'hola', @content.locale_title('es')
@@ -288,4 +346,4 @@ class ContentTest < ActiveSupport::TestCase
288
346
  end
289
347
  end
290
348
 
291
- end
349
+ end
@@ -1,3 +1,17 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: content_translations
4
+ #
5
+ # id :integer not null, primary key
6
+ # content_id :integer
7
+ # title :string(255)
8
+ # body :text
9
+ # locale :string(255)
10
+ # user_edited :boolean
11
+ # created_at :datetime
12
+ # updated_at :datetime
13
+ #
14
+
1
15
  require File.dirname(__FILE__) + '/../test_helper'
2
16
 
3
17
  # Used to test muck_content_translation
@@ -6,36 +20,59 @@ class ContentTranslationTest < ActiveSupport::TestCase
6
20
  context "A content translation instance" do
7
21
  setup do
8
22
  @content_translation = Factory(:content_translation)
9
- end
10
-
23
+ end
11
24
  subject { @content_translation }
12
-
13
25
  should_belong_to :content
14
- should_have_named_scope :by_newest
15
- should_have_named_scope :recent
16
- should_have_named_scope :by_alpha
17
- should_have_named_scope :by_locale
26
+ should_scope_recent
18
27
  end
19
28
 
20
- context "find by locale" do
29
+ context "named scope" do
30
+
21
31
  setup do
32
+ @content = Factory(:content)
22
33
  ContentTranslation.destroy_all
23
- @content_one = Factory(:content)
24
- @content_two = Factory(:content)
34
+ @first = Factory(:content_translation, :created_at => 1.day.ago, :content => @content, :title => 'a')
35
+ @second = Factory(:content_translation, :created_at => 1.week.ago, :content => @content, :title => 'b')
25
36
  end
26
- should "find two English translations" do
27
- translations = ContentTranslation.by_locale('en')
28
- assert_equal 2, translations.length
37
+
38
+ # We have to build a custom 'by_newest' and 'by_alpha' test here since creating a content object
39
+ # will create a large number of content translations.
40
+ context "by_newest scope" do
41
+ should "sort by created_at" do
42
+ assert_equal @first, ContentTranslation.by_newest[0]
43
+ assert_equal @second, ContentTranslation.by_newest[1]
44
+ end
29
45
  end
30
- should "find two Spanish translations" do
31
- translations = ContentTranslation.by_locale('es')
32
- assert_equal 2, translations.length
46
+
47
+ context "by_alpha" do
48
+ should "sort by title" do
49
+ assert_equal @first, ContentTranslation.by_alpha[0]
50
+ assert_equal @second, ContentTranslation.by_alpha[1]
51
+ end
33
52
  end
34
- should "delete translations" do
35
- assert_difference "ContentTranslation.count", -(@content_two.content_translations.count) do
36
- @content_two.destroy
53
+
54
+ context "find by locale" do
55
+ #named_scope :by_locale, lambda { |locale| { :conditions => ['content_translations.locale = ?', locale] } }
56
+ setup do
57
+ ContentTranslation.destroy_all
58
+ @content_one = Factory(:content)
59
+ @content_two = Factory(:content)
60
+ end
61
+ should "find two English translations" do
62
+ translations = ContentTranslation.by_locale('en')
63
+ assert_equal 2, translations.length
64
+ end
65
+ should "find two Spanish translations" do
66
+ translations = ContentTranslation.by_locale('es')
67
+ assert_equal 2, translations.length
68
+ end
69
+ should "delete translations" do
70
+ assert_difference "ContentTranslation.count", -(@content_two.content_translations.count) do
71
+ @content_two.destroy
72
+ end
37
73
  end
38
74
  end
75
+
39
76
  end
40
77
 
41
- end
78
+ end
@@ -1,3 +1,34 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: users
4
+ #
5
+ # id :integer not null, primary key
6
+ # login :string(255)
7
+ # email :string(255)
8
+ # first_name :string(255)
9
+ # last_name :string(255)
10
+ # crypted_password :string(255)
11
+ # password_salt :string(255)
12
+ # persistence_token :string(255) not null
13
+ # single_access_token :string(255) not null
14
+ # perishable_token :string(255) not null
15
+ # login_count :integer default(0), not null
16
+ # failed_login_count :integer default(0), not null
17
+ # last_request_at :datetime
18
+ # current_login_at :datetime
19
+ # last_login_at :datetime
20
+ # current_login_ip :string(255)
21
+ # last_login_ip :string(255)
22
+ # terms_of_service :boolean not null
23
+ # time_zone :string(255) default("UTC")
24
+ # disabled_at :datetime
25
+ # created_at :datetime
26
+ # activated_at :datetime
27
+ # updated_at :datetime
28
+ # identity_url :string(255)
29
+ # url_key :string(255)
30
+ #
31
+
1
32
  require File.dirname(__FILE__) + '/../test_helper'
2
33
 
3
34
  # Used to test muck_friend_user
@@ -9,4 +40,4 @@ class UserTest < ActiveSupport::TestCase
9
40
 
10
41
 
11
42
 
12
- end
43
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muck-contents
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.11
4
+ version: 0.2.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Ball
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-11-30 00:00:00 -07:00
13
+ date: 2009-12-16 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency