zena 1.2.4 → 1.2.5
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 +18 -0
- data/app/controllers/nodes_controller.rb +11 -6
- data/app/controllers/sites_controller.rb +3 -2
- data/app/controllers/user_sessions_controller.rb +1 -1
- data/app/controllers/virtual_classes_controller.rb +3 -2
- data/app/models/document.rb +2 -2
- data/app/models/node.rb +6 -1
- data/app/models/note.rb +3 -27
- data/app/models/role.rb +11 -5
- data/app/models/site.rb +140 -43
- data/app/models/string_hash.rb +2 -0
- data/app/models/user.rb +9 -4
- data/app/models/user_session.rb +1 -1
- data/app/models/virtual_class.rb +49 -18
- data/app/views/sites/_form.erb +7 -4
- data/app/views/sites/_li.erb +15 -9
- data/app/views/users/_li.rhtml +3 -0
- data/app/views/users/index.rhtml +1 -1
- data/app/views/virtual_classes/_form.erb +1 -1
- data/bricks/acls/zena/init.rb +1 -2
- data/bricks/acls/zena/test/sites/erebus/roles.yml +4 -0
- data/bricks/activity/lib/bricks/activity.rb +24 -0
- data/bricks/activity/zena/migrate/20130711135905_add_activity_to_user.rb +9 -0
- data/bricks/activity/zena/test/integration/activity_integration_test.rb +29 -0
- data/bricks/captcha/zena/init.rb +0 -3
- data/bricks/fs_skin/lib/bricks/fs_skin.rb +3 -3
- data/bricks/fs_skin/zena/skins/blog/Node.zafu +1 -1
- data/bricks/fs_skin/zena/tasks.rb +2 -2
- data/bricks/fs_skin/zena/test/integration/fs_skin_integration_test.rb +2 -2
- data/bricks/fs_skin/zena/test/unit/fs_skin_test.rb +1 -1
- data/bricks/math/zena/init.rb +0 -3
- data/bricks/pdf/zena/init.rb +1 -5
- data/bricks/worker/zena/init.rb +0 -2
- data/bricks/zena/zena/migrate/20130617164527_add_master_id_to_site.rb +13 -0
- data/bricks/zena/zena/migrate/20130712081512_alter_login_users.rb +9 -0
- data/config/bricks.yml +4 -1
- data/lib/bricks/loader.rb +17 -9
- data/lib/tasks/zena.rake +40 -5
- data/lib/zafu/process/ruby_less_processing.rb +3 -5
- data/lib/zena.rb +2 -0
- data/lib/zena/acts/secure.rb +11 -2
- data/lib/zena/console.rb +5 -4
- data/lib/zena/core_ext/string.rb +2 -2
- data/lib/zena/deploy.rb +22 -6
- data/lib/zena/deploy/logrotate_app.rhtml +10 -7
- data/lib/zena/deploy/logrotate_host.rhtml +21 -26
- data/lib/zena/deploy/vhost.rhtml +3 -3
- data/lib/zena/foxy_parser.rb +1 -1
- data/lib/zena/info.rb +1 -1
- data/lib/zena/site_worker.rb +2 -2
- data/lib/zena/use.rb +0 -1
- data/lib/zena/use/ancestry.rb +1 -1
- data/lib/zena/use/authlogic.rb +2 -1
- data/lib/zena/use/display.rb +6 -0
- data/lib/zena/use/query_builder.rb +1 -1
- data/lib/zena/use/query_node.rb +3 -3
- data/lib/zena/use/rendering.rb +47 -13
- data/lib/zena/use/test_helper.rb +1 -1
- data/lib/zena/use/urls.rb +6 -104
- data/lib/zena/use/zafu_safe_definitions.rb +9 -4
- data/lib/zena/use/zafu_templates.rb +1 -0
- data/locale/app.pot +4 -0
- data/locale/de/LC_MESSAGES/zena.mo +0 -0
- data/locale/de/zena.po +6 -2
- data/locale/en/LC_MESSAGES/zena.mo +0 -0
- data/locale/en/zena.po +6 -2
- data/locale/fr/LC_MESSAGES/zena.mo +0 -0
- data/locale/fr/zena.po +5 -1
- data/locale/it/LC_MESSAGES/zena.mo +0 -0
- data/locale/it/zena.po +6 -2
- data/locale/zena.pot +4 -0
- data/test/functional/nodes_controller_test.rb +2 -133
- data/test/functional/sites_controller_test.rb +1 -1
- data/test/integration/multiple_hosts_test.rb +2 -1
- data/test/integration/navigation_test.rb +37 -0
- data/test/integration/query_node/basic.yml +1 -1
- data/test/integration/zafu_compiler/ajax.yml +7 -0
- data/test/integration/zafu_compiler/comments.yml +2 -2
- data/test/integration/zafu_compiler/context.yml +6 -2
- data/test/integration/zafu_compiler/display.yml +16 -4
- data/test/integration/zafu_compiler/forms.yml +1 -0
- data/test/integration/zafu_compiler/query.yml +7 -1
- data/test/integration/zafu_compiler/relations.yml +12 -7
- data/test/integration/zafu_compiler/roles.yml +3 -3
- data/test/integration/zafu_compiler/rubyless.yml +1 -2
- data/test/integration/zafu_compiler/safe_definitions.yml +5 -0
- data/test/sites/complex/roles.yml +1 -1
- data/test/sites/ocean/roles.yml +4 -0
- data/test/sites/zena/columns.yml +3 -1
- data/test/sites/zena/roles.yml +5 -1
- data/test/sites/zena/sites.yml +22 -0
- data/test/unit/document_test.rb +14 -0
- data/test/unit/node_test.rb +14 -0
- data/test/unit/role_test.rb +19 -4
- data/test/unit/site_test.rb +67 -0
- data/test/unit/user_test.rb +20 -0
- data/test/unit/virtual_class_test.rb +116 -11
- data/test/unit/zena/use/rendering_test.rb +1 -1
- data/zena.gemspec +67 -66
- metadata +126 -125
- data/bricks/fs_skin/zena/init.rb +0 -1
- data/bricks/grid/zena/init.rb +0 -4
- data/bricks/single/zena/init.rb +0 -1
- data/bricks/spreadsheet/zena/init.rb +0 -3
data/test/sites/ocean/roles.yml
CHANGED
data/test/sites/zena/columns.yml
CHANGED
data/test/sites/zena/roles.yml
CHANGED
data/test/sites/zena/sites.yml
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
zena:
|
|
2
2
|
host: test.host
|
|
3
|
+
orphan: zena
|
|
3
4
|
root: zena
|
|
4
5
|
anon: anon
|
|
5
6
|
public_group: public
|
|
@@ -12,6 +13,27 @@ zena:
|
|
|
12
13
|
formats_updated_at: 2008-05-01
|
|
13
14
|
api_group: managers
|
|
14
15
|
prop:
|
|
16
|
+
recaptcha_pub: 'pub'
|
|
17
|
+
recaptcha_priv: 'priv'
|
|
18
|
+
usr_prototype_attributes: "{'klass' => 'Contact', 'address' => 'Iping', 'name' => login}"
|
|
19
|
+
|
|
20
|
+
alias:
|
|
21
|
+
master: zena
|
|
22
|
+
host: alias.host
|
|
23
|
+
orphan: zena
|
|
24
|
+
root: wiki
|
|
25
|
+
anon: anon
|
|
26
|
+
public_group: public
|
|
27
|
+
site_group: workers
|
|
28
|
+
authentication: no
|
|
29
|
+
auto_publish: no
|
|
30
|
+
redit_time: 7200
|
|
31
|
+
languages:
|
|
32
|
+
default_lang:
|
|
33
|
+
formats_updated_at:
|
|
34
|
+
api_group:
|
|
35
|
+
prop:
|
|
36
|
+
ssl_on_auth: true
|
|
15
37
|
recaptcha_pub: 'pub'
|
|
16
38
|
recaptcha_priv: 'priv'
|
|
17
39
|
usr_prototype_attributes: "{'klass' => 'Contact', 'address' => 'Iping', 'name' => login}"
|
data/test/unit/document_test.rb
CHANGED
|
@@ -80,6 +80,20 @@ class DocumentTest < Zena::Unit::TestCase
|
|
|
80
80
|
assert_equal 'water-1', subject.title
|
|
81
81
|
end
|
|
82
82
|
end # with same title
|
|
83
|
+
|
|
84
|
+
context 'with a sub-class of Image' do
|
|
85
|
+
setup do
|
|
86
|
+
login(:lion)
|
|
87
|
+
vclass = secure(VirtualClass) { VirtualClass.create(:superclass => 'Image', :name => 'Video', :create_group_id => groups_id(:public))}
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
should 'create a document' do
|
|
91
|
+
assert_difference('Node.count', 1) do
|
|
92
|
+
assert !subject.new_record?
|
|
93
|
+
assert_equal Document, subject.class
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
83
97
|
|
|
84
98
|
context 'without a file' do
|
|
85
99
|
subject do
|
data/test/unit/node_test.rb
CHANGED
|
@@ -140,7 +140,21 @@ class NodeTest < Zena::Unit::TestCase
|
|
|
140
140
|
end
|
|
141
141
|
end
|
|
142
142
|
end # setting with transformations
|
|
143
|
+
|
|
144
|
+
context 'saving multiple times' do
|
|
145
|
+
subject do
|
|
146
|
+
secure(Node) { nodes(:status) }
|
|
147
|
+
end
|
|
143
148
|
|
|
149
|
+
should 'not create multiple versions' do
|
|
150
|
+
assert_difference('Version.count', 1) do
|
|
151
|
+
subject.update_attributes_with_transformation(:title => 'One')
|
|
152
|
+
assert subject.update_attributes_with_transformation(:reference_id => '33')
|
|
153
|
+
assert subject.update_attributes_with_transformation(:reference_id => '34')
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
144
158
|
end # on a node with write access
|
|
145
159
|
end # A logged in user
|
|
146
160
|
|
data/test/unit/role_test.rb
CHANGED
|
@@ -250,14 +250,11 @@ class RoleTest < Zena::Unit::TestCase
|
|
|
250
250
|
end
|
|
251
251
|
|
|
252
252
|
context 'with invalid index' do
|
|
253
|
-
should 'raise errors' do
|
|
253
|
+
should 'raise index errors' do
|
|
254
254
|
e = nil
|
|
255
255
|
assert_difference('Column.count', 0) do
|
|
256
256
|
e = assert_raise(ActiveRecord::RecordInvalid) do
|
|
257
257
|
subject.import_columns({
|
|
258
|
-
'one' => {
|
|
259
|
-
'ptype' => 'stringbar',
|
|
260
|
-
},
|
|
261
258
|
'two' => {
|
|
262
259
|
'ptype' => 'integer',
|
|
263
260
|
'index' => 'bad',
|
|
@@ -271,6 +268,24 @@ class RoleTest < Zena::Unit::TestCase
|
|
|
271
268
|
end
|
|
272
269
|
end # with invalid index
|
|
273
270
|
|
|
271
|
+
context 'with invalid ptype' do
|
|
272
|
+
should 'raise index errors' do
|
|
273
|
+
e = nil
|
|
274
|
+
assert_difference('Column.count', 0) do
|
|
275
|
+
e = assert_raise(ActiveRecord::RecordInvalid) do
|
|
276
|
+
subject.import_columns({
|
|
277
|
+
'one' => {
|
|
278
|
+
'ptype' => 'stringbar',
|
|
279
|
+
},
|
|
280
|
+
})
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
r = e.record
|
|
285
|
+
assert_equal "Column 'one' Validation failed: Ptype invalid", "#{r.class} '#{r.name}' #{e.message}"
|
|
286
|
+
end
|
|
287
|
+
end # with invalid ptype
|
|
288
|
+
|
|
274
289
|
context 'with invalid column name' do
|
|
275
290
|
should 'raise errors' do
|
|
276
291
|
e = nil
|
data/test/unit/site_test.rb
CHANGED
|
@@ -362,7 +362,74 @@ class SiteTest < Zena::Unit::TestCase
|
|
|
362
362
|
end
|
|
363
363
|
end
|
|
364
364
|
|
|
365
|
+
context 'A site alias' do
|
|
366
|
+
subject do
|
|
367
|
+
Site.find_by_host('alias.host')
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
should 'return master' do
|
|
371
|
+
assert_equal sites_id('zena'), subject.id
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
should 'have alias' do
|
|
375
|
+
assert_equal sites_id('alias'), subject.alias.id
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
should 'return alias host' do
|
|
379
|
+
assert_equal 'alias.host', subject.host
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
should 'return master zafu path' do
|
|
383
|
+
assert_equal '/test.host/zafu', subject.zafu_path
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
should 'return master data path' do
|
|
387
|
+
assert_equal '/test.host/data', subject.data_path
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
should 'return alias public path' do
|
|
391
|
+
assert_equal '/alias.host/public', subject.public_path
|
|
392
|
+
end
|
|
393
|
+
|
|
394
|
+
should 'return alias cache path' do
|
|
395
|
+
assert_equal '/alias.host/public', subject.cache_path
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
should 'return alias auth settings' do
|
|
399
|
+
assert subject.ssl_on_auth
|
|
400
|
+
end
|
|
401
|
+
|
|
402
|
+
should 'return alias root node' do
|
|
403
|
+
assert_equal nodes_id(:wiki), subject.root_id
|
|
404
|
+
end
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
context 'Creating a site alias' do
|
|
408
|
+
subject do
|
|
409
|
+
Site.find_by_host('test.host')
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
should 'create site' do
|
|
413
|
+
assert_difference('Site.count', 1) do
|
|
414
|
+
assert_difference('Node.count', 0) do
|
|
415
|
+
assert_difference('User.count', 0) do
|
|
416
|
+
subject.create_alias('foo.bar')
|
|
417
|
+
end
|
|
418
|
+
end
|
|
419
|
+
end
|
|
420
|
+
end
|
|
365
421
|
|
|
422
|
+
should 'set master_id' do
|
|
423
|
+
ali = subject.create_alias('foo.bar')
|
|
424
|
+
assert_equal subject.id, ali.master_id
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
should 'set host name' do
|
|
428
|
+
ali = subject.create_alias('foo.bar')
|
|
429
|
+
assert_equal 'foo.bar', ali.host
|
|
430
|
+
end
|
|
431
|
+
end
|
|
432
|
+
|
|
366
433
|
private
|
|
367
434
|
def fullpath(*args)
|
|
368
435
|
args.map {|sym| nodes_zip(sym).to_s}.join('/')
|
data/test/unit/user_test.rb
CHANGED
|
@@ -54,6 +54,26 @@ class UserTest < Zena::Unit::TestCase
|
|
|
54
54
|
assert_nothing_raised { users(:ant).destroy }
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
|
+
|
|
58
|
+
class GroupsUsersCounter < ActiveRecord::Base
|
|
59
|
+
set_table_name :groups_users
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
should 'remove links to groups' do
|
|
63
|
+
assert_difference('User.count', -1) do
|
|
64
|
+
assert_difference('GroupsUsersCounter.count', -2) do
|
|
65
|
+
assert_nothing_raised { users(:ant).destroy }
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
should 'not remove linked node' do
|
|
71
|
+
assert_difference('User.count', -1) do
|
|
72
|
+
assert_difference('Node.count', 0) do
|
|
73
|
+
assert_nothing_raised { users(:ant).destroy }
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
57
77
|
end # with admin rights
|
|
58
78
|
end # Destroying a user
|
|
59
79
|
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
require 'test_helper'
|
|
3
3
|
|
|
4
4
|
class VirtualClassTest < Zena::Unit::TestCase
|
|
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}
|
|
5
|
+
POST_PROPERTIES = %w{assigned cached_role_ids date info origin settings summary text title tz weight}
|
|
6
|
+
NOTE_PROPERTIES = %w{assigned cached_role_ids info origin settings summary text title tz weight}
|
|
7
7
|
|
|
8
8
|
def test_virtual_subclasse
|
|
9
9
|
# add a sub class
|
|
@@ -427,8 +427,19 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
427
427
|
end # that is not a virtual class instance
|
|
428
428
|
|
|
429
429
|
end # from a node instance
|
|
430
|
-
|
|
431
430
|
end # Loading a virtual class
|
|
431
|
+
|
|
432
|
+
context 'With a virtual class linked to a real class' do
|
|
433
|
+
setup do
|
|
434
|
+
login(:lion)
|
|
435
|
+
vclass = secure(VirtualClass) { VirtualClass.create(:superclass => 'Document', :name => 'Image')}
|
|
436
|
+
end
|
|
437
|
+
|
|
438
|
+
should 'description' do
|
|
439
|
+
|
|
440
|
+
end
|
|
441
|
+
end
|
|
442
|
+
|
|
432
443
|
|
|
433
444
|
def self.should_clear_cache
|
|
434
445
|
|
|
@@ -509,7 +520,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
509
520
|
should 'load new role from cache' do
|
|
510
521
|
subject
|
|
511
522
|
# no more linked to assigned
|
|
512
|
-
assert_equal %w{assigned cached_role_ids date foo origin settings summary text title tz weight}, VirtualClass['Post'].column_names.sort
|
|
523
|
+
assert_equal %w{assigned cached_role_ids date foo info origin settings summary text title tz weight}, VirtualClass['Post'].column_names.sort
|
|
513
524
|
end
|
|
514
525
|
|
|
515
526
|
end # Creating a Column
|
|
@@ -528,7 +539,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
528
539
|
should 'load new role from cache' do
|
|
529
540
|
subject
|
|
530
541
|
# no more linked to Original
|
|
531
|
-
assert_equal %w{assigned cached_role_ids date summary text title}, VirtualClass['Post'].column_names.sort
|
|
542
|
+
assert_equal %w{assigned cached_role_ids date info summary text title}, VirtualClass['Post'].column_names.sort
|
|
532
543
|
end
|
|
533
544
|
|
|
534
545
|
end # Updating a Role
|
|
@@ -566,7 +577,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
566
577
|
should 'load new role from cache' do
|
|
567
578
|
subject
|
|
568
579
|
# no more linked to Original
|
|
569
|
-
assert_equal %w{assigned cached_role_ids date summary text title}, VirtualClass['Post'].column_names.sort
|
|
580
|
+
assert_equal %w{assigned cached_role_ids date info summary text title}, VirtualClass['Post'].column_names.sort
|
|
570
581
|
end
|
|
571
582
|
|
|
572
583
|
end # Deleting a Role
|
|
@@ -585,7 +596,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
585
596
|
should 'load new role from cache' do
|
|
586
597
|
subject
|
|
587
598
|
# no more linked to assigned
|
|
588
|
-
assert_equal %w{assigned cached_role_ids date origin settings summary text title weight}, VirtualClass['Post'].column_names.sort
|
|
599
|
+
assert_equal %w{assigned cached_role_ids date info origin settings summary text title weight}, VirtualClass['Post'].column_names.sort
|
|
589
600
|
end
|
|
590
601
|
|
|
591
602
|
end # Deleting a Column
|
|
@@ -710,6 +721,37 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
710
721
|
assert_equal %w{Node Original Task}, subject.sorted_roles.map(&:name)
|
|
711
722
|
end
|
|
712
723
|
end
|
|
724
|
+
|
|
725
|
+
context 'linked to a real class' do
|
|
726
|
+
subject do
|
|
727
|
+
VirtualClass['Note']
|
|
728
|
+
end
|
|
729
|
+
|
|
730
|
+
should 'have an id' do
|
|
731
|
+
assert subject.id
|
|
732
|
+
end
|
|
733
|
+
|
|
734
|
+
should 'define superclass' do
|
|
735
|
+
assert_equal VirtualClass['Node'], subject.superclass
|
|
736
|
+
end
|
|
737
|
+
|
|
738
|
+
should 'be the superclass of descendants' do
|
|
739
|
+
assert_equal subject, VirtualClass['Post'].superclass
|
|
740
|
+
end
|
|
741
|
+
|
|
742
|
+
should 'load all properties' do
|
|
743
|
+
assert_equal %w{assigned cached_role_ids info origin settings summary text title tz weight}, subject.column_names.sort
|
|
744
|
+
end
|
|
745
|
+
|
|
746
|
+
should 'return list of roles' do
|
|
747
|
+
assert_equal %w{Node Original Task Note}, subject.sorted_roles.map(&:name)
|
|
748
|
+
end
|
|
749
|
+
|
|
750
|
+
should 'define safe columns' do
|
|
751
|
+
assert_equal %w{info}, subject.defined_safe_columns.map(&:name)
|
|
752
|
+
end
|
|
753
|
+
end
|
|
754
|
+
|
|
713
755
|
end # of a real class
|
|
714
756
|
|
|
715
757
|
|
|
@@ -723,7 +765,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
723
765
|
end
|
|
724
766
|
|
|
725
767
|
should 'return safe columns' do
|
|
726
|
-
assert_equal %w{summary text title assigned origin settings tz weight date}, subject.safe_columns.map(&:name)
|
|
768
|
+
assert_equal %w{summary text title assigned origin settings tz weight info date}, subject.safe_columns.map(&:name)
|
|
727
769
|
end
|
|
728
770
|
|
|
729
771
|
should 'return defined safe columns' do
|
|
@@ -731,7 +773,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
731
773
|
end
|
|
732
774
|
|
|
733
775
|
should 'return safe column types' do
|
|
734
|
-
assert_equal %w{assigned date origin settings summary text title tz weight}, subject.safe_column_types.keys.sort
|
|
776
|
+
assert_equal %w{assigned date info origin settings summary text title tz weight}, subject.safe_column_types.keys.sort
|
|
735
777
|
end
|
|
736
778
|
|
|
737
779
|
should 'return type on safe method type' do
|
|
@@ -744,7 +786,7 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
744
786
|
end
|
|
745
787
|
|
|
746
788
|
should 'return list of roles' do
|
|
747
|
-
assert_equal %w{Node Original Task Post}, subject.sorted_roles.map(&:name)
|
|
789
|
+
assert_equal %w{Node Original Task Note Post}, subject.sorted_roles.map(&:name)
|
|
748
790
|
end
|
|
749
791
|
end # of a virtual class
|
|
750
792
|
|
|
@@ -836,7 +878,8 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
836
878
|
:superclass => 'Document',
|
|
837
879
|
:name => 'HtmlDoc',
|
|
838
880
|
:create_group_id => groups_id(:public),
|
|
839
|
-
:content_type => 'text/html'
|
|
881
|
+
:content_type => 'text/html',
|
|
882
|
+
}
|
|
840
883
|
end
|
|
841
884
|
|
|
842
885
|
should 'save and create regexp' do
|
|
@@ -852,6 +895,68 @@ class VirtualClassTest < Zena::Unit::TestCase
|
|
|
852
895
|
end
|
|
853
896
|
|
|
854
897
|
end
|
|
898
|
+
|
|
899
|
+
context 'linked to a real class' do
|
|
900
|
+
subject do
|
|
901
|
+
v = secure(VirtualClass) do
|
|
902
|
+
VirtualClass.new({
|
|
903
|
+
:superclass => 'Document',
|
|
904
|
+
:name => 'Page',
|
|
905
|
+
:create_group_id => groups_id(:public),
|
|
906
|
+
})
|
|
907
|
+
end
|
|
908
|
+
v.save
|
|
909
|
+
v
|
|
910
|
+
end
|
|
911
|
+
|
|
912
|
+
should 'save' do
|
|
913
|
+
assert !subject.new_record?
|
|
914
|
+
end
|
|
915
|
+
|
|
916
|
+
should 'rewrite superclass' do
|
|
917
|
+
subject
|
|
918
|
+
assert_equal VirtualClass['Node'], subject.superclass
|
|
919
|
+
end
|
|
920
|
+
|
|
921
|
+
should 'properly set real_class' do
|
|
922
|
+
assert_equal Page, subject.real_class
|
|
923
|
+
end
|
|
924
|
+
|
|
925
|
+
should 'echo kpath' do
|
|
926
|
+
assert_equal Page.kpath, subject.kpath
|
|
927
|
+
end
|
|
928
|
+
end
|
|
929
|
+
|
|
930
|
+
|
|
931
|
+
context 'linked to Node class' do
|
|
932
|
+
subject do
|
|
933
|
+
v = secure(VirtualClass) do
|
|
934
|
+
VirtualClass.new({
|
|
935
|
+
:name => 'Node',
|
|
936
|
+
:create_group_id => groups_id(:public),
|
|
937
|
+
})
|
|
938
|
+
end
|
|
939
|
+
v.save
|
|
940
|
+
v
|
|
941
|
+
end
|
|
942
|
+
|
|
943
|
+
should 'save' do
|
|
944
|
+
err subject
|
|
945
|
+
assert !subject.new_record?
|
|
946
|
+
end
|
|
947
|
+
|
|
948
|
+
should 'rewrite superclass' do
|
|
949
|
+
assert_equal Node, subject.superclass
|
|
950
|
+
end
|
|
951
|
+
|
|
952
|
+
should 'properly set real_class' do
|
|
953
|
+
assert_equal Node, subject.real_class
|
|
954
|
+
end
|
|
955
|
+
|
|
956
|
+
should 'echo kpath' do
|
|
957
|
+
assert_equal Node.kpath, subject.kpath
|
|
958
|
+
end
|
|
959
|
+
end
|
|
855
960
|
end
|
|
856
961
|
end
|
|
857
962
|
|