zena 1.2.1 → 1.2.2
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/History.txt +38 -1
- data/app/controllers/documents_controller.rb +7 -5
- data/app/controllers/nodes_controller.rb +47 -6
- data/app/controllers/user_sessions_controller.rb +12 -3
- data/app/controllers/virtual_classes_controller.rb +8 -2
- data/app/models/acl.rb +5 -2
- data/app/models/cached_page.rb +5 -5
- data/app/models/column.rb +27 -4
- data/app/models/group.rb +1 -1
- data/app/models/node.rb +106 -24
- data/app/models/note.rb +2 -1
- data/app/models/relation.rb +9 -4
- data/app/models/relation_proxy.rb +2 -2
- data/app/models/role.rb +12 -5
- data/app/models/site.rb +10 -9
- data/app/models/skin.rb +8 -0
- data/app/models/string_hash.rb +65 -0
- data/app/models/text_document.rb +1 -1
- data/app/models/user.rb +2 -0
- data/app/models/virtual_class.rb +43 -10
- data/app/views/comments/create.rjs +1 -32
- data/app/views/comments/edit.rjs +1 -1
- data/app/views/comments/update.rjs +1 -1
- data/app/views/documents/show.rhtml +1 -1
- data/app/views/groups/_form.rhtml +7 -0
- data/app/views/groups/_li.rhtml +1 -1
- data/app/views/nodes/500.html +2 -1
- data/app/views/nodes/destroy.rjs +2 -0
- data/app/views/sites/jobs.erb +2 -3
- data/app/views/templates/document_create_tabs/_file.rhtml +1 -1
- data/app/views/templates/document_create_tabs/_import.rhtml +4 -1
- data/app/views/templates/document_create_tabs/_template.rhtml +3 -0
- data/app/views/templates/document_create_tabs/_text_document.rhtml +3 -0
- data/app/views/versions/custom_tab.rhtml +1 -1
- data/app/views/versions/edit.rhtml +1 -1
- data/bricks/acls/lib/bricks/acls.rb +3 -3
- data/bricks/acls/zena/test/unit/acl_test.rb +15 -0
- data/bricks/fs_skin/lib/bricks/fs_skin.rb +190 -0
- data/bricks/fs_skin/zena/init.rb +1 -0
- data/bricks/fs_skin/zena/migrate/20110702010330_add_fs_skin_to_idx_templates.rb +12 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Image-edit.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Image.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Node-+index.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Node-+notFound.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Node-+search.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Node.zafu +1 -1
- data/bricks/{static → fs_skin}/zena/skins/blog/Post.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Project--kml.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Project.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/comments.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/dict.yml +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/img/dateBg.jpg +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/img/header.png +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/img/mapPin.png +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/img/menu.gif +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/img/menuover.gif +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/img/style.css +0 -0
- data/bricks/fs_skin/zena/tasks.rb +26 -0
- data/bricks/{static/zena/test/integration/static_integration_test.rb → fs_skin/zena/test/integration/fs_skin_integration_test.rb} +6 -6
- data/bricks/fs_skin/zena/test/unit/fs_skin_test.rb +33 -0
- data/bricks/grid/lib/bricks/grid.rb +4 -3
- data/bricks/tags/lib/bricks/tags.rb +1 -7
- data/bricks/zena/zena/migrate/20120605091558_add_ssl_login_to_site.rb +7 -0
- data/bricks/zena/zena/migrate/20120630123551_add_auto_publish_to_group.rb +9 -0
- data/config/bricks.yml +3 -3
- data/config/gems.yml +2 -3
- data/lib/tasks/zena.rake +7 -3
- data/lib/zafu.rb +7 -0
- data/lib/zafu/all.rb +21 -0
- data/lib/zafu/compiler.rb +7 -0
- data/lib/zafu/controller_methods.rb +58 -0
- data/lib/zafu/handler.rb +57 -0
- data/lib/zafu/info.rb +4 -0
- data/lib/zafu/markup.rb +309 -0
- data/lib/zafu/mock_helper.rb +42 -0
- data/lib/zafu/node_context.rb +203 -0
- data/lib/zafu/ordered_hash.rb +53 -0
- data/lib/zafu/parser.rb +676 -0
- data/lib/zafu/parsing_rules.rb +382 -0
- data/lib/zafu/process/ajax.rb +530 -0
- data/lib/zafu/process/conditional.rb +92 -0
- data/lib/zafu/process/context.rb +186 -0
- data/lib/zafu/process/forms.rb +143 -0
- data/lib/zafu/process/html.rb +186 -0
- data/lib/zafu/process/ruby_less_processing.rb +321 -0
- data/lib/zafu/security.rb +15 -0
- data/lib/zafu/template.rb +25 -0
- data/lib/zafu/test_helper.rb +19 -0
- data/lib/zafu/view_methods.rb +6 -0
- data/lib/zena.rb +1 -1
- data/lib/zena/acts/enrollable.rb +1 -1
- data/lib/zena/app.rb +4 -17
- data/lib/zena/console.rb +18 -1
- data/lib/zena/core_ext/file_utils.rb +13 -1
- data/lib/zena/core_ext/fixnum.rb +4 -0
- data/lib/zena/core_ext/float.rb +7 -0
- data/lib/zena/deploy.rb +4 -2
- data/lib/zena/deploy/app_init.rhtml +2 -1
- data/lib/zena/deploy/database.rhtml +1 -1
- data/lib/zena/info.rb +1 -1
- data/lib/zena/parser/zazen_rules.rb +4 -4
- data/lib/zena/routes.rb +1 -1
- data/lib/zena/test_controller.rb +1 -1
- data/lib/zena/use.rb +14 -1
- data/lib/zena/use/action.rb +4 -2
- data/lib/zena/use/ajax.rb +86 -38
- data/lib/zena/use/authlogic.rb +16 -1
- data/lib/zena/use/calendar.rb +37 -17
- data/lib/zena/use/conditional.rb +2 -2
- data/lib/zena/use/context.rb +30 -9
- data/lib/zena/use/dates.rb +39 -3
- data/lib/zena/use/display.rb +6 -19
- data/lib/zena/use/forms.rb +100 -79
- data/lib/zena/use/i18n.rb +40 -16
- data/lib/zena/use/query_builder.rb +0 -6
- data/lib/zena/use/query_node.rb +17 -4
- data/lib/zena/use/relations.rb +1 -3
- data/lib/zena/use/rendering.rb +10 -8
- data/lib/zena/use/scope_index.rb +5 -1
- data/lib/zena/use/search.rb +2 -1
- data/lib/zena/use/urls.rb +82 -77
- data/lib/zena/use/workflow.rb +12 -4
- data/lib/zena/use/zafu_safe_definitions.rb +37 -9
- data/lib/zena/use/zafu_templates.rb +49 -20
- data/lib/zena/use/zazen.rb +6 -2
- data/locale/it/LC_MESSAGES/zena.mo +0 -0
- data/locale/it/zena.mo +0 -0
- data/locale/it/zena.po +1982 -0
- data/public/images/arrow_back.png +0 -0
- data/public/images/remove_tag.png +0 -0
- data/public/javascripts/grid.js +800 -199
- data/public/javascripts/window.js +1 -1
- data/public/javascripts/zena.js +130 -21
- data/public/stylesheets/grid.css +11 -2
- data/public/stylesheets/zena.css +2 -1
- data/test/custom_queries/complex.host.yml +5 -0
- data/test/fixtures/files/TestNode.zafu +36 -0
- data/test/functional/nodes_controller_test.rb +18 -1
- data/test/integration/zafu_compiler/action.yml +2 -2
- data/test/integration/zafu_compiler/ajax.yml +44 -26
- data/test/integration/zafu_compiler/asset.yml +12 -2
- data/test/integration/zafu_compiler/basic.yml +0 -16
- data/test/integration/zafu_compiler/calendar.yml +6 -6
- data/test/integration/zafu_compiler/complex_ok.yml +23 -1
- data/test/integration/zafu_compiler/conditional.yml +5 -5
- data/test/integration/zafu_compiler/context.yml +6 -5
- data/test/integration/zafu_compiler/dates.yml +23 -2
- data/test/integration/zafu_compiler/display.yml +46 -2
- data/test/integration/zafu_compiler/errors.yml +2 -2
- data/test/integration/zafu_compiler/eval.yml +35 -7
- data/test/integration/zafu_compiler/forms.yml +47 -13
- data/test/integration/zafu_compiler/i18n.yml +2 -2
- data/test/integration/zafu_compiler/meta.yml +35 -1
- data/test/integration/zafu_compiler/query.yml +23 -4
- data/test/integration/zafu_compiler/relations.yml +10 -6
- data/test/integration/zafu_compiler/roles.yml +4 -4
- data/test/integration/zafu_compiler/rubyless.yml +11 -1
- data/test/integration/zafu_compiler/safe_definitions.yml +23 -5
- data/test/integration/zafu_compiler/security.yml +10 -6
- data/test/integration/zafu_compiler/urls.yml +23 -6
- data/test/integration/zafu_compiler/zafu_attributes.yml +1 -1
- data/test/integration/zafu_compiler/zazen.yml +14 -0
- data/test/selenium/Add/add3.rsel +8 -8
- data/test/selenium/Destroy/0setup.rsel +12 -0
- data/test/selenium/Destroy/destroy1.rsel +16 -0
- data/test/selenium/Edit/edit2.rsel +9 -9
- data/test/selenium/Edit/edit5.rsel +9 -9
- data/test/selenium/Edit/edit6.rsel +9 -9
- data/test/selenium/Form/form4.rsel +17 -0
- data/test/selenium/Toggle/toggle1.rsel +2 -0
- data/test/selenium/Toggle/toggle2.rsel +18 -0
- data/test/sites/zena/columns.yml +3 -0
- data/test/sites/zena/versions.yml +7 -0
- data/test/unit/cached_page_test.rb +13 -13
- data/test/unit/column_test.rb +26 -0
- data/test/unit/node_test.rb +16 -1
- data/test/unit/project_test.rb +6 -1
- data/test/unit/relation_test.rb +1 -1
- data/test/unit/role_test.rb +1 -1
- data/test/unit/string_hash_test.rb +30 -0
- data/test/unit/virtual_class_test.rb +31 -17
- data/test/unit/zafu_markup_test.rb +414 -0
- data/test/unit/zafu_node_context_test.rb +375 -0
- data/test/unit/zafu_ordered_hash_test.rb +69 -0
- data/test/unit/zena/acts/enrollable_test.rb +1 -1
- data/test/unit/zena/parser/zafu_asset.yml +0 -10
- data/test/unit/zena/parser/zazen.yml +1 -1
- data/test/unit/zena/parser_test.rb +1 -72
- data/test/unit/zena/use/dates_test.rb +1 -1
- data/test/unit/zena/use/rendering_test.rb +24 -7
- data/test/unit/zena/use/scope_index_test.rb +17 -0
- data/test/unit/zena/use/zazen_test.rb +2 -1
- data/zena.gemspec +71 -37
- metadata +104 -83
- data/app/views/nodes/destroy.erb +0 -0
- data/bricks/static/lib/bricks/static.rb +0 -151
- data/bricks/static/zena/init.rb +0 -1
- data/bricks/static/zena/migrate/20110702010330_add_static_to_idx_templates.rb +0 -12
- data/bricks/static/zena/test/unit/static_test.rb +0 -33
- data/lib/zena/parser/zafu_rules.rb +0 -244
- data/lib/zena/parser/zafu_tags.rb +0 -198
- data/lib/zena/parser/zena_rules.rb +0 -23
|
@@ -3,36 +3,36 @@
|
|
|
3
3
|
|
|
4
4
|
open '/oo/testnode37.html?test=edit2'
|
|
5
5
|
set_timeout 4000
|
|
6
|
-
assert_element_not_present '
|
|
6
|
+
assert_element_not_present 'edit21_title'
|
|
7
7
|
verify_text "css=#edit21 li.title", @old_title
|
|
8
8
|
|
|
9
9
|
# edit (does not click on 'v_status' checkbox)
|
|
10
10
|
click 'link=edit'
|
|
11
|
-
wait_for_element_present '
|
|
12
|
-
type '
|
|
11
|
+
wait_for_element_present 'edit21_title'
|
|
12
|
+
type 'edit21_title', @new_title
|
|
13
13
|
|
|
14
14
|
# submit
|
|
15
15
|
click 'css=input[type=submit]'
|
|
16
|
-
wait_for_element_not_present '
|
|
16
|
+
wait_for_element_not_present 'edit21_title'
|
|
17
17
|
verify_text "css=#edit21 li.title", @new_title
|
|
18
18
|
|
|
19
19
|
# edit again (click on 'v_status' checkbox)
|
|
20
20
|
click 'link=edit'
|
|
21
|
-
wait_for_element_present '
|
|
21
|
+
wait_for_element_present 'edit21_title'
|
|
22
22
|
|
|
23
23
|
# cancel
|
|
24
24
|
click 'css=img[alt="cancel"]'
|
|
25
|
-
wait_for_element_not_present '
|
|
25
|
+
wait_for_element_not_present 'edit21_title'
|
|
26
26
|
|
|
27
27
|
# edit again
|
|
28
28
|
click 'link=edit'
|
|
29
|
-
wait_for_element_present '
|
|
30
|
-
type '
|
|
29
|
+
wait_for_element_present 'edit21_title'
|
|
30
|
+
type 'edit21_title', @old_title
|
|
31
31
|
click 'css=#edit2 input[type=checkbox]'
|
|
32
32
|
|
|
33
33
|
# submit
|
|
34
34
|
click 'css=input[type=submit]'
|
|
35
|
-
wait_for_element_not_present '
|
|
35
|
+
wait_for_element_not_present 'edit21_title'
|
|
36
36
|
verify_text "css=#edit21 li.title", @old_title
|
|
37
37
|
|
|
38
38
|
# ensure page is published
|
|
@@ -3,37 +3,37 @@
|
|
|
3
3
|
|
|
4
4
|
open '/oo/testnode37.html?test=edit5'
|
|
5
5
|
set_timeout 4000
|
|
6
|
-
assert_element_not_present '
|
|
6
|
+
assert_element_not_present 'edit51_title'
|
|
7
7
|
verify_text "css=#edit51_32 .title", @old_title
|
|
8
8
|
|
|
9
9
|
# edit
|
|
10
10
|
click 'link=edit'
|
|
11
|
-
wait_for_element_present '
|
|
12
|
-
type '
|
|
11
|
+
wait_for_element_present 'edit51_title'
|
|
12
|
+
type 'edit51_title', @new_title
|
|
13
13
|
|
|
14
14
|
# submit
|
|
15
15
|
click 'css=input[type=submit]'
|
|
16
|
-
wait_for_element_not_present '
|
|
16
|
+
wait_for_element_not_present 'edit51_title'
|
|
17
17
|
verify_text "css=#edit51_32 .title", @new_title
|
|
18
18
|
|
|
19
19
|
# edit again
|
|
20
20
|
click 'link=edit'
|
|
21
|
-
wait_for_element_present '
|
|
21
|
+
wait_for_element_present 'edit51_title'
|
|
22
22
|
|
|
23
23
|
# cancel
|
|
24
24
|
click 'css=img[alt="cancel"]'
|
|
25
|
-
wait_for_element_not_present '
|
|
25
|
+
wait_for_element_not_present 'edit51_title'
|
|
26
26
|
|
|
27
27
|
# edit again
|
|
28
28
|
click 'link=edit'
|
|
29
|
-
wait_for_element_present '
|
|
29
|
+
wait_for_element_present 'edit51_title'
|
|
30
30
|
# Ensure we do proper ajax replacements
|
|
31
31
|
assert_element_not_present 'css=#edit5 form form'
|
|
32
|
-
type '
|
|
32
|
+
type 'edit51_title', @old_title
|
|
33
33
|
|
|
34
34
|
# submit
|
|
35
35
|
click 'css=input[type=submit]'
|
|
36
|
-
wait_for_element_not_present '
|
|
36
|
+
wait_for_element_not_present 'edit51_title'
|
|
37
37
|
verify_text "css=#edit51_32 .title", @old_title
|
|
38
38
|
|
|
39
39
|
# ensure changes are recorded
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
open '/oo/testnode37.html?test=edit6'
|
|
5
5
|
set_timeout 4000
|
|
6
|
-
assert_element_not_present '
|
|
6
|
+
assert_element_not_present 'edit61_title'
|
|
7
7
|
verify_text "css=#edit61_32 .title", @old_title
|
|
8
8
|
|
|
9
9
|
# swap block should work before edit
|
|
@@ -14,33 +14,33 @@ verify_text "css=#edit62_32 span", 'bob'
|
|
|
14
14
|
|
|
15
15
|
# edit
|
|
16
16
|
click 'link=edit'
|
|
17
|
-
wait_for_element_present '
|
|
18
|
-
type '
|
|
17
|
+
wait_for_element_present 'edit61_title'
|
|
18
|
+
type 'edit61_title', @new_title
|
|
19
19
|
|
|
20
20
|
# submit
|
|
21
21
|
click 'css=input[type=submit]'
|
|
22
22
|
wait_for_element_present 'swap_span'
|
|
23
23
|
verify_text "css=#edit61_32 .title", @new_title
|
|
24
|
-
verify_text "
|
|
24
|
+
verify_text "swap_span", 'bob'
|
|
25
25
|
|
|
26
26
|
# edit again
|
|
27
27
|
click 'link=edit'
|
|
28
|
-
wait_for_element_present '
|
|
28
|
+
wait_for_element_present 'edit61_title'
|
|
29
29
|
|
|
30
30
|
# cancel
|
|
31
31
|
click 'css=img[alt="cancel"]'
|
|
32
|
-
wait_for_element_not_present '
|
|
32
|
+
wait_for_element_not_present 'edit61_title'
|
|
33
33
|
|
|
34
34
|
# edit again
|
|
35
35
|
click 'link=edit'
|
|
36
|
-
wait_for_element_present '
|
|
36
|
+
wait_for_element_present 'edit61_title'
|
|
37
37
|
# Ensure we do proper ajax replacements
|
|
38
38
|
assert_element_not_present 'css=#edit6 form form'
|
|
39
|
-
type '
|
|
39
|
+
type 'edit61_title', @old_title
|
|
40
40
|
|
|
41
41
|
# submit
|
|
42
42
|
click 'css=input[type=submit]'
|
|
43
|
-
wait_for_element_not_present '
|
|
43
|
+
wait_for_element_not_present 'edit61_title'
|
|
44
44
|
verify_text "css=#edit61_32 .title", @old_title
|
|
45
45
|
|
|
46
46
|
# swap block should work after edit
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
open "/oo/testnode37.html?test=form4"
|
|
2
|
+
verify_text "form4_one", "un"
|
|
3
|
+
verify_text "form4_two", "deux"
|
|
4
|
+
type "form41_settings", "zwei"
|
|
5
|
+
# submit
|
|
6
|
+
click_and_wait 'css=input[type=submit]'
|
|
7
|
+
|
|
8
|
+
# Redirected to same page
|
|
9
|
+
assert_location "http://test.host:3000/oo/testnode37.html"
|
|
10
|
+
open "/oo/testnode37.html?test=form4"
|
|
11
|
+
verify_text "form4_one", "un"
|
|
12
|
+
verify_text "form4_two", "zwei"
|
|
13
|
+
|
|
14
|
+
# clear
|
|
15
|
+
type "form41_settings", "deux"
|
|
16
|
+
# submit
|
|
17
|
+
click_and_wait 'css=input[type=submit]'
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
open "/oo/testnode37.html?test=toggle1"
|
|
2
2
|
assert_element_not_present "css=ul.references > li"
|
|
3
3
|
|
|
4
|
+
wait_for_element_present 'css=#toggle12_19.toggle.off > input.cb'
|
|
5
|
+
|
|
4
6
|
# Add relation
|
|
5
7
|
# Cannot test click on non-link in Safari and Chrome...
|
|
6
8
|
click 'css=#toggle12_19.toggle.off > input.cb'
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
open "/oo/testnode37.html?test=toggle2"
|
|
2
|
+
assert_element_not_present "css=ul.references > li"
|
|
3
|
+
verify_text "toggle2_count", 'toggle2_count=0'
|
|
4
|
+
|
|
5
|
+
wait_for_element_present 'css=#toggle22_19.toggle.off > input.cb'
|
|
6
|
+
# Add relation
|
|
7
|
+
# Cannot test click on non-link in Safari and Chrome...
|
|
8
|
+
click 'css=#toggle22_19.toggle.off > input.cb'
|
|
9
|
+
wait_for_element_present 'css=#toggle22_19.toggle.on'
|
|
10
|
+
verify_value "css=#toggle22_19 > input.cb", "on"
|
|
11
|
+
# Make sure the js reload has been triggered
|
|
12
|
+
wait_for_text_present "toggle2_count=1"
|
|
13
|
+
|
|
14
|
+
# Remove relation
|
|
15
|
+
click 'css=#toggle22_19.toggle.on > input.cb'
|
|
16
|
+
wait_for_element_present 'css=#toggle22_19.toggle.off'
|
|
17
|
+
verify_value "css=#toggle22_19 > input.cb", "off"
|
|
18
|
+
wait_for_text_present "toggle2_count=0"
|
data/test/sites/zena/columns.yml
CHANGED
|
@@ -388,6 +388,11 @@ test_en:
|
|
|
388
388
|
comment: small presentation
|
|
389
389
|
title: Kill the bugs
|
|
390
390
|
summary: "<a href='?test=all'>View all ajax tests</a>."
|
|
391
|
+
settings:
|
|
392
|
+
json_class: "StringHash"
|
|
393
|
+
data:
|
|
394
|
+
one: un
|
|
395
|
+
two: deux
|
|
391
396
|
|
|
392
397
|
strange_en_red:
|
|
393
398
|
node: strange
|
|
@@ -481,6 +486,7 @@ wiki_project_changes_xml_en:
|
|
|
481
486
|
node: wiki_Project_changes_xml_zafu
|
|
482
487
|
user: tiger
|
|
483
488
|
prop:
|
|
489
|
+
title: Project-changes-xml
|
|
484
490
|
comment: layout for wiki
|
|
485
491
|
summary: Layout for the wiki skin.
|
|
486
492
|
text: |
|
|
@@ -504,6 +510,7 @@ wiki_page_changes_en:
|
|
|
504
510
|
prop:
|
|
505
511
|
comment: layout for wiki
|
|
506
512
|
summary: Layout for the wiki skin.
|
|
513
|
+
title: Page-changes
|
|
507
514
|
text: |
|
|
508
515
|
<r:include template='layout.html'>
|
|
509
516
|
<r:with part='body/content/main'>
|
|
@@ -28,7 +28,7 @@ class CachedPageTest < Zena::Unit::TestCase
|
|
|
28
28
|
# test expire
|
|
29
29
|
login(:tiger)
|
|
30
30
|
node = secure!(Node) { nodes(:status) }
|
|
31
|
-
assert node.update_attributes(:title=>'hey'), "Can save"
|
|
31
|
+
assert node.update_attributes(:title=>'hey', :v_status => Zena::Status::Pub), "Can save"
|
|
32
32
|
assert !File.exists?(path), "Cache file removed"
|
|
33
33
|
assert_equal [], cache.node_ids
|
|
34
34
|
end
|
|
@@ -53,7 +53,7 @@ class CachedPageTest < Zena::Unit::TestCase
|
|
|
53
53
|
# test expire
|
|
54
54
|
login(:tiger)
|
|
55
55
|
node = secure!(Node) { nodes(:bird_jpg) }
|
|
56
|
-
assert node.update_attributes(:title=>'hey'), "Can save"
|
|
56
|
+
assert node.update_attributes(:title=>'hey', :v_status => Zena::Status::Pub), "Can save"
|
|
57
57
|
assert !File.exists?(path), "Cache file removed"
|
|
58
58
|
login(:anon)
|
|
59
59
|
node = secure!(Node) { nodes(:bird_jpg) }
|
|
@@ -142,10 +142,10 @@ class CachedPageTest < Zena::Unit::TestCase
|
|
|
142
142
|
preserving_files('/test.host/data') do
|
|
143
143
|
login(:anon)
|
|
144
144
|
template_ids = [nodes_id(:Node_index_zafu), nodes_id(:Project_zafu), nodes_id(:Node_zafu), nodes_id(:notes_zafu)]
|
|
145
|
-
path = SITES_ROOT + visitor.site.zafu_path + "/default/
|
|
145
|
+
path = SITES_ROOT + visitor.site.zafu_path + "/default/Node-foobar/en/main.erb"
|
|
146
146
|
assert !File.exists?(path), "No cached file yet"
|
|
147
147
|
cache = secure!(CachedPage) { CachedPage.create(
|
|
148
|
-
:path => (visitor.site.zafu_path + "/default/
|
|
148
|
+
:path => (visitor.site.zafu_path + "/default/Node-foobar/en/main.erb"),
|
|
149
149
|
:expire_after => nil,
|
|
150
150
|
:expire_with_ids => template_ids,
|
|
151
151
|
:content_data => "this is the cached content") }
|
|
@@ -156,7 +156,7 @@ class CachedPageTest < Zena::Unit::TestCase
|
|
|
156
156
|
# test expire
|
|
157
157
|
login(:tiger)
|
|
158
158
|
node = secure!(Node) { nodes(:Node_zafu) }
|
|
159
|
-
assert node.update_attributes(:title=>'hey'), "Can save"
|
|
159
|
+
assert node.update_attributes(:title=>'hey', :v_status => Zena::Status::Pub), "Can save"
|
|
160
160
|
assert !File.exists?(path), "Cache file removed"
|
|
161
161
|
assert_equal [], cache.node_ids
|
|
162
162
|
end
|
|
@@ -170,18 +170,18 @@ class CachedPageTest < Zena::Unit::TestCase
|
|
|
170
170
|
visitor.dev_skin_id = nodes_id(:default)
|
|
171
171
|
assert visitor.dev_mode?
|
|
172
172
|
template_ids = [nodes_id(:Node_index_zafu), nodes_id(:Project_zafu), nodes_id(:Node_zafu), nodes_id(:notes_zafu)]
|
|
173
|
-
path = SITES_ROOT + visitor.site.zafu_path + "/default/
|
|
174
|
-
dev_path = SITES_ROOT + visitor.site.zafu_path + "/default/
|
|
173
|
+
path = SITES_ROOT + visitor.site.zafu_path + "/default/Node-foobar/en/_main.erb"
|
|
174
|
+
dev_path = SITES_ROOT + visitor.site.zafu_path + "/default/Node-foobar/dev_en/_main.erb"
|
|
175
175
|
|
|
176
176
|
assert !File.exists?(path), "No cached file yet"
|
|
177
177
|
cache = secure!(CachedPage) { CachedPage.create(
|
|
178
|
-
:path => (visitor.site.zafu_path + "/default/
|
|
178
|
+
:path => (visitor.site.zafu_path + "/default/Node-foobar/en/_main.erb"),
|
|
179
179
|
:expire_after => nil,
|
|
180
180
|
:expire_with_ids => template_ids,
|
|
181
181
|
:content_data => "public cache") }
|
|
182
182
|
|
|
183
183
|
cache = secure!(CachedPage) { CachedPage.create(
|
|
184
|
-
:path => (visitor.site.zafu_path + "/default/
|
|
184
|
+
:path => (visitor.site.zafu_path + "/default/Node-foobar/dev_en/_main.erb"),
|
|
185
185
|
:expire_after => nil,
|
|
186
186
|
:expire_with_ids => template_ids,
|
|
187
187
|
:content_data => "dev cache") }
|
|
@@ -190,14 +190,14 @@ class CachedPageTest < Zena::Unit::TestCase
|
|
|
190
190
|
|
|
191
191
|
# test expire
|
|
192
192
|
node = secure!(Node) { nodes(:Node_zafu) }
|
|
193
|
-
assert node.update_attributes(:title=>'hey'), "Can save"
|
|
194
|
-
assert File.exists?(path), "Public cache not removed"
|
|
195
|
-
assert !File.exists?(dev_path), "Dev cache removed"
|
|
193
|
+
assert node.update_attributes(:title => 'hey', :v_status => Zena::Status::Pub), "Can save"
|
|
194
|
+
assert File.exists?(path), "Public cache not removed (#{path})"
|
|
195
|
+
assert !File.exists?(dev_path), "Dev cache removed (#{dev_path})"
|
|
196
196
|
|
|
197
197
|
# expire all
|
|
198
198
|
assert current_site.update_attributes(:expire_in_dev => true)
|
|
199
199
|
node = secure!(Node) { nodes(:Node_zafu) }
|
|
200
|
-
assert node.update_attributes(:title=>'hey boy'), "Can save"
|
|
200
|
+
assert node.update_attributes(:title=>'hey boy', :v_status => Zena::Status::Pub), "Can save"
|
|
201
201
|
assert !File.exists?(path), "Public cache removed"
|
|
202
202
|
end
|
|
203
203
|
end
|
data/test/unit/column_test.rb
CHANGED
|
@@ -51,6 +51,32 @@ class ColumnTest < Zena::Unit::TestCase
|
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
+
context 'A hash column' do
|
|
55
|
+
setup do
|
|
56
|
+
login(:lion)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
subject do
|
|
60
|
+
Column.create(:role_id => roles_id(:Task), :ptype => 'hash', :name => 'foo')
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
should 'type_cast json as StringHash' do
|
|
64
|
+
assert_equal StringHash['one'=>'two', 'five'=>'six'], subject.type_cast('{"one":"two","five":"six"}')
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
should 'type_cast hash as StringHash' do
|
|
68
|
+
assert_equal StringHash['one'=>'two', 'five'=>'six'], subject.type_cast(:one => :two, 'five' => 'six')
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
should 'type_cast nil as nil' do
|
|
72
|
+
assert_nil subject.type_cast(nil)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
should 'type_cast empty as nil' do
|
|
76
|
+
assert_nil subject.type_cast('')
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
54
80
|
context 'Creating a column' do
|
|
55
81
|
subject do
|
|
56
82
|
Column.create(:role_id => roles_id(:Task), :ptype => 'string', :name => 'foo')
|
data/test/unit/node_test.rb
CHANGED
|
@@ -1216,6 +1216,21 @@ done: \"I am done\""
|
|
|
1216
1216
|
assert_equal nodes_id(:bird_jpg), node.find(:first, 'icon')[:id]
|
|
1217
1217
|
end
|
|
1218
1218
|
|
|
1219
|
+
def test_copy_no_id
|
|
1220
|
+
login(:lion)
|
|
1221
|
+
node = secure!(Node) { nodes(:status) }
|
|
1222
|
+
attributes = {
|
|
1223
|
+
'copy_id' => '',
|
|
1224
|
+
'text' => 'Changed icon to "#{title}"',
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1227
|
+
new_attributes = secure(Node) { Node.transform_attributes(attributes) }
|
|
1228
|
+
assert_equal Hash['copy_zip' => '', 'text' => 'Changed icon to ""',], new_attributes
|
|
1229
|
+
|
|
1230
|
+
assert node.update_attributes_with_transformation(attributes)
|
|
1231
|
+
assert_equal 'Changed icon to ""', node.text
|
|
1232
|
+
end
|
|
1233
|
+
|
|
1219
1234
|
def test_export
|
|
1220
1235
|
without_files('/test.host/tmp') do
|
|
1221
1236
|
login(:tiger)
|
|
@@ -1399,7 +1414,7 @@ done: \"I am done\""
|
|
|
1399
1414
|
end
|
|
1400
1415
|
|
|
1401
1416
|
should 'parse pseudo ids' do
|
|
1402
|
-
assert_transforms "Hi, this is just a simple \"test\":
|
|
1417
|
+
assert_transforms "Hi, this is just a simple \"test\":43 or \"\":31_life.rss. OK ?\n\n!24_pv!",
|
|
1403
1418
|
"Hi, this is just a simple \"test\"::w or \"\"::w++_life.rss. OK ?\n\n!:lake_pv!"
|
|
1404
1419
|
end
|
|
1405
1420
|
|
data/test/unit/project_test.rb
CHANGED
|
@@ -19,7 +19,12 @@ class ProjectTest < Zena::Unit::TestCase
|
|
|
19
19
|
node = secure!(Project) { Project.find(nodes_id(:cleanWater))}
|
|
20
20
|
assert_equal nodes_id(:cleanWater), node.get_project_id
|
|
21
21
|
node[:parent_id] = nodes_id(:zena)
|
|
22
|
-
|
|
22
|
+
if !node.save
|
|
23
|
+
# Cannot cast string to string hash ?
|
|
24
|
+
assert false, "Can save node (#{err(node)})"
|
|
25
|
+
else
|
|
26
|
+
assert true
|
|
27
|
+
end
|
|
23
28
|
node.reload
|
|
24
29
|
assert_equal nodes_id(:cleanWater), node.get_project_id
|
|
25
30
|
assert_equal nodes_id(:zena), node[:project_id]
|
data/test/unit/relation_test.rb
CHANGED
|
@@ -207,7 +207,7 @@ class RelationTest < Zena::Unit::TestCase
|
|
|
207
207
|
assert_equal({
|
|
208
208
|
'rel_group' => 'doc.tags',
|
|
209
209
|
'source_role' => 'tagged',
|
|
210
|
-
'
|
|
210
|
+
'target_name' => 'Tag',
|
|
211
211
|
'target_icon' => "<img src='/images/tag_blue.png' alt='tag'/>",
|
|
212
212
|
}, subject.export)
|
|
213
213
|
end
|
data/test/unit/role_test.rb
CHANGED
|
@@ -125,7 +125,7 @@ class RoleTest < Zena::Unit::TestCase
|
|
|
125
125
|
end
|
|
126
126
|
|
|
127
127
|
should 'return all defined safe columns' do
|
|
128
|
-
assert_equal %w{origin tz weight}, subject.defined_safe_columns.map(&:name)
|
|
128
|
+
assert_equal %w{origin settings tz weight}, subject.defined_safe_columns.map(&:name)
|
|
129
129
|
end
|
|
130
130
|
end # with a Role
|
|
131
131
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'test_helper'
|
|
3
|
+
|
|
4
|
+
class StringHashTest < Test::Unit::TestCase
|
|
5
|
+
context 'A StringHash' do
|
|
6
|
+
subject do
|
|
7
|
+
StringHash[:a => 1, 'b' => '2']
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
should 'transform all keys to string' do
|
|
11
|
+
assert_equal Hash['a' => '1', 'b' => '2'], subject
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
should 'convert to json' do
|
|
15
|
+
assert_match %r{\{"data":\{"b":"2","a":"1"|"a":"1","b":"2"\},"json_class":"StringHash"\}}, subject.to_json
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
should 'create from json' do
|
|
19
|
+
obj = JSON.parse(subject.to_json)
|
|
20
|
+
assert_equal StringHash, obj.class
|
|
21
|
+
assert_equal obj, subject
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
should 'merge' do
|
|
25
|
+
subject.merge!(:a => 4, 'c' => '3')
|
|
26
|
+
assert_equal StringHash, subject.class
|
|
27
|
+
assert_equal Hash['a' => '4', 'b' => '2', 'c' => '3'], subject
|
|
28
|
+
end
|
|
29
|
+
end # A string with accents
|
|
30
|
+
end
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
require 'test_helper'
|
|
3
3
|
|
|
4
4
|
class VirtualClassTest < Zena::Unit::TestCase
|
|
5
|
-
|
|
5
|
+
POST_PROPERTIES = %w{assigned cached_role_ids date origin settings summary text title tz weight}
|
|
6
|
+
NOTE_PROPERTIES = %w{assigned cached_role_ids origin settings summary text title tz weight}
|
|
7
|
+
|
|
6
8
|
def test_virtual_subclasse
|
|
7
9
|
# add a sub class
|
|
8
10
|
login(:lion)
|
|
@@ -185,6 +187,10 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
185
187
|
assert !vclass.new_record?
|
|
186
188
|
assert_not_equal Section.kpath, vclass.kpath
|
|
187
189
|
assert_equal 'NPU', vclass.kpath
|
|
190
|
+
# New class without any free key
|
|
191
|
+
vclass = VirtualClass.create(:superclass => 'Page', :name => 'U', :create_group_id => groups_id(:public))
|
|
192
|
+
assert !vclass.new_record?
|
|
193
|
+
assert_equal 'NPA', vclass.kpath
|
|
188
194
|
end
|
|
189
195
|
|
|
190
196
|
context 'Updating a VirtualClass' do
|
|
@@ -204,6 +210,14 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
204
210
|
assert_equal 'NPO', n.kpath
|
|
205
211
|
end
|
|
206
212
|
|
|
213
|
+
should 'update kpaths in relations' do
|
|
214
|
+
# kpath NNP => NO
|
|
215
|
+
assert subject.update_attributes(:name => 'Frost')
|
|
216
|
+
assert_equal 'NNF', subject.kpath
|
|
217
|
+
rel = relations(:post_has_blogs)
|
|
218
|
+
assert_equal 'NNF', rel.source_kpath
|
|
219
|
+
end
|
|
220
|
+
|
|
207
221
|
context 'with a related template' do
|
|
208
222
|
setup do
|
|
209
223
|
@template = secure(Template) { Template.create(:parent_id => nodes_id(:default), :title => 'Post-foobar.zafu') }
|
|
@@ -306,7 +320,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
306
320
|
end
|
|
307
321
|
|
|
308
322
|
should 'return a loaded virtual class' do
|
|
309
|
-
assert_equal
|
|
323
|
+
assert_equal POST_PROPERTIES, subject.column_names.sort
|
|
310
324
|
end
|
|
311
325
|
|
|
312
326
|
context 'related to a real class' do
|
|
@@ -320,7 +334,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
320
334
|
end
|
|
321
335
|
|
|
322
336
|
should 'return a loaded virtual class' do
|
|
323
|
-
assert_equal
|
|
337
|
+
assert_equal NOTE_PROPERTIES, subject.column_names.sort
|
|
324
338
|
end
|
|
325
339
|
end # related to a real class
|
|
326
340
|
|
|
@@ -342,7 +356,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
342
356
|
end
|
|
343
357
|
|
|
344
358
|
should 'return a loaded virtual class' do
|
|
345
|
-
assert_equal
|
|
359
|
+
assert_equal POST_PROPERTIES, subject.column_names.sort
|
|
346
360
|
end
|
|
347
361
|
end # with an id
|
|
348
362
|
|
|
@@ -363,7 +377,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
363
377
|
end
|
|
364
378
|
|
|
365
379
|
should 'return a loaded virtual class' do
|
|
366
|
-
assert_equal
|
|
380
|
+
assert_equal POST_PROPERTIES, subject.column_names.sort
|
|
367
381
|
end
|
|
368
382
|
|
|
369
383
|
context 'related to a real class' do
|
|
@@ -377,7 +391,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
377
391
|
end
|
|
378
392
|
|
|
379
393
|
should 'return a loaded virtual class' do
|
|
380
|
-
assert_equal
|
|
394
|
+
assert_equal NOTE_PROPERTIES, subject.column_names.sort
|
|
381
395
|
end
|
|
382
396
|
end # related to a real class
|
|
383
397
|
end # with a name
|
|
@@ -484,7 +498,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
484
498
|
should 'load new role from cache' do
|
|
485
499
|
subject
|
|
486
500
|
# no more linked to assigned
|
|
487
|
-
assert_equal %w{assigned cached_role_ids date foo origin summary text title tz weight}, VirtualClass['Post'].column_names.sort
|
|
501
|
+
assert_equal %w{assigned cached_role_ids date foo origin settings summary text title tz weight}, VirtualClass['Post'].column_names.sort
|
|
488
502
|
end
|
|
489
503
|
|
|
490
504
|
end # Creating a Column
|
|
@@ -522,7 +536,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
522
536
|
should 'load new role from cache' do
|
|
523
537
|
subject
|
|
524
538
|
# change name
|
|
525
|
-
assert_equal
|
|
539
|
+
assert_equal POST_PROPERTIES.map{|p| p == 'tz' ? 'toz' : p}, VirtualClass['Post'].column_names.sort
|
|
526
540
|
end
|
|
527
541
|
|
|
528
542
|
end # Updating a Column
|
|
@@ -560,7 +574,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
560
574
|
should 'load new role from cache' do
|
|
561
575
|
subject
|
|
562
576
|
# no more linked to assigned
|
|
563
|
-
assert_equal %w{assigned cached_role_ids date origin summary text title weight}, VirtualClass['Post'].column_names.sort
|
|
577
|
+
assert_equal %w{assigned cached_role_ids date origin settings summary text title weight}, VirtualClass['Post'].column_names.sort
|
|
564
578
|
end
|
|
565
579
|
|
|
566
580
|
end # Deleting a Column
|
|
@@ -629,7 +643,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
629
643
|
end
|
|
630
644
|
|
|
631
645
|
should 'return safe column types' do
|
|
632
|
-
assert_equal %w{assigned origin summary text title tz weight}, subject.safe_column_types.keys.sort
|
|
646
|
+
assert_equal %w{assigned origin settings summary text title tz weight}, subject.safe_column_types.keys.sort
|
|
633
647
|
end
|
|
634
648
|
|
|
635
649
|
should 'return nil on unsafe method type' do
|
|
@@ -664,7 +678,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
664
678
|
end
|
|
665
679
|
|
|
666
680
|
should 'return safe columns' do
|
|
667
|
-
assert_equal %w{summary text title assigned origin tz weight}, subject.safe_columns.map(&:name)
|
|
681
|
+
assert_equal %w{summary text title assigned origin settings tz weight}, subject.safe_columns.map(&:name)
|
|
668
682
|
end
|
|
669
683
|
|
|
670
684
|
should 'return defined safe columns' do
|
|
@@ -672,7 +686,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
672
686
|
end
|
|
673
687
|
|
|
674
688
|
should 'return safe column types' do
|
|
675
|
-
assert_equal %w{assigned origin summary text title tz weight}, subject.safe_column_types.keys.sort
|
|
689
|
+
assert_equal %w{assigned origin settings summary text title tz weight}, subject.safe_column_types.keys.sort
|
|
676
690
|
end
|
|
677
691
|
|
|
678
692
|
should 'not include unsafe properties in safe column types' do
|
|
@@ -698,7 +712,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
698
712
|
end
|
|
699
713
|
|
|
700
714
|
should 'return safe columns' do
|
|
701
|
-
assert_equal %w{summary text title assigned origin tz weight date}, subject.safe_columns.map(&:name)
|
|
715
|
+
assert_equal %w{summary text title assigned origin settings tz weight date}, subject.safe_columns.map(&:name)
|
|
702
716
|
end
|
|
703
717
|
|
|
704
718
|
should 'return defined safe columns' do
|
|
@@ -706,7 +720,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
706
720
|
end
|
|
707
721
|
|
|
708
722
|
should 'return safe column types' do
|
|
709
|
-
assert_equal %w{assigned date origin summary text title tz weight}, subject.safe_column_types.keys.sort
|
|
723
|
+
assert_equal %w{assigned date origin settings summary text title tz weight}, subject.safe_column_types.keys.sort
|
|
710
724
|
end
|
|
711
725
|
|
|
712
726
|
should 'return type on safe method type' do
|
|
@@ -898,7 +912,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
898
912
|
|
|
899
913
|
should 'export relations' do
|
|
900
914
|
assert_equal({
|
|
901
|
-
'blogs' => {'
|
|
915
|
+
'blogs' => {'target_name'=>'Project', 'source_role'=>'added_note'}
|
|
902
916
|
}, subject['relations'])
|
|
903
917
|
end
|
|
904
918
|
|
|
@@ -979,7 +993,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
979
993
|
'type' => 'VirtualClass',
|
|
980
994
|
'relations' => {
|
|
981
995
|
'babar' => {
|
|
982
|
-
'
|
|
996
|
+
'target_name' => 'Post',
|
|
983
997
|
'target_unique' => true,
|
|
984
998
|
'source_role' => 'fool',
|
|
985
999
|
'rel_group' => 'foo.bar',
|
|
@@ -1003,7 +1017,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
1003
1017
|
assert bar = VirtualClass['Bar']
|
|
1004
1018
|
rel = Relation.first(
|
|
1005
1019
|
:conditions => ['source_kpath = ? AND target_role = ?', 'NNF', 'babar'])
|
|
1006
|
-
assert_equal '
|
|
1020
|
+
assert_equal 'NNP', rel.target_kpath
|
|
1007
1021
|
assert_equal 'fools', rel.source_role
|
|
1008
1022
|
assert_equal 'babar', rel.target_role
|
|
1009
1023
|
assert_equal 'foo.bar', rel.rel_group
|