cirandas.net

ref: master

test/unit/recent_documents_block_test.rb


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
require_relative "../test_helper"

class RecentDocumentsBlockTest < ActiveSupport::TestCase

  include ActionView::Helpers::OutputSafetyHelper

  def setup
    @articles = []
    @profile = create_user('testinguser').person
    @profile.articles.destroy_all
    ['first', 'second', 'third', 'fourth', 'fifth'].each do |name|
      article = @profile.articles.create!(:name => name)
      @articles << article
    end

    box = Box.new
    box.owner = profile
    box.save!


    @block = RecentDocumentsBlock.new
    @block.box_id = box.id
    @block.save!

  end
  attr_reader :block, :profile, :articles

  should 'describe itself' do
    assert_not_equal Block.description, RecentDocumentsBlock.description
  end

  should 'provide a default title' do
    assert_not_equal Block.new.default_title, RecentDocumentsBlock.new.default_title
  end

  should 'list recent documents' do
    assert_equivalent block.docs, articles
  end

  should 'respect the maximum number of items as configured' do
    block.limit = 3

    list = block.docs

    assert_includes list, articles[4]
    assert_includes list, articles[3]
    assert_includes list, articles[2]
    assert_not_includes list, articles[1]
    assert_not_includes list, articles[0]
  end

  should 'store limit as a number' do
    block.limit = ''
    assert block.limit.is_a?(Fixnum)
  end

  should 'have a non-zero default' do
    block.limit = nil
    assert block.limit > 0
  end

  should 'be able to update display setting' do
    assert @block.update!(:display => 'always')
    @block.reload
    assert_equal 'always', @block.display
  end

  should 'return the max value in the range between zero and limit' do
    block = RecentDocumentsBlock.new
    assert_equal 5, block.get_limit
  end

  should 'return 0 if limit of the block is negative' do
    block = RecentDocumentsBlock.new
    block.limit = -5
    assert_equal 0, block.get_limit
  end
end

require 'boxes_helper'

class RecentDocumentsBlockViewTest < ActionView::TestCase
  include BoxesHelper

  def setup
    @articles = []
    @profile = create_user('testinguser').person
    @profile.articles.destroy_all
    ['first', 'second', 'third', 'fourth', 'fifth'].each do |name|
      article = @profile.articles.create!(:name => name)
      @articles << article
    end

    box = Box.new
    box.owner = profile
    box.save!


    @block = RecentDocumentsBlock.new
    @block.box_id = box.id
    @block.save!

  end
  attr_reader :block, :profile, :articles

  should 'link to documents' do
    articles.each do |a|
      ActionView::Base.any_instance.expects(:link_to).with(a.title, a.url)
    end
    ActionView::Base.any_instance.stubs(:block_title).returns("")
    ActionView::Base.any_instance.stubs(:content_tag).returns("")
    ActionView::Base.any_instance.stubs(:li).returns("")

    render_block_content(block)
  end

  should 'display a link to sitemap with title "All content"' do
    ActionView::Base.any_instance.expects(:link_to).with('All content', :controller => 'profile', :action => 'sitemap', :profile => profile.identifier)
    ActionView::Base.any_instance.expects(:_).with('All content').returns('All content')

    render_block_footer(block)
  end

  should 'not display link to sitemap when owner is environment' do
    block = RecentDocumentsBlock.new
    box = mock
    block.expects(:box).returns(box).at_least_once
    box.expects(:owner).returns(Environment.new).at_least_once
    assert_equal '', render_block_footer(block)
  end

  should 'return articles in api_content' do
    profile = fast_create(Community)
    article = fast_create(TextArticle, profile_id: profile.id)
    block = RecentDocumentsBlock.new
    block.stubs(:owner).returns(profile)
    assert_equal [article.id], block.api_content['articles'].map {|a| a[:id]}
  end
end