zena 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|