article_block_test.rb
4.35 KB
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
140
141
142
143
144
145
146
147
148
149
require_relative "../test_helper"
class ArticleBlockTest < ActiveSupport::TestCase
include ApplicationHelper
should 'describe itself' do
assert_not_equal Block.description, ArticleBlock.description
end
should "take article's content" do
block = ArticleBlock.new
article = mock
article.expects(:to_html).returns("Article content")
block.stubs(:article).returns(article)
assert_match(/Article content/, instance_eval(&block.content))
end
should 'refer to an article' do
profile = create_user('testuser').person
article = profile.articles.build(:name => 'test article')
article.save!
block = ArticleBlock.new
block.article = article
block.save!
assert_equal article, Block.find(block.id).article
end
should 'not crash when referenced article is removed' do
person = create_user('testuser').person
a = person.articles.create!(:name => 'test')
block = ArticleBlock.create.tap do |b|
b.article = a
end
person.boxes.first.blocks << block
block.save!
a.destroy
block.reload
assert_nil block.article
end
should 'nullify reference to unexisting article' do
Article.delete_all
block = ArticleBlock.new
block.article_id = 999
block.article
assert_nil block.article_id
end
should "take available articles with a person as the box owner" do
person = create_user('testuser').person
person.articles.delete_all
assert_equal [], person.articles
a = person.articles.create!(:name => 'test')
block = ArticleBlock.create.tap do |b|
b.article = a
end
person.boxes.first.blocks << block
block.save!
block.reload
assert_equal [a],block.available_articles
end
should "take available articles with an environment as the box owner" do
env = Environment.create!(:name => 'test env')
env.profiles.each { |profile| profile.articles.destroy_all }
assert_equal [], env.articles
community = fast_create(Community)
a = fast_create(TextArticle, :profile_id => community.id, :name => 'test')
env.portal_community=community
env.save
block = create(ArticleBlock, :article => a)
env.boxes.first.blocks << block
block.save!
block.reload
assert_equal [a],block.available_articles
end
should "display empty title if title is blank" do
block = ArticleBlock.new
article = mock
article.expects(:to_html).returns("Article content")
block.expects(:title).returns('')
block.stubs(:article).returns(article)
assert_equal "<h3 class=\"block-title empty\"><span></span></h3>Article content", instance_eval(&block.content)
end
should "display title if defined" do
block = ArticleBlock.new
article = mock
article.expects(:to_html).returns("Article content")
block.expects(:title).returns('Article title')
block.stubs(:article).returns(article)
assert_equal "<h3 class=\"block-title\"><span>Article title</span></h3>Article content", instance_eval(&block.content)
end
should 'display image if article is an image' do
profile = create_user('testuser').person
block = ArticleBlock.new
image = create(UploadedFile, :profile => profile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'))
block.article = image
block.save!
assert_tag_in_string instance_eval(&block.content),
:tag => 'img',
:attributes => {
:src => image.public_filename(:display),
:class => /file-image/
}
end
should 'not display gallery pages navigation in content' do
profile = create_user('testuser').person
block = ArticleBlock.new
gallery = fast_create(Gallery, :profile_id => profile.id)
image = create(UploadedFile, :profile => profile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => gallery)
block.article = image
block.save!
assert_no_match(/Previous/, instance_eval(&block.content))
end
should 'display link to archive if article is an archive' do
profile = create_user('testuser').person
block = ArticleBlock.new
file = create(UploadedFile, :profile => profile, :uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain'))
block.article = file
block.save!
assert_tag_in_string instance_eval(&block.content), :tag => 'a', :content => 'test.txt'
end
protected
include NoosferoTestHelper
end