aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJamie Winsor <jamie@enmasse.com>2011-09-04 03:20:51 -0700
committerJamie Winsor <jamie@enmasse.com>2011-09-04 14:35:03 -0700
commit7903bdfed26f085f6d07d104ac458bc4319b1e32 (patch)
treefd950e2c1d1d234e0e6a590d24296a4a396798a3
parent40be4f71ee425ee55ecedea96ff2b0dc510d71db (diff)
downloadrefinerycms-blog-7903bdfed26f085f6d07d104ac458bc4319b1e32.tar.gz
refinerycms-blog-7903bdfed26f085f6d07d104ac458bc4319b1e32.tar.bz2
refinerycms-blog-7903bdfed26f085f6d07d104ac458bc4319b1e32.zip
refactor factories and add #show tests for posts controller
Do not want to cache classes, but do want to reload models after factory girl: http://groups.google.com/group/factory_girl/browse_thread/thread/daa24556d90c31fc http://stackoverflow.com/questions/5145165/associationtypemismatch-and-factorygirl rails_autolink was removed from Rails 3.1 and abstracted to an external gem fix display author name and post time on comment show fix namespace for thanking and moderated flash notices
-rw-r--r--Gemfile3
-rw-r--r--app/controllers/refinery/blog/posts_controller.rb4
-rw-r--r--app/views/refinery/blog/posts/_comment.html.erb4
-rw-r--r--lib/gemspec.rb1
-rw-r--r--lib/refinery/blog/engine.rb2
-rw-r--r--refinerycms-blog.gemspec27
-rw-r--r--spec/dummy/.gitignore2
-rw-r--r--spec/factories/blog_categories.rb (renamed from spec/support/factories/blog_categories.rb)2
-rw-r--r--spec/factories/blog_comments.rb19
-rw-r--r--spec/factories/blog_posts.rb (renamed from spec/support/factories/blog_posts.rb)2
-rw-r--r--spec/requests/refinery/blog/posts_spec.rb61
-rw-r--r--spec/spec_helper.rb27
-rw-r--r--spec/support/database_cleaner.rb2
-rw-r--r--spec/support/factories/blog_comments.rb8
14 files changed, 122 insertions, 42 deletions
diff --git a/Gemfile b/Gemfile
index 6442971..66587c9 100644
--- a/Gemfile
+++ b/Gemfile
@@ -3,11 +3,12 @@ source "http://rubygems.org"
gemspec
## Uncomment the following lines to develop against edge refinery
-gem 'refinerycms', :git => 'git://github.com/resolve/refinerycms.git'
+gem 'refinerycms', :path => "~/Code/refinerycms" # :git => 'git://github.com/resolve/refinerycms.git'
gem 'awesome_nested_set', :git => 'git://github.com/collectiveidea/awesome_nested_set.git'
group :development, :test do
require 'rbconfig'
+
gem 'sqlite3'
gem 'mysql2'
gem 'pg'
diff --git a/app/controllers/refinery/blog/posts_controller.rb b/app/controllers/refinery/blog/posts_controller.rb
index aa7d45e..a22d251 100644
--- a/app/controllers/refinery/blog/posts_controller.rb
+++ b/app/controllers/refinery/blog/posts_controller.rb
@@ -40,10 +40,10 @@ module Refinery
end
if Refinery::BlogComment::Moderation.enabled?
- flash[:notice] = t('thank_you_moderated', :scope => 'blog.posts.comments')
+ flash[:notice] = t('thank_you_moderated', :scope => 'refinery.blog.posts.comments')
redirect_to main_app.blog_post_url(params[:id])
else
- flash[:notice] = t('thank_you', :scope => 'blog.posts.comments')
+ flash[:notice] = t('thank_you', :scope => 'refinery.blog.posts.comments')
redirect_to main_app.blog_post_url(params[:id],
:anchor => "comment-#{@blog_comment.to_param}")
end
diff --git a/app/views/refinery/blog/posts/_comment.html.erb b/app/views/refinery/blog/posts/_comment.html.erb
index 5503826..659f433 100644
--- a/app/views/refinery/blog/posts/_comment.html.erb
+++ b/app/views/refinery/blog/posts/_comment.html.erb
@@ -3,8 +3,8 @@
<%= simple_format auto_link(comment.message.to_s) %>
<footer class='blog_comment_author'>
<p>
- <%= t('by', :scope => 'blog.posts.comments', :who => comment.name) %>,
- <%= t('time_ago', :scope => 'blog.posts.comments', :time => time_ago_in_words(comment.created_at)) %>
+ <%= t('by', :scope => 'refinery.blog.posts.comments', :who => comment.name) %>,
+ <%= t('time_ago', :scope => 'refinery.blog.posts.comments', :time => time_ago_in_words(comment.created_at)) %>
</p>
</footer>
</article>
diff --git a/lib/gemspec.rb b/lib/gemspec.rb
index df188fe..5508df6 100644
--- a/lib/gemspec.rb
+++ b/lib/gemspec.rb
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
s.add_dependency 'filters_spam', '~> 0.2'
s.add_dependency 'acts-as-taggable-on'
s.add_dependency 'seo_meta', '~> 1.2.0.rc1'
+ s.add_dependency 'rails_autolink'
# Development dependencies
s.add_development_dependency 'refinerycms-testing', '~> 2.0.0'
diff --git a/lib/refinery/blog/engine.rb b/lib/refinery/blog/engine.rb
index ef21472..f67d4ab 100644
--- a/lib/refinery/blog/engine.rb
+++ b/lib/refinery/blog/engine.rb
@@ -1,6 +1,8 @@
module Refinery
module Blog
class Engine < Rails::Engine
+ require 'rails_autolink'
+
config.to_prepare do
require 'refinery/blog/tabs'
end
diff --git a/refinerycms-blog.gemspec b/refinerycms-blog.gemspec
index 24016af..46a86d3 100644
--- a/refinerycms-blog.gemspec
+++ b/refinerycms-blog.gemspec
@@ -5,7 +5,7 @@ Gem::Specification.new do |s|
s.name = %q{refinerycms-blog}
s.version = %q{2.0.0}
s.description = %q{A really straightforward open source Ruby on Rails blog engine designed for integration with RefineryCMS.}
- s.date = %q{2011-08-18}
+ s.date = %q{2011-09-04}
s.summary = %q{Ruby on Rails blogging engine for RefineryCMS.}
s.email = %q{info@refinerycms.com}
s.homepage = %q{http://refinerycms.com/blog}
@@ -14,9 +14,10 @@ Gem::Specification.new do |s|
# Runtime dependencies
s.add_dependency 'refinerycms-core', '~> 2.0.0'
- s.add_dependency 'refinerycms-pages', '~> 2.0.0'
s.add_dependency 'filters_spam', '~> 0.2'
s.add_dependency 'acts-as-taggable-on'
+ s.add_dependency 'seo_meta', '~> 1.2.0.rc1'
+ s.add_dependency 'rails_autolink'
# Development dependencies
s.add_development_dependency 'refinerycms-testing', '~> 2.0.0'
@@ -99,6 +100,9 @@ Gem::Specification.new do |s|
app/models/refinery/blog_comment.rb
app/models/refinery/blog_post.rb
app/models/refinery/categorization.rb
+ app/sweepers
+ app/sweepers/refinery
+ app/sweepers/refinery/blog_sweeper.rb
app/views
app/views/refinery
app/views/refinery/admin
@@ -204,6 +208,10 @@ Gem::Specification.new do |s|
script
script/rails
spec
+ spec/factories
+ spec/factories/blog_categories.rb
+ spec/factories/blog_comments.rb
+ spec/factories/blog_posts.rb
spec/models
spec/models/refinery
spec/models/refinery/blog_category_spec.rb
@@ -211,17 +219,18 @@ Gem::Specification.new do |s|
spec/models/refinery/blog_post_spec.rb
spec/rcov.opts
spec/requests
- spec/requests/blog_categories_spec.rb
- spec/requests/blog_posts_spec.rb
- spec/requests/manage_blog_posts_spec.rb
+ spec/requests/refinery
+ spec/requests/refinery/admin
+ spec/requests/refinery/admin/blog
+ spec/requests/refinery/admin/blog/comments_spec.rb
+ spec/requests/refinery/admin/blog/posts_spec.rb
+ spec/requests/refinery/blog
+ spec/requests/refinery/blog/categories_spec.rb
+ spec/requests/refinery/blog/posts_spec.rb
spec/spec_helper.rb
spec/support
spec/support/database_cleaner.rb
spec/support/devise.rb
- spec/support/factories
- spec/support/factories/blog_categories.rb
- spec/support/factories/blog_comments.rb
- spec/support/factories/blog_posts.rb
spec/support/refinery.rb
todo.md
)
diff --git a/spec/dummy/.gitignore b/spec/dummy/.gitignore
index d80f252..c698a36 100644
--- a/spec/dummy/.gitignore
+++ b/spec/dummy/.gitignore
@@ -31,6 +31,8 @@ public/themes/*
# Public Cache
public/javascripts/cache
public/stylesheets/cache
+public/*.html
+public/refinery/cache
# Vendor Cache
vendor/cache
diff --git a/spec/support/factories/blog_categories.rb b/spec/factories/blog_categories.rb
index 31ec28b..9ee4f16 100644
--- a/spec/support/factories/blog_categories.rb
+++ b/spec/factories/blog_categories.rb
@@ -1,5 +1,5 @@
FactoryGirl.define do
- factory :blog_category, :class => 'refinery/blog_category' do
+ factory :blog_category, :class => Refinery::BlogCategory do
sequence(:title) { |n| "Shopping #{n}" }
end
end
diff --git a/spec/factories/blog_comments.rb b/spec/factories/blog_comments.rb
new file mode 100644
index 0000000..9818c07
--- /dev/null
+++ b/spec/factories/blog_comments.rb
@@ -0,0 +1,19 @@
+FactoryGirl.define do
+ factory :blog_comment, :class => Refinery::BlogComment do
+ name "Joe Commenter"
+ sequence(:email) { |n| "person#{n}@example.com" }
+ body "Which one is the best for picking up new shoes?"
+ association :post, :factory => :blog_post
+
+ trait :approved do
+ state 'approved'
+ end
+
+ trait :rejected do
+ state 'rejected'
+ end
+
+ factory :approved_comment, :traits => [:approved]
+ factory :rejected_comment, :traits => [:rejected]
+ end
+end
diff --git a/spec/support/factories/blog_posts.rb b/spec/factories/blog_posts.rb
index 4586b36..0b8b888 100644
--- a/spec/support/factories/blog_posts.rb
+++ b/spec/factories/blog_posts.rb
@@ -1,5 +1,5 @@
FactoryGirl.define do
- factory :blog_post, :class => 'refinery/blog_post' do
+ factory :blog_post, :class => Refinery::BlogPost do
sequence(:title) { |n| "Top #{n} Shopping Centers in Chicago" }
body "These are the top ten shopping centers in Chicago. You're going to read a long blog post about them. Come to peace with it."
draft false
diff --git a/spec/requests/refinery/blog/posts_spec.rb b/spec/requests/refinery/blog/posts_spec.rb
index eba6131..4017d03 100644
--- a/spec/requests/refinery/blog/posts_spec.rb
+++ b/spec/requests/refinery/blog/posts_spec.rb
@@ -5,36 +5,83 @@ module Refinery
login_refinery_user
context "when has blog posts" do
- let(:blog_post) { FactoryGirl.create(:blog_post, :title => "Refinery CMS blog post") }
+ let!(:blog_post) { FactoryGirl.create(:blog_post, :title => "Refinery CMS blog post") }
it "should display blog post" do
visit blog_post_path(blog_post)
- page.should have_content("Refinery CMS blog post")
+
+ page.should have_content(blog_post.title)
end
it "should display the blog rss feed" do
get blog_rss_feed_path
+
response.should be_success
response.content_type.should eq("application/rss+xml")
end
end
-
+
describe "list tagged posts" do
context "when has tagged blog posts" do
before(:each) do
@tag_name = "chicago"
@blog_post = FactoryGirl.create(:blog_post,
- :title => "I Love my city",
- :tag_list => @tag_name)
- tag = ::Refinery::BlogPost.tag_counts_on(:tags).first
- visit tagged_posts_path(tag.id, @tag_name.parameterize)
+ :title => "I Love my city",
+ :tag_list => @tag_name)
+ @tag = ::Refinery::BlogPost.tag_counts_on(:tags).first
end
it "should have one tagged post" do
+ visit tagged_posts_path(@tag.id, @tag_name.parameterize)
+
page.should have_content(@tag_name)
page.should have_content(@blog_post.title)
end
end
end
+
+ describe "#show" do
+ context "when has no comments" do
+ let!(:blog_post) { FactoryGirl.create(:blog_post) }
+
+ it "should display the blog post" do
+ visit blog_post_path(blog_post)
+
+ page.should have_content(blog_post.title)
+ page.should have_content(blog_post.body)
+ end
+ end
+
+ context "when has approved comments" do
+ let!(:approved_comment) { FactoryGirl.create(:approved_comment) }
+
+ it "should display the comments" do
+ visit blog_post_path(approved_comment.post)
+
+ page.should have_content(approved_comment.body)
+ page.should have_content("Posted by #{approved_comment.name}")
+ end
+ end
+
+ context "when has rejected comments" do
+ let!(:rejected_comment) { FactoryGirl.create(:rejected_comment) }
+
+ it "should not display the comments" do
+ visit blog_post_path(rejected_comment.post)
+
+ page.should_not have_content(rejected_comment.body)
+ end
+ end
+
+ context "when has new comments" do
+ let!(:blog_comment) { FactoryGirl.create(:blog_comment) }
+
+ it "should not display the comments" do
+ visit blog_post_path(blog_comment.post)
+
+ page.should_not have_content(blog_comment.body)
+ end
+ end
+ end
end
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index a3fe107..b8df592 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -6,34 +6,39 @@ def setup_environment
# need to restart spork for it take effect.
# Configure Rails Environment
- ENV["RAILS_ENV"] ||= 'test'
+ ENV["RAILS_ENV"] = 'test'
require File.expand_path("../dummy/config/environment.rb", __FILE__)
require 'rspec/rails'
require 'capybara/rspec'
- require 'factory_girl'
- require 'refinerycms-testing'
-
+
Rails.backtrace_cleaner.remove_silencers!
- Dir[
- File.expand_path("../support/**/*.rb", __FILE__),
- File.expand_path("../factories/**/*.rb", __FILE__)
- ].each {|f| require f}
-
RSpec.configure do |config|
config.mock_with :rspec
- config.use_transactional_fixtures = false
end
end
-def each_run
+def each_run
+ require 'factory_girl_rails'
+ require 'refinerycms-testing'
+
+ Dir[File.expand_path("../../app/models/**/*.rb", __FILE__)].each do |model|
+ load model
+ end
+
+ Dir[
+ File.expand_path("../support/**/*.rb", __FILE__),
+ File.expand_path("../factories/**/*.rb", __FILE__)
+ ].each {|f| require f}
end
# If spork is available in the Gemfile it'll be used but we don't force it.
unless (begin; require 'spork'; rescue LoadError; nil end).nil?
Spork.prefork do
setup_environment
+
+ ActiveSupport::Dependencies.clear
end
Spork.each_run do
diff --git a/spec/support/database_cleaner.rb b/spec/support/database_cleaner.rb
index a104c53..40acbc9 100644
--- a/spec/support/database_cleaner.rb
+++ b/spec/support/database_cleaner.rb
@@ -1,6 +1,8 @@
require 'database_cleaner'
RSpec.configure do |config|
+ config.use_transactional_fixtures = false
+
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
diff --git a/spec/support/factories/blog_comments.rb b/spec/support/factories/blog_comments.rb
deleted file mode 100644
index 0bb5206..0000000
--- a/spec/support/factories/blog_comments.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-FactoryGirl.define do
- factory :blog_comment, :class => 'refinery/blog_comment' do
- name "Joe Commenter"
- sequence(:email) { |n| "person#{n}@example.com" }
- body "Which one is the best for picking up new shoes?"
- association :post, :factory => :blog_post
- end
-end