masterview 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +31 -1
- data/README +70 -69
- data/RELEASE_NOTES +70 -64
- data/Rakefile +26 -27
- data/TODO +13 -29
- data/doc/about.html +246 -0
- data/doc/configuration.html +49 -36
- data/doc/developer.html +423 -41
- data/doc/directives.html +139 -51
- data/doc/guide.html +19 -9
- data/doc/index.html +90 -224
- data/doc/installation.html +36 -28
- data/doc/media_list.html +30 -20
- data/doc/simple_diagram.html +3 -5
- data/doc/stylesheets/masterview.css +16 -1
- data/examples/rails_app_config/masterview/settings.rb +2 -1
- data/init.rb +1 -1
- data/lib/#ChangeLog# +6 -0
- data/lib/masterview/analyzer.rb +48 -34
- data/lib/masterview/attr_string_parser.rb +5 -1
- data/lib/masterview/case_insensitive_hash.rb +69 -0
- data/lib/masterview/{pathname_extensions.rb → core_ext/pathname.rb} +0 -0
- data/lib/masterview/{string_extensions.rb → core_ext/string.rb} +0 -0
- data/lib/masterview/deprecated/directive_base.rb +362 -0
- data/lib/masterview/directive_base.rb +201 -179
- data/lib/masterview/directive_dsl.rb +457 -0
- data/lib/masterview/directive_helpers.rb +28 -141
- data/lib/masterview/directive_load_path.rb +388 -0
- data/lib/masterview/directive_metadata.rb +377 -0
- data/lib/masterview/directive_registry.rb +259 -69
- data/lib/masterview/directives/.metadata +16 -0
- data/lib/masterview/directives/attr.rb +9 -8
- data/lib/masterview/directives/block.rb +11 -14
- data/lib/masterview/directives/check_box.rb +13 -18
- data/lib/masterview/directives/collection_select.rb +15 -29
- data/lib/masterview/directives/content.rb +9 -3
- data/lib/masterview/directives/else.rb +15 -13
- data/lib/masterview/directives/elsif.rb +14 -13
- data/lib/masterview/directives/eval.rb +20 -0
- data/lib/masterview/directives/form.rb +56 -9
- data/lib/masterview/directives/form_remote.rb +26 -0
- data/lib/masterview/directives/global_inline_erb.rb +10 -14
- data/lib/masterview/directives/hidden_field.rb +11 -20
- data/lib/masterview/directives/if.rb +13 -12
- data/lib/masterview/directives/image_tag.rb +20 -28
- data/lib/masterview/directives/import.rb +5 -12
- data/lib/masterview/directives/import_render.rb +7 -19
- data/lib/masterview/directives/insert_generated_comment.rb +8 -11
- data/lib/masterview/directives/javascript_include.rb +21 -12
- data/lib/masterview/directives/link_to.rb +14 -8
- data/lib/masterview/directives/link_to_function.rb +22 -0
- data/lib/masterview/directives/link_to_if.rb +15 -13
- data/lib/masterview/directives/link_to_remote.rb +13 -8
- data/lib/masterview/directives/omit_tag.rb +32 -16
- data/lib/masterview/directives/password_field.rb +10 -22
- data/lib/masterview/directives/radio_button.rb +11 -22
- data/lib/masterview/directives/replace.rb +7 -8
- data/lib/masterview/directives/select.rb +11 -24
- data/lib/masterview/directives/stylesheet_link.rb +20 -12
- data/lib/masterview/directives/submit.rb +11 -5
- data/lib/masterview/directives/text_area.rb +10 -23
- data/lib/masterview/directives/text_field.rb +10 -22
- data/lib/masterview/exceptions.rb +21 -0
- data/lib/masterview/extras/app/controllers/masterview_controller.rb +102 -75
- data/lib/masterview/extras/app/views/layouts/masterview_admin.rhtml +24 -23
- data/lib/masterview/extras/app/views/layouts/masterview_admin_config.rhtml +81 -0
- data/lib/masterview/extras/app/views/masterview/admin/configuration.rhtml +5 -1
- data/lib/masterview/extras/app/views/masterview/admin/create.rhtml +2 -2
- data/lib/masterview/extras/app/views/masterview/admin/directives.rhtml +5 -0
- data/lib/masterview/extras/app/views/masterview/admin/features.rhtml +5 -79
- data/lib/masterview/extras/app/views/masterview/admin/interact.rhtml +5 -0
- data/lib/masterview/extras/app/views/masterview/admin/list.rhtml +3 -71
- data/lib/masterview/extras/init_mv_admin_pages.rb +42 -23
- data/lib/masterview/filter_helpers.rb +26 -0
- data/lib/masterview/initializer.rb +99 -53
- data/lib/masterview/io.rb +19 -15
- data/lib/masterview/keyword_expander.rb +7 -2
- data/lib/masterview/masterview_info.rb +229 -23
- data/lib/masterview/masterview_version.rb +2 -2
- data/lib/masterview/parser.rb +275 -105
- data/lib/masterview/parser_helpers.rb +54 -0
- data/lib/masterview/rails_ext/action_controller_erb_direct.rb +29 -0
- data/lib/masterview/rails_ext/action_controller_reparse_checking.rb +27 -0
- data/lib/masterview/{extras/init_rails_erb_mv_direct.rb → rails_ext/action_view_erb_direct.rb} +12 -59
- data/lib/masterview/template_spec.rb +3 -2
- data/lib/masterview.rb +21 -12
- data/lib/rexml/parsers/baseparser_with_doctype_fix.rb +473 -0
- data/lib/rexml/parsers/sax2parser_with_doctype_fix.rb +243 -0
- data/test/directive_test_helper.rb +135 -0
- data/test/fixtures/directives/id_check.rb +18 -0
- data/test/fixtures/directives/test_directive_events.rb +70 -0
- data/test/test_helper.rb +18 -5
- data/test/tmp/views/layouts/product.rhtml +10 -10
- data/test/tmp/views/product/_form.rhtml +4 -4
- data/test/tmp/views/product/_product.rhtml +3 -3
- data/test/tmp/views/product/destroy.rhtml +5 -5
- data/test/tmp/views/product/edit.rhtml +4 -4
- data/test/tmp/views/product/list.rhtml +3 -3
- data/test/tmp/views/product/new.rhtml +4 -4
- data/test/tmp/views/product/show.rhtml +2 -2
- data/test/unit/attr_string_parser_test.rb +105 -0
- data/test/unit/case_insensitive_hash_mod_test.rb +104 -0
- data/test/unit/config_settings_test.rb +13 -1
- data/test/unit/default_generate_mio_filter_test.rb +3 -3
- data/test/unit/deprecated_directive_base_test.rb +30 -0
- data/test/unit/directive_attr_test.rb +111 -35
- data/test/unit/directive_base_test.rb +520 -1
- data/test/unit/directive_block_test.rb +30 -22
- data/test/unit/directive_content_test.rb +24 -11
- data/test/unit/directive_else_test.rb +18 -15
- data/test/unit/directive_elsif_test.rb +17 -15
- data/test/unit/directive_form_remote_test.rb +59 -0
- data/test/unit/directive_form_test.rb +31 -39
- data/test/unit/directive_global_inline_erb_test.rb +28 -17
- data/test/unit/directive_grid_test_notready.rb +38 -0
- data/test/unit/directive_helpers_test.rb +39 -0
- data/test/unit/directive_hidden_field_test.rb +44 -29
- data/test/unit/directive_if_test.rb +10 -7
- data/test/unit/directive_image_tag_test.rb +69 -61
- data/test/unit/directive_import_render_test.rb +28 -38
- data/test/unit/directive_import_test.rb +16 -14
- data/test/unit/directive_insert_generated_comment_test.rb +32 -0
- data/test/unit/directive_javascript_include_test.rb +40 -43
- data/test/unit/directive_link_to_function_test.rb +40 -0
- data/test/unit/directive_link_to_if_test.rb +52 -12
- data/test/unit/directive_link_to_remote_test.rb +58 -0
- data/test/unit/directive_link_to_test.rb +46 -31
- data/test/unit/directive_load_path_test.rb +257 -0
- data/test/unit/directive_metadata_test.rb +313 -0
- data/test/unit/directive_omit_tag_test.rb +73 -21
- data/test/unit/directive_password_field_test.rb +44 -38
- data/test/unit/directive_registry_test.rb +44 -0
- data/test/unit/directive_replace_test.rb +28 -12
- data/test/unit/directive_stylesheet_link_test.rb +43 -36
- data/test/unit/directive_submit_test.rb +29 -30
- data/test/unit/directive_text_area_test.rb +40 -36
- data/test/unit/directive_text_field_test.rb +44 -38
- data/test/unit/example_directive_child_events_test.rb +41 -0
- data/test/unit/example_test.rb +31 -4
- data/test/unit/file_mio_test.rb +18 -13
- data/test/unit/filter_helpers_test.rb +10 -8
- data/test/unit/find_directive_parent_test.rb +174 -0
- data/test/unit/keyword_expander_test.rb +4 -2
- data/test/unit/mio_test.rb +18 -11
- data/test/unit/mtime_string_hash_mio_tree_test.rb +5 -1
- data/test/unit/parser_test.rb +41 -29
- data/test/unit/pathname_extensions_test.rb +1 -1
- data/test/unit/run_parser_test.rb +2 -2
- data/test/unit/simplified_directive_base_test.rb +256 -0
- data/test/unit/string_hash_mio_test.rb +5 -1
- data/test/unit/template_file_watcher_test.rb +2 -2
- data/test/unit/template_test.rb +221 -46
- metadata +86 -45
- data/lib/masterview/directives/testfilter.rb +0 -55
- data/lib/masterview/extras/init_rails_reparse_checking.rb +0 -62
@@ -3,29 +3,32 @@
|
|
3
3
|
require 'test/unit'
|
4
4
|
currentPath = File.dirname(__FILE__)
|
5
5
|
require File.join( currentPath, '../../lib/masterview' )
|
6
|
-
require File.join( currentPath, '../../lib/masterview/directives/else')
|
6
|
+
#require File.join( currentPath, '../../lib/masterview/directives/else')
|
7
|
+
require File.join( currentPath, '../directive_test_helper' )
|
8
|
+
DirectiveTestHelpers.load_masterview_directive('else')
|
7
9
|
|
8
10
|
class TestElse < Test::Unit::TestCase
|
9
|
-
include
|
11
|
+
include DirectiveTestHelpers
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
|
13
|
+
Else = MasterView::Directives::Else # test subject
|
14
|
+
|
15
|
+
ELEMENT_TAG = 'div'
|
14
16
|
|
15
17
|
def test_else
|
16
|
-
parent_tag = MasterView::Tag.new(@directives, 'div', {}, :normal, nil)
|
17
|
-
parent_tag.content = ['<% if true %>hello world', '<% end %>']
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
# initial mv:if element gets wrapped by if/end erb conditions
|
20
|
+
tag_content = [ '<% if true -%>hello world', '<% end -%>' ]
|
21
|
+
if_tag = create_template_element ELEMENT_TAG, :content => tag_content
|
22
|
+
|
23
|
+
else_tag = create_template_element ELEMENT_TAG, :parent_tag => if_tag
|
21
24
|
attr_value = 'not used'
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
+
create_directive Else, attr_value
|
26
|
+
assert_equal 1, element_directives.size, 'clean reset of directives for new element'
|
27
|
+
|
28
|
+
assert_equal "<% else -%>", render_element_event(:stag)
|
29
|
+
assert_equal "<% if true -%>hello world", if_tag.content.join, 'else directive modifies preceding tag by removing its end marker when it adds itself to the output'
|
30
|
+
assert_equal "<% end -%>", render_element_event(:etag)
|
25
31
|
|
26
|
-
assert_equal "<% else %>", dcs.render.join
|
27
|
-
assert_equal "<% if true %>hello world", parent_tag.content.join
|
28
|
-
assert_equal "<% end %>", @directives.determine_dcs(:etag).render.join
|
29
32
|
end
|
30
33
|
|
31
34
|
end
|
@@ -3,29 +3,31 @@
|
|
3
3
|
require 'test/unit'
|
4
4
|
currentPath = File.dirname(__FILE__)
|
5
5
|
require File.join( currentPath, '../../lib/masterview' )
|
6
|
-
require File.join( currentPath, '../../lib/masterview/directives/elsif')
|
6
|
+
#require File.join( currentPath, '../../lib/masterview/directives/elsif')
|
7
|
+
require File.join( currentPath, '../directive_test_helper' )
|
8
|
+
DirectiveTestHelpers.load_masterview_directive('elsif')
|
7
9
|
|
8
10
|
class TestElsif < Test::Unit::TestCase
|
9
|
-
include
|
11
|
+
include DirectiveTestHelpers
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
|
13
|
+
Elsif = MasterView::Directives::Elsif # test subject
|
14
|
+
|
15
|
+
ELEMENT_TAG = 'div'
|
14
16
|
|
15
17
|
def test_elsif
|
16
|
-
parent_tag = MasterView::Tag.new(@directives, 'div', {}, :normal, nil)
|
17
|
-
parent_tag.content = ['<% if true %>hello world', '<% end %>']
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
# initial mv:if element gets wrapped by if/end erb conditions
|
20
|
+
tag_content = [ '<% if( true ) -%>hello world', '<% end -%>' ]
|
21
|
+
if_tag = create_template_element ELEMENT_TAG, :content => tag_content
|
22
|
+
|
23
|
+
elseif_tag = create_template_element ELEMENT_TAG, :parent_tag => if_tag
|
21
24
|
attr_value = '@foobar'
|
22
|
-
|
23
|
-
|
24
|
-
dcs.context = elsif_tag.create_context
|
25
|
+
create_directive Elsif, attr_value
|
26
|
+
assert_equal 1, element_directives.size, 'clean reset of directives for new element'
|
25
27
|
|
26
|
-
assert_equal "<% elsif #{attr_value}
|
27
|
-
assert_equal "<% if true
|
28
|
-
assert_equal "<% end
|
28
|
+
assert_equal "<% elsif( #{attr_value} ) -%>", render_element_event(:stag)
|
29
|
+
assert_equal "<% if( true ) -%>hello world", if_tag.content.join, 'elseif directive modifies preceding tag by removing its end marker when it adds itself to the output'
|
30
|
+
assert_equal "<% end -%>", render_element_event(:etag)
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
currentPath = File.dirname(__FILE__)
|
5
|
+
require File.join( currentPath, '../../lib/masterview' )
|
6
|
+
#require File.join( currentPath, '../../lib/masterview/directives/form_remote')
|
7
|
+
require File.join( currentPath, '../directive_test_helper' )
|
8
|
+
DirectiveTestHelpers.load_masterview_directive('form_remote')
|
9
|
+
|
10
|
+
class TestFormRemote < Test::Unit::TestCase
|
11
|
+
include DirectiveTestHelpers
|
12
|
+
|
13
|
+
FormRemote = MasterView::Directives::FormRemote # test subject
|
14
|
+
|
15
|
+
ELEMENT_TAG = 'form'
|
16
|
+
|
17
|
+
def test_metadata
|
18
|
+
assert_equal MasterView::ConfigSettings.namespace_prefix, FormRemote.namespace_prefix
|
19
|
+
assert_equal 'form_remote', FormRemote.attribute_name
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_default
|
23
|
+
create_template_element ELEMENT_TAG
|
24
|
+
attr_value = ":action => 'create'"
|
25
|
+
create_directive FormRemote, attr_value
|
26
|
+
assert_equal "<%= form_remote_tag( :action => 'create' ) %>", render_element_event(:stag)
|
27
|
+
assert_equal "</form>", render_element_event(:etag)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_get
|
31
|
+
create_template_element ELEMENT_TAG, :attributes => { 'method' => 'get' }
|
32
|
+
attr_value = ":action => 'create'"
|
33
|
+
create_directive FormRemote, attr_value
|
34
|
+
assert_equal "<%= form_remote_tag( :action => 'create', :method => \"get\" ) %>", render_element_event(:stag)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_get_uppercase
|
38
|
+
create_template_element ELEMENT_TAG, :attributes => { 'method' => 'GET'}
|
39
|
+
attr_value = ":action => 'create'"
|
40
|
+
create_directive FormRemote, attr_value
|
41
|
+
assert_equal "<%= form_remote_tag( :action => 'create', :method => \"GET\" ) %>", render_element_event(:stag)
|
42
|
+
assert_equal "</form>", render_element_event(:etag)
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_post
|
46
|
+
create_template_element ELEMENT_TAG, :attributes => { 'method' => 'post' }
|
47
|
+
attr_value = ":action => 'create'"
|
48
|
+
create_directive FormRemote, attr_value
|
49
|
+
assert_equal "<%= form_remote_tag( :action => 'create', :method => \"post\" ) %>", render_element_event(:stag)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_post_uppercase
|
53
|
+
create_template_element ELEMENT_TAG, :attributes => { 'method' => 'POST' }
|
54
|
+
attr_value = ":action => 'create'"
|
55
|
+
create_directive FormRemote, attr_value
|
56
|
+
assert_equal "<%= form_remote_tag( :action => 'create', :method => \"POST\" ) %>", render_element_event(:stag)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -3,64 +3,56 @@
|
|
3
3
|
require 'test/unit'
|
4
4
|
currentPath = File.dirname(__FILE__)
|
5
5
|
require File.join( currentPath, '../../lib/masterview' )
|
6
|
-
require File.join( currentPath, '../../lib/masterview/directives/form')
|
6
|
+
#require File.join( currentPath, '../../lib/masterview/directives/form')
|
7
|
+
require File.join( currentPath, '../directive_test_helper' )
|
8
|
+
DirectiveTestHelpers.load_masterview_directive('form')
|
7
9
|
|
8
10
|
class TestForm < Test::Unit::TestCase
|
9
|
-
include
|
11
|
+
include DirectiveTestHelpers
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
+
Form = MasterView::Directives::Form # test subject
|
14
|
+
|
15
|
+
ELEMENT_TAG = 'form'
|
16
|
+
|
17
|
+
def test_metadata
|
18
|
+
assert_equal MasterView::ConfigSettings.namespace_prefix, Form.namespace_prefix
|
19
|
+
assert_equal 'form', Form.attribute_name
|
13
20
|
end
|
14
21
|
|
15
22
|
def test_default
|
16
|
-
|
17
|
-
@directives.directives = []
|
23
|
+
create_template_element ELEMENT_TAG
|
18
24
|
attr_value = ":action => 'create'"
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
assert_equal "<%= form_tag :action => 'create' %>", dcs.render
|
23
|
-
assert_equal "<%= end_form_tag %>", @directives.determine_dcs(:etag).render
|
25
|
+
create_directive Form, attr_value
|
26
|
+
assert_equal "<%= form_tag( :action => 'create' ) %>", render_element_event(:stag)
|
27
|
+
assert_equal "</form>", render_element_event(:etag)
|
24
28
|
end
|
25
29
|
|
26
|
-
def
|
27
|
-
|
28
|
-
@directives.directives = []
|
30
|
+
def test_get
|
31
|
+
create_template_element ELEMENT_TAG, :attributes => { 'method' => 'get' }
|
29
32
|
attr_value = ":action => 'create'"
|
30
|
-
|
31
|
-
|
32
|
-
dcs.context = tag.create_context
|
33
|
-
assert_equal "<%= form_tag {:action => 'create'}, :method => \"get\" %>", dcs.render
|
33
|
+
create_directive Form, attr_value
|
34
|
+
assert_equal "<%= form_tag( { :action => 'create' }, :method => \"get\" ) %>", render_element_event(:stag)
|
34
35
|
end
|
35
36
|
|
36
|
-
def
|
37
|
-
|
38
|
-
@directives.directives = []
|
37
|
+
def test_get_uppercase
|
38
|
+
create_template_element ELEMENT_TAG, :attributes => { 'method' => 'GET'}
|
39
39
|
attr_value = ":action => 'create'"
|
40
|
-
|
41
|
-
|
42
|
-
dcs.context = tag.create_context
|
43
|
-
assert_equal "<%= form_tag {:action => 'create'}, :method => \"get\" %>", dcs.render
|
40
|
+
create_directive Form, attr_value
|
41
|
+
assert_equal "<%= form_tag( { :action => 'create' }, :method => \"GET\" ) %>", render_element_event(:stag)
|
44
42
|
end
|
45
43
|
|
46
|
-
def
|
47
|
-
|
48
|
-
@directives.directives = []
|
44
|
+
def test_post
|
45
|
+
create_template_element ELEMENT_TAG, :attributes => { 'method' => 'post' }
|
49
46
|
attr_value = ":action => 'create'"
|
50
|
-
|
51
|
-
|
52
|
-
dcs.context = tag.create_context
|
53
|
-
assert_equal "<%= form_tag :action => 'create' %>", dcs.render
|
47
|
+
create_directive Form, attr_value
|
48
|
+
assert_equal "<%= form_tag( { :action => 'create' }, :method => \"post\" ) %>", render_element_event(:stag)
|
54
49
|
end
|
55
50
|
|
56
|
-
def
|
57
|
-
|
58
|
-
@directives.directives = []
|
51
|
+
def test_post_uppercase
|
52
|
+
create_template_element ELEMENT_TAG, :attributes => { 'method' => 'POST' }
|
59
53
|
attr_value = ":action => 'create'"
|
60
|
-
|
61
|
-
|
62
|
-
dcs.context = tag.create_context
|
63
|
-
assert_equal "<%= form_tag :action => 'create' %>", dcs.render
|
54
|
+
create_directive Form, attr_value
|
55
|
+
assert_equal "<%= form_tag( { :action => 'create' }, :method => \"POST\" ) %>", render_element_event(:stag)
|
64
56
|
end
|
65
57
|
|
66
58
|
end
|
@@ -3,28 +3,39 @@
|
|
3
3
|
require 'test/unit'
|
4
4
|
currentPath = File.dirname(__FILE__)
|
5
5
|
require File.join( currentPath, '../../lib/masterview' )
|
6
|
-
require File.join( currentPath, '../../lib/masterview/directives/global_inline_erb')
|
6
|
+
#require File.join( currentPath, '../../lib/masterview/directives/global_inline_erb')
|
7
|
+
require File.join( currentPath, '../directive_test_helper' )
|
8
|
+
DirectiveTestHelpers.load_masterview_directive('global_inline_erb')
|
7
9
|
|
8
10
|
class TestGlobalInlineErb < Test::Unit::TestCase
|
9
|
-
include
|
11
|
+
include DirectiveTestHelpers
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
|
13
|
+
Global_inline_erb = MasterView::Directives::GlobalInlineErb # test subject
|
14
|
+
|
15
|
+
ELEMENT_TAG = 'dummy'
|
16
|
+
TEMPLATE_HELLO_ATTR_VALUE = 'foo bar {{{=hello world}}}'
|
17
|
+
ERBIZED_HELLO_ATTR_VALUE = 'foo bar <%=hello world%>'
|
18
|
+
TEMPLATE_WORLD_ATTR_VALUE = '{{{fine}}}'
|
19
|
+
ERBIZED_WORLD_ATTR_VALUE = '<%fine%>'
|
20
|
+
TEMPLATE_ELEMENT_ATTRIBUTES = { 'hello' => TEMPLATE_HELLO_ATTR_VALUE, 'world' => TEMPLATE_WORLD_ATTR_VALUE }
|
14
21
|
|
15
22
|
def test_hello
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
|
24
|
+
test_tag = create_template_element ELEMENT_TAG, :attributes => TEMPLATE_ELEMENT_ATTRIBUTES
|
25
|
+
create_directive Global_inline_erb, ''
|
26
|
+
append_default_render_handler
|
27
|
+
assert_equal 2, element_directives.size, 'we want our directive processor and a rendering backstop'
|
28
|
+
|
29
|
+
render_result = render_element_event(:stag)
|
30
|
+
assert_equal "<#{ELEMENT_TAG} hello=\"#{ERBIZED_HELLO_ATTR_VALUE}\" world=\"#{ERBIZED_WORLD_ATTR_VALUE}\">", render_result
|
31
|
+
#assert_equal "<%= #{attr_value} %>", test_tag.content.join
|
32
|
+
|
33
|
+
template_content = 'more text here {{{= foo(bar) }}} more then {{{exec {:hello => :world} }}} finally'
|
34
|
+
erbized_content = 'more text here <%= foo(bar) %> more then <%exec {:hello => :world} %> finally'
|
35
|
+
context_values = { :content_part => template_content }
|
36
|
+
render_result = render_element_event( :characters, context_values )
|
37
|
+
assert_equal erbized_content, render_result
|
38
|
+
|
28
39
|
end
|
29
40
|
|
30
41
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
currentPath = File.dirname(__FILE__)
|
5
|
+
require File.join( currentPath, '../../lib/masterview' )
|
6
|
+
require File.join( currentPath, '../test_helper' )
|
7
|
+
|
8
|
+
class TestGridDirective < Test::Unit::TestCase
|
9
|
+
def setup
|
10
|
+
MasterView::IOMgr.erb = MasterView::StringHashMIOTree.new({}, '.rhtml', :logging => true)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_grid
|
14
|
+
template = <<-END
|
15
|
+
<div mv:generate='foo/bar'>
|
16
|
+
<table mv:grid="product, :cols => [:name, :description], :sort => [:column, :created_date]">
|
17
|
+
<tr><th>Name</th><th>Description</th></tr>
|
18
|
+
<tr><td>foo</td><td>bar</td></tr>
|
19
|
+
</table>
|
20
|
+
</div>
|
21
|
+
END
|
22
|
+
expected = {
|
23
|
+
'foo/bar' => "<div>
|
24
|
+
<table>
|
25
|
+
<tr><th>Name</th><th>Description</th></tr>
|
26
|
+
<%= render :partial => 'store/product', :collection => @products %>
|
27
|
+
</table>
|
28
|
+
</div>",
|
29
|
+
|
30
|
+
'store/_product.rhtml' => ""
|
31
|
+
}
|
32
|
+
assert_template_result expected, template
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
currentPath = File.dirname(__FILE__)
|
5
|
+
require File.join( currentPath, '../../lib/masterview' )
|
6
|
+
|
7
|
+
class TestDirectiveHelpers < Test::Unit::TestCase
|
8
|
+
include MasterView::DirectiveHelpers
|
9
|
+
|
10
|
+
|
11
|
+
def test_find_last_parent_strings
|
12
|
+
tag = OpenStruct.new
|
13
|
+
tag.parent = OpenStruct.new
|
14
|
+
|
15
|
+
foo = 'foo'
|
16
|
+
bar = 'bar'
|
17
|
+
baz = 'baz'
|
18
|
+
bar2 = 'bar'
|
19
|
+
hello = 'hello'
|
20
|
+
tag.parent.content = [foo, bar, baz, bar2, hello]
|
21
|
+
assert_equal bar2.object_id, find_last_in_parent(tag, 'bar').object_id
|
22
|
+
assert bar.object_id != find_last_in_parent(tag, 'bar').object_id
|
23
|
+
end
|
24
|
+
|
25
|
+
# test bug found by Sergey Shalatskly where it wasn't searching into arrays properly
|
26
|
+
def test_find_last_parent_strings_and_arrays
|
27
|
+
tag = OpenStruct.new
|
28
|
+
tag.parent = OpenStruct.new
|
29
|
+
|
30
|
+
foo = 'foo'
|
31
|
+
bar = 'bar'
|
32
|
+
baz = 'baz'
|
33
|
+
bar2 = 'bar'
|
34
|
+
hello = 'hello'
|
35
|
+
tag.parent.content = [foo, bar, [baz, bar2, hello], ['one', 'world'], 'three']
|
36
|
+
assert_equal bar2.object_id, find_last_in_parent(tag, 'bar').object_id
|
37
|
+
assert bar.object_id != find_last_in_parent(tag, 'bar').object_id
|
38
|
+
end
|
39
|
+
end
|
@@ -3,60 +3,75 @@
|
|
3
3
|
require 'test/unit'
|
4
4
|
currentPath = File.dirname(__FILE__)
|
5
5
|
require File.join( currentPath, '../../lib/masterview' )
|
6
|
-
require File.join( currentPath, '../../lib/masterview/directives/hidden_field')
|
6
|
+
#require File.join( currentPath, '../../lib/masterview/directives/hidden_field')
|
7
|
+
require File.join( currentPath, '../directive_test_helper' )
|
8
|
+
DirectiveTestHelpers.load_masterview_directive('hidden_field')
|
7
9
|
|
8
10
|
class TestHiddenField < Test::Unit::TestCase
|
9
|
-
include
|
11
|
+
include DirectiveTestHelpers
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
+
HiddenField = MasterView::Directives::HiddenField # test subject
|
14
|
+
|
15
|
+
ELEMENT_TAG = 'input'
|
16
|
+
|
17
|
+
def test_metadata
|
18
|
+
assert_equal MasterView::ConfigSettings.namespace_prefix, HiddenField.namespace_prefix
|
19
|
+
assert_equal 'hidden_field', HiddenField.attribute_name
|
13
20
|
end
|
14
21
|
|
15
|
-
|
22
|
+
# set up the test case for an input element with mv:hidden directive
|
23
|
+
def create_element_with_hidden_field_directive(obj, method, other_attr_values=nil, attributes={})
|
24
|
+
|
16
25
|
attr_value = "#{obj}, #{method}"
|
17
|
-
attr_value << ', ' <<
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
dcs.render
|
26
|
+
attr_value << ', ' << other_attr_values unless other_attr_values.nil?
|
27
|
+
|
28
|
+
input_tag = create_template_element ELEMENT_TAG,
|
29
|
+
:attributes => attributes,
|
30
|
+
:content => 'hello world'
|
31
|
+
create_directive HiddenField, attr_value
|
32
|
+
assert_equal '', render_element_event(:stag)
|
33
|
+
|
26
34
|
end
|
27
35
|
|
28
36
|
def test_normal
|
29
37
|
obj = ':product'
|
30
|
-
method = '
|
31
|
-
|
32
|
-
assert_equal "<%= hidden_field #{obj}, #{method} %>",
|
38
|
+
method = 'price'
|
39
|
+
create_element_with_hidden_field_directive(obj, method, nil, { 'type' => 'hidden', 'value' => 'fake text' } )
|
40
|
+
assert_equal "<%= hidden_field( #{obj}, '#{method}' ) %>", render_element_event(:etag)
|
33
41
|
end
|
34
42
|
|
35
43
|
def test_extra
|
36
44
|
obj = ':product'
|
37
|
-
method = '
|
38
|
-
|
39
|
-
assert_equal "<%= hidden_field #{obj}, #{method} %>",
|
45
|
+
method = "'price'"
|
46
|
+
create_element_with_hidden_field_directive(obj, method, "\"'more', 'stuff'\"", { 'type' => 'hidden', 'value' => 'fake text' } )
|
47
|
+
assert_equal "<%= hidden_field( #{obj}, #{method}, \"'more', 'stuff'\" ) %>", render_element_event(:etag)
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_extra2
|
51
|
+
obj = ':product'
|
52
|
+
method = "'price'"
|
53
|
+
create_element_with_hidden_field_directive(obj, method, "'more'", { 'type' => 'hidden', 'value' => 'fake text' } )
|
54
|
+
assert_equal "<%= hidden_field( #{obj}, #{method}, 'more' ) %>", render_element_event(:etag)
|
40
55
|
end
|
41
56
|
|
42
57
|
def test_all
|
43
58
|
obj = ':product'
|
44
59
|
method = ':price'
|
45
|
-
|
46
|
-
{
|
47
|
-
'type' => 'hidden', 'value' => 'fake text'
|
60
|
+
create_element_with_hidden_field_directive(obj, method, nil,
|
61
|
+
{
|
62
|
+
'type' => 'hidden', 'value' => 'fake text'
|
48
63
|
} )
|
49
|
-
assert_equal "<%= hidden_field #{obj}, #{method} %>",
|
64
|
+
assert_equal "<%= hidden_field( #{obj}, #{method} ) %>", render_element_event(:etag)
|
50
65
|
end
|
51
66
|
|
52
|
-
def
|
67
|
+
def test_all_uppercase
|
53
68
|
obj = ':product'
|
54
69
|
method = ':price'
|
55
|
-
|
56
|
-
{
|
57
|
-
'TYPE' => 'HIDDEN', 'value' => 'fake text'
|
70
|
+
create_element_with_hidden_field_directive(obj, method, nil,
|
71
|
+
{
|
72
|
+
'TYPE' => 'HIDDEN', 'value' => 'fake text'
|
58
73
|
} )
|
59
|
-
assert_equal "<%= hidden_field #{obj}, #{method} %>",
|
74
|
+
assert_equal "<%= hidden_field( #{obj}, #{method} ) %>", render_element_event(:etag)
|
60
75
|
end
|
61
76
|
|
62
77
|
end
|
@@ -3,21 +3,24 @@
|
|
3
3
|
require 'test/unit'
|
4
4
|
currentPath = File.dirname(__FILE__)
|
5
5
|
require File.join( currentPath, '../../lib/masterview' )
|
6
|
-
require File.join( currentPath, '../../lib/masterview/directives/if')
|
6
|
+
#require File.join( currentPath, '../../lib/masterview/directives/if')
|
7
|
+
require File.join( currentPath, '../directive_test_helper' )
|
8
|
+
DirectiveTestHelpers.load_masterview_directive('if')
|
7
9
|
|
8
10
|
class TestIf < Test::Unit::TestCase
|
9
|
-
include
|
11
|
+
include DirectiveTestHelpers
|
12
|
+
|
13
|
+
If = MasterView::Directives::If # test subject
|
10
14
|
|
11
15
|
def setup
|
12
|
-
|
16
|
+
create_template_element
|
13
17
|
end
|
14
18
|
|
15
19
|
def test_if
|
16
|
-
@directives.directives = []
|
17
20
|
attr_value = 'true'
|
18
|
-
|
19
|
-
assert_equal "<% if #{attr_value}
|
20
|
-
assert_equal "<% end
|
21
|
+
create_directive If, attr_value
|
22
|
+
assert_equal "<% if( #{attr_value} ) -%>", render_element_event(:stag)
|
23
|
+
assert_equal "<% end -%>", render_element_event(:etag)
|
21
24
|
end
|
22
25
|
|
23
26
|
end
|