software_tab_data_block_test.rb 2.07 KB
require File.dirname(__FILE__) + '/../../../../test/test_helper'
require File.dirname(__FILE__) + '/../helpers/plugin_test_helper'

class SoftwareTabDataBlockTest < ActiveSupport::TestCase
  include PluginTestHelper

  def setup
    @software_info = create_software_info("A new Software")
    @software_info.save!

    @soft_community = @software_info.community

    @soft_community.blogs << Blog.new(:name=>"First blog")
    @soft_community.blogs << Blog.new(:name=>"Second blog")
    @soft_community.save!

    SoftwareTabDataBlock.any_instance.stubs(:owner).returns(@soft_community)
  end

  should "get its owner blogs" do
    assert_equal @soft_community.blogs, SoftwareTabDataBlock.new.blogs
  end

  should "actual_blog get the first blog if it is not defined" do
    assert_equal @soft_community.blogs.first, SoftwareTabDataBlock.new.actual_blog
  end

  should "actual_blog get the defined community blog" do
    last_blog = @soft_community.blogs.last
    soft_tab_data = create_software_tab_data_block(last_blog)

    assert_equal last_blog, soft_tab_data.actual_blog
  end

  should "get the actual_blog posts" do
    last_blog = @soft_community.blogs.last
    soft_tab_data = create_software_tab_data_block(last_blog)
    craete_sample_posts(last_blog, 2)

    assert_equal last_blog.posts.first.id, soft_tab_data.posts.first.id
    assert_equal last_blog.posts.last.id, soft_tab_data.posts.last.id
  end

  should "limit the number of posts" do
    last_blog = @soft_community.blogs.last
    soft_tab_data = create_software_tab_data_block(last_blog)
    craete_sample_posts(last_blog, 6)

    assert_equal SoftwareTabDataBlock::TOTAL_POSTS_DYSPLAYED, soft_tab_data.posts.count
  end

  private

  def create_software_tab_data_block blog
    soft_tab_data = SoftwareTabDataBlock.new
    soft_tab_data.displayed_blog = blog.id
    soft_tab_data
  end

  def craete_sample_posts blog, quantity=1
    quantity.times do |number|
      TinyMceArticle.create! :name=>"Simple post #{number}", :body=>"Simple post #{number}",
                             :parent=> blog, :profile=>@soft_community
    end
  end
end