macros_helper_test.rb
4.16 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
require File.dirname(__FILE__) + '/../test_helper'
class MacrosHelperTest < ActiveSupport::TestCase
include MacrosHelper
include ApplicationHelper
include ActionView::Helpers::FormOptionsHelper
include ActionView::Helpers::FormTagHelper
include ActionView::Helpers::TagHelper
CONFIG = {
:params => [
{ :name => :identifier, :type => 'text'},
{ :name => :size, :type => 'select',
:values => [
[_('Big'), :big],
[_('Icon'), :icon],
[_('Minor'), :minor],
[_('Portrait'), :portrait],
[_('Thumb'), :thumb]
],
:default => :portrait
}
],
:title => _('Profile Image Link')
}
class Plugin1 < Noosfero::Plugin
end
def setup
@environment = Environment.default
@environment.enable_plugin(Plugin1)
@plugins = Noosfero::Plugin::Manager.new(@environment, self)
end
attr_accessor :environment
should 'generate html for macro configuration' do
class Plugin1::Macro < Noosfero::Plugin::Macro
def self.configuration
CONFIG
end
end
html = macro_configuration_dialog(Plugin1::Macro)
assert_tag_in_string html, :tag => 'label', :content => _('Identifier')
assert_tag_in_string html, :tag => 'input', :attributes => {:name => 'identifier'}
assert_tag_in_string html, :tag => 'label', :content => 'size'.humanize
assert_tag_in_string html, :tag => 'select', :attributes => {:name => 'size'}, :descendant => {:tag => 'option', :attributes => {:value => 'big'}, :content => _('Big')}
assert_tag_in_string html, :tag => 'select', :attributes => {:name => 'size'}, :descendant => {:tag => 'option', :attributes => {:value => 'icon'}, :content => _('Icon')}
assert_tag_in_string html, :tag => 'select', :attributes => {:name => 'size'}, :descendant => {:tag => 'option', :attributes => {:value => 'minor'}, :content => _('Minor')}
assert_tag_in_string html, :tag => 'select', :attributes => {:name => 'size'}, :descendant => {:tag => 'option', :attributes => {:value => 'portrait', :selected => true}, :content => _('Portrait')}
assert_tag_in_string html, :tag => 'select', :attributes => {:name => 'size'}, :descendant => {:tag => 'option', :attributes => {:value => 'thumb'}, :content => _('Thumb')}
end
should 'get macro title' do
class Plugin1::Macro < Noosfero::Plugin::Macro
def self.configuration
CONFIG
end
end
title = macro_title(Plugin1::Macro)
assert _('Profile Image Link'), title
end
class Plugin1::Macro1 < Noosfero::Plugin::Macro
def self.configuration
{}
end
end
class Plugin1::Macro2 < Noosfero::Plugin::Macro
def self.configuration
{:icon_path => 'icon.png'}
end
end
should 'get only macros in menu' do
assert_includes macros_in_menu, Plugin1::Macro1
assert_not_includes macros_in_menu, Plugin1::Macro2
end
should 'get only macros with buttons' do
assert_includes macros_with_buttons, Plugin1::Macro2
assert_not_includes macros_with_buttons, Plugin1::Macro1
end
should 'skip macro config dialog and call generator directly' do
class Plugin1::Macro < Noosfero::Plugin::Macro
def self.configuration
{:skip_dialog => true, :generator => '', :params => []}
end
end
assert_equal 'function(){}', generate_macro_config_dialog(Plugin1::Macro)
end
should 'include js files' do
class Plugin1::Macro < Noosfero::Plugin::Macro
def self.configuration
{:js_files => 'macro.js' }
end
end
assert_equal "<script src=\"#{Plugin1.public_path('macro.js')}\" type=\"text/javascript\"></script>", include_macro_js_files
end
should 'get macro css files' do
class Plugin1::Macro < Noosfero::Plugin::Macro
def self.configuration
{:css_files => 'macro.css' }
end
def self.public_path(file)
'macro.css'
end
end
assert_equal Plugin1.public_path('macro.css'), macro_css_files
end
should 'get macro specific generator' do
class Plugin1::Macro < Noosfero::Plugin::Macro
def self.configuration
{:generator => 'macro_generator' }
end
end
assert_equal 'macro_generator', macro_generator(Plugin1::Macro)
end
end