comments_controller_spec.rb
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:4k
源码类别:

Ajax

开发平台:

Others

  1. require File.dirname(__FILE__) + '/../spec_helper'
  2. describe "All Requests", :shared => true do
  3.   before do
  4.     @comment  = mock_model(Comment,
  5.                   :save                       => true,
  6.                   :author                     => 'bob',
  7.                   :email                      => 'bob@home',
  8.                   :url                        => 'http://bobs.home/')
  9.     @article  = contents(:article1)
  10.     @blog     = blogs(:default)
  11.   end
  12. end
  13. describe "General Comment Creation", :shared => true do
  14.   it_should_behave_like "All Requests"
  15.   it "should assign the new comment to @comment" do
  16.     make_the_request
  17.     assigns[:comment].should == Comment.find_by_author_and_body_and_article_id('bob', 'content', contents(:article1).id)
  18.   end
  19.   it "should assign the article to @article" do
  20.     make_the_request
  21.     assigns[:article].should == @article
  22.   end
  23.   it "should save the comment" do
  24.     lambda do
  25.       make_the_request
  26.     end.should change(Comment, :count).by(1)
  27.   end
  28.   it "should set the author" do
  29.     make_the_request
  30.     contents(:article1).comments.last.author.should == 'bob'
  31.   end
  32.   it "should set an author cookie" do
  33.     make_the_request
  34.     cookies["author"].should == 'bob'
  35.   end
  36.   it "should set a gravatar_id cookie" do
  37.     make_the_request(:body => 'content', :author => 'bob',
  38.                      :email => 'bob@home', :url => 'http://bobs.home/')
  39.     cookies["gravatar_id"].should == Digest::MD5.hexdigest('bob@home')
  40.   end
  41.   it "should set a url cookie" do
  42.     make_the_request(:body => 'content', :author => 'bob',
  43.                      :email => 'bob@home', :url => 'http://bobs.home/')
  44.     cookies["url"].should == 'http://bobs.home/'
  45.   end
  46.   it "should create a comment" do
  47.     make_the_request
  48.   end
  49. end
  50. describe CommentsController, 'create' do
  51.   it_should_behave_like "General Comment Creation"
  52.   def make_the_request(comment = {:body => 'content', :author => 'bob'})
  53.     post :create, :comment => comment, :article_id => contents(:article1).id
  54.   end
  55.   it "should redirect to the article" do
  56.     make_the_request
  57.     response.should redirect_to("#{blogs(:default).base_url}/#{contents(:article1).created_at.year}/#{sprintf("%.2d", contents(:article1).created_at.month)}/#{sprintf("%.2d", contents(:article1).created_at.day)}/#{contents(:article1).permalink}")
  58.   end
  59. end
  60. describe CommentsController, 'AJAX creation' do
  61.   it_should_behave_like "General Comment Creation"
  62.   def make_the_request(comment = {:body => 'content', :author => 'bob'})
  63.     xhr :post, :create, :comment => comment, :article_id => contents(:article1).id
  64.   end
  65.   it "should render the comment partial" do
  66.     make_the_request
  67.     response.should render_template("/articles/_comment")
  68.   end
  69. end
  70. describe CommentsController, 'scoped index' do
  71.   it_should_behave_like "All Requests"
  72.   it "GET 2007/10/11/slug/comments should redirect to /2007/10/11/slug#comments" do
  73.     #content(:article1) => Time.now - 2 days
  74.     get 'index', :article_id => @article.id
  75.     response.should redirect_to("#{blogs(:default).base_url}/#{contents(:article1).created_at.year}/#{sprintf("%.2d", contents(:article1).created_at.month)}/#{sprintf("%.2d", contents(:article1).created_at.day)}/#{contents(:article1).permalink}#comments")
  76.   end
  77.   it "GET /2007/10/11/slug/comments.atom should return an atom feed" do
  78.     get :index, :format => 'atom', :article_id => contents(:article1).id
  79.     response.should be_success
  80.     response.should render_template("articles/_atom_feed")
  81.   end
  82.   it "GET /2007/10/11/slug/comments.rss should return an rss feed" do
  83.     get :index, :format => 'rss', :article_id => contents(:article1).id
  84.     response.should be_success
  85.     response.should render_template("articles/_rss20_feed")
  86.   end
  87. end
  88. describe CommentsController, 'GET /comments' do
  89.   it "should be successful" do
  90.     get 'index'
  91.     response.should be_success
  92.   end
  93.   it "should not bother fetching any comments " do
  94.     mock_comment = mock(Comment)
  95.     mock_comment.should_not_receive(:published_comments)
  96.     mock_comment.should_not_receive(:rss_limit_params)
  97.     get 'index'
  98.   end
  99. end
  100. describe CommentsController, "GET /comments.:format" do
  101.   it ":format => 'atom' should return an atom feed" do
  102.     get 'index', :format => 'atom'
  103.     response.should be_success
  104.     response.should render_template("articles/_atom_feed")
  105.   end
  106.   it ":format => 'rss' should return an rss feed"do
  107.     get 'index', :format => 'rss'
  108.     response.should be_success
  109.     response.should render_template("articles/_rss20_feed")
  110.   end
  111. end