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

Ajax

开发平台:

Others

  1. require File.dirname(__FILE__) + '/../spec_helper'
  2. describe TagsController, "/index" do
  3.   before(:each) do
  4.     Tag.stub!(:find_all_with_article_counters) 
  5.       .and_return(mock('tags', :null_object => true))
  6.     this_blog = Blog.default
  7.     controller.stub!(:this_blog) 
  8.       .and_return(this_blog)
  9.   end
  10.   def do_get
  11.     get 'index'
  12.   end
  13.   it "should be successful" do
  14.     do_get
  15.     response.should be_success
  16.   end
  17.   it "should render :index"
  18.   if false
  19.     controller.stub!(:template_exists?) 
  20.       .and_return(true)
  21.     do_get
  22.     response.should render_template(:index)
  23.   end
  24.   it "should fall back to articles/groupings" do
  25.     controller.should_receive(:template_exists?) 
  26.       .with() 
  27.       .and_return(false)
  28.     do_get
  29.     response.should render_template('articles/groupings')
  30.   end
  31. end
  32. describe TagsController, '/articles/tag/foo' do
  33.   before(:each) do
  34.     @tag = mock('tag', :null_object => true)
  35.     @tag.stub!(:empty?) 
  36.       .and_return(false)
  37.     @tag.stub!(:name).and_return('foo')
  38.     Tag.stub!(:find_by_permalink) 
  39.       .and_return(@tag)
  40.     this_blog = Blog.default
  41.     controller.stub!(:this_blog) 
  42.       .and_return(this_blog)
  43.   end
  44.   def do_get
  45.     get 'show', :id => 'foo'
  46.   end
  47.   it 'should be successful' do
  48.     do_get()
  49.     response.should be_success
  50.   end
  51.   it 'should call Tag.find_by_permalink' do
  52.     Tag.should_receive(:find_by_permalink) 
  53.       .with('foo') 
  54.       .and_raise(ActiveRecord::RecordNotFound)
  55.     lambda do
  56.       do_get
  57.     end.should raise_error(ActiveRecord::RecordNotFound)
  58.   end
  59.   it 'should render :show by default'
  60.   if false
  61.     controller.stub!(:template_exists?) 
  62.       .and_return(true)
  63.     do_get
  64.     response.should render_template(:show)
  65.   end
  66.   it 'should fall back to rendering articles/index' do
  67.     controller.should_receive(:template_exists?) 
  68.       .with() 
  69.       .and_return(false)
  70.     do_get
  71.     response.should render_template('articles/index')
  72.   end
  73.   it 'should set the page title to "Tag foo"' do
  74.     do_get
  75.     assigns[:page_title].should == 'Tag foo, everything about foo'
  76.   end
  77.   it 'should render an error when the tag is empty' do
  78.     @tag.should_receive(:articles) 
  79.       .and_return([])
  80.     do_get
  81.     response.status.should == "301 Moved Permanently"
  82.     response.should redirect_to(Blog.default.base_url)
  83.   end
  84.   it 'should render the atom feed for /articles/tag/foo.atom' do
  85.     get 'show', :id => 'foo', :format => 'atom'
  86.     response.should render_template('articles/_atom_feed')
  87.   end
  88.   it 'should render the rss feed for /articles/tag/foo.rss' do
  89.     get 'show', :id => 'foo', :format => 'rss'
  90.     response.should render_template('articles/_rss20_feed')
  91.   end
  92. end
  93. describe TagsController, 'with integrate_view' do
  94.   integrate_views
  95.   before(:each) do
  96.     get 'show', :id => 'foo'
  97.   end
  98.   it 'should have good rss feed link in head' do
  99.     response.should have_tag('head>link[href=?]','http://test.host/tag/foo.rss')
  100.   end
  101.   it 'should have good atom feed link in head' do
  102.     response.should have_tag('head>link[href=?]','http://test.host/tag/foo.atom')
  103.   end
  104. end
  105. ## Old tests that still need conversion
  106. #   it "test_autodiscovery_tag" do
  107. #     get :tag, :id => 'hardware'
  108. #     assert_response :success
  109. #     assert_select 'link[title=RSS]' do
  110. #       assert_select '[rel=alternate]'
  111. #       assert_select '[type=application/rss+xml]'
  112. #       assert_select '[href=http://test.host/articles/tag/hardware.rss]'
  113. #     end
  114. #     assert_select 'link[title=Atom]' do
  115. #       assert_select '[rel=alternate]'
  116. #       assert_select '[type=application/atom+xml]'
  117. #       assert_select '[href=http://test.host/articles/tag/hardware.atom]'
  118. #     end
  119. #   end