refinerycms-blog 1.3.2 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/blog/posts_controller.rb +14 -1
- data/app/models/blog_post.rb +15 -9
- data/app/models/categorization.rb +2 -0
- data/app/views/admin/blog/posts/_form.html.erb +8 -1
- data/app/views/blog/posts/_post.html.erb +2 -4
- data/app/views/blog/posts/archive.html.erb +1 -2
- data/app/views/blog/posts/index.html.erb +1 -0
- data/app/views/blog/posts/show.html.erb +1 -0
- data/app/views/blog/posts/tagged.html.erb +22 -0
- data/app/views/blog/shared/_post.html.erb +7 -3
- data/app/views/blog/shared/_tags.html.erb +8 -0
- data/changelog.md +6 -1
- data/config/locales/cs.yml +128 -0
- data/config/locales/en.yml +5 -0
- data/config/locales/nb.yml +7 -0
- data/config/locales/nl.yml +120 -10
- data/config/locales/pt-BR.yml +3 -0
- data/config/locales/sk.yml +128 -0
- data/config/locales/zh-CN.yml +128 -0
- data/config/routes.rb +2 -1
- data/db/migrate/3_acts_as_taggable_on_migration.rb +28 -0
- data/db/migrate/4_create_seo_meta_for_blog.rb +25 -0
- data/db/seeds/refinerycms_blog.rb +18 -14
- data/features/authors.feature +4 -4
- data/features/support/factories/blog_categories.rb +2 -1
- data/features/support/factories/blog_comments.rb +2 -4
- data/features/support/factories/blog_posts.rb +3 -0
- data/features/support/step_definitions/tags_steps.rb +11 -0
- data/features/tags.feature +26 -0
- data/lib/gemspec.rb +12 -6
- data/lib/refinery/blog/version.rb +17 -0
- data/lib/refinerycms-blog.rb +10 -9
- data/readme.md +1 -1
- data/spec/models/blog_category_spec.rb +41 -0
- data/spec/models/{blog_comments_spec.rb → blog_comment_spec.rb} +0 -0
- data/spec/models/blog_post_spec.rb +187 -0
- metadata +53 -10
- data/spec/models/blog_categories_spec.rb +0 -41
- data/spec/models/blog_posts_spec.rb +0 -176
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
Dir[File.expand_path('../../../features/support/factories/*.rb', __FILE__)].each{|factory| require factory}
|
3
|
-
|
4
|
-
describe BlogCategory do
|
5
|
-
before(:each) do
|
6
|
-
@attr = { :title => "RefineryCMS" }
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "validations" do
|
10
|
-
it "requires title" do
|
11
|
-
BlogCategory.new(@attr.merge(:title => "")).should_not be_valid
|
12
|
-
end
|
13
|
-
|
14
|
-
it "won't allow duplicate titles" do
|
15
|
-
BlogCategory.create!(@attr)
|
16
|
-
BlogCategory.new(@attr).should_not be_valid
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe "blog posts association" do
|
21
|
-
it "has a posts attribute" do
|
22
|
-
BlogCategory.new.should respond_to(:posts)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "returns posts by published_at date in descending order" do
|
26
|
-
@category = BlogCategory.create!(@attr)
|
27
|
-
@first_post = @category.posts.create!({ :title => "Breaking News: Joe Sak is hot stuff you guys!!", :body => "True story.", :published_at => Time.now.yesterday })
|
28
|
-
@latest_post = @category.posts.create!({ :title => "parndt is p. okay", :body => "For a kiwi.", :published_at => Time.now })
|
29
|
-
@category.posts.first.should == @latest_post
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
describe "#post_count" do
|
35
|
-
it "returns post count in category" do
|
36
|
-
Factory(:post, :categories => [Factory(:blog_category)])
|
37
|
-
Factory(:post, :categories => [Factory(:blog_category)])
|
38
|
-
BlogCategory.first.post_count.should == 2
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,176 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
Dir[File.expand_path('../../../features/support/factories/*.rb', __FILE__)].each{|factory| require factory}
|
3
|
-
|
4
|
-
describe BlogPost do
|
5
|
-
describe "validations" do
|
6
|
-
before(:each) do
|
7
|
-
@attr = { :title => "RefineryCMS", :body => "Some random text ..." }
|
8
|
-
end
|
9
|
-
|
10
|
-
it "requires title" do
|
11
|
-
BlogPost.new(@attr.merge(:title => "")).should_not be_valid
|
12
|
-
end
|
13
|
-
|
14
|
-
it "won't allow duplicate titles" do
|
15
|
-
BlogPost.create!(@attr)
|
16
|
-
BlogPost.new(@attr).should_not be_valid
|
17
|
-
end
|
18
|
-
|
19
|
-
it "requires body" do
|
20
|
-
BlogPost.new(@attr.merge(:body => nil)).should_not be_valid
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe "comments association" do
|
25
|
-
before(:each) do
|
26
|
-
@blog_post = Factory(:post)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "have a comments attribute" do
|
30
|
-
@blog_post.should respond_to(:comments)
|
31
|
-
end
|
32
|
-
|
33
|
-
it "destroys associated comments" do
|
34
|
-
Factory(:blog_comment, :blog_post_id => @blog_post)
|
35
|
-
@blog_post.destroy
|
36
|
-
BlogComment.find_by_blog_post_id(@blog_post).should be_nil
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe "categories association" do
|
41
|
-
before(:each) do
|
42
|
-
@blog_post = Factory(:post)
|
43
|
-
end
|
44
|
-
|
45
|
-
it "have categories attribute" do
|
46
|
-
@blog_post.should respond_to(:categories)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe "authors" do
|
51
|
-
it "are authored" do
|
52
|
-
BlogPost.instance_methods.map(&:to_sym).include? :author
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe "by_archive scope" do
|
57
|
-
it "returns all posts from specified month" do
|
58
|
-
blog_post1 = Factory(:post, :published_at => Time.now.advance(:minutes => -2))
|
59
|
-
blog_post2 = Factory(:post, :published_at => Time.now.advance(:minutes => -1))
|
60
|
-
Factory(:post, :published_at => Time.now - 2.months)
|
61
|
-
date = "#{Time.now.month}/#{Time.now.year}"
|
62
|
-
BlogPost.by_archive(Time.parse(date)).count.should == 2
|
63
|
-
BlogPost.by_archive(Time.parse(date)).should == [blog_post2, blog_post1]
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
describe "all_previous scope" do
|
68
|
-
it "returns all posts from previous months" do
|
69
|
-
blog_post1 = Factory(:post, :published_at => Time.now.advance(:months => -2))
|
70
|
-
blog_post2 = Factory(:post, :published_at => Time.now.advance(:months => -1))
|
71
|
-
Factory(:post, :published_at => Time.now)
|
72
|
-
BlogPost.all_previous.count.should == 2
|
73
|
-
BlogPost.all_previous.should == [blog_post2, blog_post1]
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
describe "live scope" do
|
78
|
-
it "returns all posts which aren't in draft and pub date isn't in future" do
|
79
|
-
blog_post1 = Factory(:post, :published_at => Time.now.advance(:minutes => -2))
|
80
|
-
blog_post2 = Factory(:post, :published_at => Time.now.advance(:minutes => -1))
|
81
|
-
Factory(:post, :draft => true)
|
82
|
-
Factory(:post, :published_at => Time.now + 1.minute)
|
83
|
-
BlogPost.live.count.should == 2
|
84
|
-
BlogPost.live.should == [blog_post2, blog_post1]
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
describe "next scope" do
|
89
|
-
it "returns next article based on given article" do
|
90
|
-
blog_post1 = Factory(:post, :published_at => Time.now.advance(:minutes => -1))
|
91
|
-
blog_post2 = Factory(:post)
|
92
|
-
BlogPost.next(blog_post1).should == [blog_post2]
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
describe "previous scope" do
|
97
|
-
it "returns previous article based on given article" do
|
98
|
-
blog_post1 = Factory(:post, :published_at => Time.now.advance(:minutes => -1))
|
99
|
-
blog_post2 = Factory(:post)
|
100
|
-
BlogPost.previous(blog_post2).should == [blog_post1]
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
describe "uncategorized scope" do
|
105
|
-
it "returns uncategorized posts if they exist" do
|
106
|
-
uncategorized_blog_post = Factory(:post)
|
107
|
-
categorized_blog_post = Factory(:post)
|
108
|
-
|
109
|
-
categorized_blog_post.categories << Factory(:blog_category)
|
110
|
-
|
111
|
-
BlogPost.uncategorized.should include uncategorized_blog_post
|
112
|
-
BlogPost.uncategorized.should_not include categorized_blog_post
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
describe "#live?" do
|
117
|
-
it "returns true if post is not in draft and it's published" do
|
118
|
-
Factory(:post).live?.should be_true
|
119
|
-
end
|
120
|
-
|
121
|
-
it "returns false if post is in draft" do
|
122
|
-
Factory(:post, :draft => true).live?.should be_false
|
123
|
-
end
|
124
|
-
|
125
|
-
it "returns false if post pub date is in future" do
|
126
|
-
Factory(:post, :published_at => Time.now.advance(:minutes => 1)).live?.should be_false
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
describe "#next" do
|
131
|
-
it "returns next article when called on current article" do
|
132
|
-
Factory(:post, :published_at => Time.now.advance(:minutes => -1))
|
133
|
-
blog_post = Factory(:post)
|
134
|
-
blog_posts = BlogPost.all
|
135
|
-
blog_posts.last.next.should == blog_post
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
describe "#prev" do
|
140
|
-
it "returns previous article when called on current article" do
|
141
|
-
Factory(:post)
|
142
|
-
blog_post = Factory(:post, :published_at => Time.now.advance(:minutes => -1))
|
143
|
-
blog_posts = BlogPost.all
|
144
|
-
blog_posts.first.prev.should == blog_post
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
describe "#category_ids=" do
|
149
|
-
before(:each) do
|
150
|
-
@blog_post = Factory(:post)
|
151
|
-
@cat1 = Factory(:blog_category, :id => 1)
|
152
|
-
@cat2 = Factory(:blog_category, :id => 2)
|
153
|
-
@cat3 = Factory(:blog_category, :id => 3)
|
154
|
-
@blog_post.category_ids = [1,2,"","",3]
|
155
|
-
end
|
156
|
-
|
157
|
-
it "rejects blank category ids" do
|
158
|
-
@blog_post.categories.count.should == 3
|
159
|
-
end
|
160
|
-
|
161
|
-
it "returns array of categories based on given ids" do
|
162
|
-
@blog_post.categories.should == [@cat1, @cat2, @cat3]
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
describe ".comments_allowed?" do
|
167
|
-
it "returns true if comments_allowed setting is set to true" do
|
168
|
-
BlogPost.comments_allowed?.should be_true
|
169
|
-
end
|
170
|
-
|
171
|
-
it "returns false if comments_allowed setting is set to false" do
|
172
|
-
RefinerySetting.set(:comments_allowed, {:scoping => 'blog', :value => false})
|
173
|
-
BlogPost.comments_allowed?.should be_false
|
174
|
-
end
|
175
|
-
end
|
176
|
-
end
|