runo 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. data/README.rdoc +1 -118
  2. data/bin/runo +4 -29
  3. data/lib/dummy.rb +0 -0
  4. metadata +12 -278
  5. data/lib/_error.rb +0 -14
  6. data/lib/_field.rb +0 -260
  7. data/lib/_i18n.rb +0 -144
  8. data/lib/_parser.rb +0 -256
  9. data/lib/_path.rb +0 -86
  10. data/lib/_storage/_storage.rb +0 -215
  11. data/lib/_storage/file.rb +0 -201
  12. data/lib/_storage/sequel.rb +0 -174
  13. data/lib/_storage/temp.rb +0 -73
  14. data/lib/_widget/action_create.rb +0 -23
  15. data/lib/_widget/action_login.rb +0 -22
  16. data/lib/_widget/action_signup.rb +0 -16
  17. data/lib/_widget/action_update.rb +0 -16
  18. data/lib/_widget/crumb.rb +0 -24
  19. data/lib/_widget/done.rb +0 -16
  20. data/lib/_widget/login.rb +0 -25
  21. data/lib/_widget/me.rb +0 -31
  22. data/lib/_widget/message.rb +0 -51
  23. data/lib/_widget/navi.rb +0 -88
  24. data/lib/_widget/submit.rb +0 -49
  25. data/lib/_widget/view_ym.rb +0 -77
  26. data/lib/_workflow/_workflow.rb +0 -89
  27. data/lib/_workflow/attachment.rb +0 -50
  28. data/lib/_workflow/blog.rb +0 -28
  29. data/lib/_workflow/contact.rb +0 -23
  30. data/lib/_workflow/forum.rb +0 -26
  31. data/lib/_workflow/register.rb +0 -39
  32. data/lib/meta/_meta.rb +0 -20
  33. data/lib/meta/group.rb +0 -19
  34. data/lib/meta/id.rb +0 -59
  35. data/lib/meta/owner.rb +0 -21
  36. data/lib/meta/timestamp.rb +0 -118
  37. data/lib/runo.rb +0 -396
  38. data/lib/scalar/checkbox.rb +0 -68
  39. data/lib/scalar/file.rb +0 -144
  40. data/lib/scalar/img.rb +0 -112
  41. data/lib/scalar/password.rb +0 -58
  42. data/lib/scalar/radio.rb +0 -47
  43. data/lib/scalar/select.rb +0 -47
  44. data/lib/scalar/text.rb +0 -38
  45. data/lib/scalar/textarea.rb +0 -35
  46. data/lib/scalar/textarea_pre.rb +0 -14
  47. data/lib/scalar/textarea_wiki.rb +0 -173
  48. data/lib/set/_set.rb +0 -196
  49. data/lib/set/dynamic.rb +0 -177
  50. data/lib/set/static.rb +0 -102
  51. data/lib/set/static_folder.rb +0 -96
  52. data/locale/en/index.po +0 -242
  53. data/locale/index.pot +0 -243
  54. data/locale/ja/index.po +0 -242
  55. data/locale/lazy_parser.rb +0 -54
  56. data/skel/config.ru +0 -27
  57. data/skel/skin/_users/00000000_frank-avatar.jpg +0 -0
  58. data/skel/skin/_users/00000000_frank-avatar_small.jpg +0 -0
  59. data/skel/skin/_users/00000000_frank.yaml +0 -12
  60. data/skel/skin/_users/00000000_root-avatar.jpg +0 -0
  61. data/skel/skin/_users/00000000_root-avatar_small.jpg +0 -0
  62. data/skel/skin/_users/00000000_root.yaml +0 -11
  63. data/skel/skin/_users/css/users.css +0 -21
  64. data/skel/skin/_users/css/users.less +0 -25
  65. data/skel/skin/_users/done.html +0 -42
  66. data/skel/skin/_users/index.html +0 -46
  67. data/skel/skin/_users/index.yaml +0 -3
  68. data/skel/skin/_users/summary.html +0 -40
  69. data/skel/skin/css/base.css +0 -93
  70. data/skel/skin/css/base.less +0 -139
  71. data/skel/skin/css/coax.css +0 -199
  72. data/skel/skin/css/coax.less +0 -244
  73. data/skel/skin/examples/blog/20091214_0001.yaml +0 -8
  74. data/skel/skin/examples/blog/20100630_0001.yaml +0 -8
  75. data/skel/skin/examples/blog/20100630_0002.yaml +0 -14
  76. data/skel/skin/examples/blog/20100701_0001.yaml +0 -8
  77. data/skel/skin/examples/blog/20100701_0002-a-20100701_0001-f.jpg +0 -0
  78. data/skel/skin/examples/blog/20100701_0002-a-20100701_0001-f_small.jpg +0 -0
  79. data/skel/skin/examples/blog/20100701_0002.yaml +0 -19
  80. data/skel/skin/examples/blog/frank/20100701_0001.yaml +0 -10
  81. data/skel/skin/examples/blog/frank/index.yaml +0 -4
  82. data/skel/skin/examples/blog/index.html +0 -51
  83. data/skel/skin/examples/blog/rss.xml +0 -18
  84. data/skel/skin/examples/contact/20100701_0001-file.txt +0 -1
  85. data/skel/skin/examples/contact/20100701_0001.yaml +0 -15
  86. data/skel/skin/examples/contact/20100701_0002.yaml +0 -8
  87. data/skel/skin/examples/contact/20100701_0003.yaml +0 -9
  88. data/skel/skin/examples/contact/index.html +0 -47
  89. data/skel/skin/examples/contact/js/contact.js +0 -13
  90. data/skel/skin/examples/contact/summary.html +0 -54
  91. data/skel/skin/examples/forum/20100701_0001.yaml +0 -41
  92. data/skel/skin/examples/forum/20100701_0002.yaml +0 -25
  93. data/skel/skin/examples/forum/index.html +0 -68
  94. data/skel/skin/examples/forum/summary.html +0 -47
  95. data/skel/skin/examples/index.html +0 -73
  96. data/skel/skin/index.html +0 -39
  97. data/skel/skin/js/base.js +0 -50
  98. data/t/locale/de/index.po +0 -19
  99. data/t/locale/en-GB/index.po +0 -25
  100. data/t/locale/ja/index.po +0 -30
  101. data/t/skin/_users/00000000_test.yaml +0 -3
  102. data/t/skin/_users/index.html +0 -13
  103. data/t/skin/foo/20091120_0001.yaml +0 -7
  104. data/t/skin/foo/bar/20091120_0001.yaml +0 -5
  105. data/t/skin/foo/bar/index.yaml +0 -5
  106. data/t/skin/foo/baz/css/baz.css +0 -1
  107. data/t/skin/foo/css/foo.css +0 -1
  108. data/t/skin/foo/index.html +0 -14
  109. data/t/skin/foo/index.yaml +0 -7
  110. data/t/skin/foo/not_css/foo.css +0 -1
  111. data/t/skin/foo/qux/index.html +0 -8
  112. data/t/skin/foo/qux/moo/index.html +0 -6
  113. data/t/skin/foo/sub-20100306_0001.yaml +0 -3
  114. data/t/skin/index.yaml +0 -3
  115. data/t/skin/t_attachment/index.html +0 -13
  116. data/t/skin/t_contact/done.html +0 -6
  117. data/t/skin/t_contact/index.html +0 -9
  118. data/t/skin/t_file/index.html +0 -16
  119. data/t/skin/t_img/index.html +0 -14
  120. data/t/skin/t_img/test.jpg +0 -0
  121. data/t/skin/t_select/index.html +0 -9
  122. data/t/skin/t_store/index.html +0 -9
  123. data/t/skin/t_summary/20100326_0001.yaml +0 -3
  124. data/t/skin/t_summary/create.html +0 -9
  125. data/t/skin/t_summary/index.html +0 -9
  126. data/t/skin/t_summary/summary.html +0 -9
  127. data/t/t.rb +0 -27
  128. data/t/test_checkbox.rb +0 -273
  129. data/t/test_field.rb +0 -330
  130. data/t/test_file.rb +0 -900
  131. data/t/test_id.rb +0 -215
  132. data/t/test_img.rb +0 -328
  133. data/t/test_meta.rb +0 -57
  134. data/t/test_parser.rb +0 -1516
  135. data/t/test_password.rb +0 -188
  136. data/t/test_radio.rb +0 -226
  137. data/t/test_role.rb +0 -249
  138. data/t/test_runo.rb +0 -768
  139. data/t/test_runo_call.rb +0 -1281
  140. data/t/test_runo_i18n.rb +0 -325
  141. data/t/test_select.rb +0 -182
  142. data/t/test_set_complex.rb +0 -527
  143. data/t/test_set_dynamic.rb +0 -1504
  144. data/t/test_set_folder.rb +0 -515
  145. data/t/test_set_permit.rb +0 -246
  146. data/t/test_set_static.rb +0 -468
  147. data/t/test_storage.rb +0 -915
  148. data/t/test_text.rb +0 -125
  149. data/t/test_textarea.rb +0 -138
  150. data/t/test_timestamp.rb +0 -473
  151. data/t/test_workflow.rb +0 -367
@@ -1,367 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- # Author:: Akira FUNAI
4
- # Copyright:: Copyright (c) 2009 Akira FUNAI
5
-
6
- require "#{::File.dirname __FILE__}/t"
7
-
8
- class TC_Workflow < Test::Unit::TestCase
9
-
10
- class Runo::Workflow::Foo < Runo::Workflow
11
- PERM = {
12
- :create => 0b11000,
13
- :read => 0b11110,
14
- :update => 0b10100,
15
- :delete => 0b11000,
16
- }
17
- end
18
-
19
- def setup
20
- end
21
-
22
- def teardown
23
- end
24
-
25
- def test_instance
26
- sd = Runo::Set::Dynamic.new
27
- assert_instance_of(
28
- Runo::Workflow,
29
- Runo::Workflow.instance(sd),
30
- 'Runo::Workflow.instance should return a Workflow instance if sd[:workflow] is nil'
31
- )
32
- sd = Runo::Set::Static::Folder.root.item('foo', 'main')
33
- assert_instance_of(
34
- Runo::Workflow::Blog,
35
- Runo::Workflow.instance(sd),
36
- 'Runo::Workflow.instance should return a instance according to sd[:workflow]'
37
- )
38
-
39
- assert_equal(
40
- sd,
41
- Runo::Workflow.instance(sd).sd,
42
- 'Runo::Workflow.instance should set @sd'
43
- )
44
- end
45
-
46
- def test_roles
47
- assert_equal(
48
- %w(none),
49
- Runo::Workflow.roles(0b00001),
50
- 'Runo::Workflow.roles should return a human-readable string of the given roles'
51
- )
52
- assert_equal(
53
- %w(owner),
54
- Runo::Workflow.roles(0b00100),
55
- 'Runo::Workflow.roles should return a human-readable string of the given roles'
56
- )
57
- assert_equal(
58
- %w(admin),
59
- Runo::Workflow.roles(0b10000),
60
- 'Runo::Workflow.roles should return a human-readable string of the given roles'
61
- )
62
- assert_equal(
63
- %w(admin owner user),
64
- Runo::Workflow.roles(0b10110),
65
- 'Runo::Workflow.roles should return a human-readable string of the given roles'
66
- )
67
- end
68
-
69
- def test_wf_permit_guest?
70
- wf = Runo::Workflow::Foo.new(nil)
71
- assert(
72
- !wf.send(:'permit?', Runo::Workflow::ROLE_USER, :create),
73
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
74
- )
75
- assert(
76
- wf.send(:'permit?', Runo::Workflow::ROLE_USER, :read),
77
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
78
- )
79
- assert(
80
- !wf.send(:'permit?', Runo::Workflow::ROLE_USER, :update),
81
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
82
- )
83
- assert(
84
- !wf.send(:'permit?', Runo::Workflow::ROLE_USER, :delete),
85
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
86
- )
87
- end
88
-
89
- def test_wf_permit_owner?
90
- wf = Runo::Workflow::Foo.new(nil)
91
- assert(
92
- !wf.send(:'permit?', Runo::Workflow::ROLE_OWNER, :create),
93
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
94
- )
95
- assert(
96
- wf.send(:'permit?', Runo::Workflow::ROLE_OWNER, :read),
97
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
98
- )
99
- assert(
100
- wf.send(:'permit?', Runo::Workflow::ROLE_OWNER, :update),
101
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
102
- )
103
- assert(
104
- !wf.send(:'permit?', Runo::Workflow::ROLE_OWNER, :delete),
105
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
106
- )
107
- end
108
-
109
- def test_wf_permit_group?
110
- wf = Runo::Workflow::Foo.new(nil)
111
- assert(
112
- wf.send(:'permit?', Runo::Workflow::ROLE_GROUP, :create),
113
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
114
- )
115
- assert(
116
- wf.send(:'permit?', Runo::Workflow::ROLE_GROUP, :read),
117
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
118
- )
119
- assert(
120
- !wf.send(:'permit?', Runo::Workflow::ROLE_GROUP, :update),
121
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
122
- )
123
- assert(
124
- wf.send(:'permit?', Runo::Workflow::ROLE_GROUP, :delete),
125
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
126
- )
127
- end
128
-
129
- def test_wf_permit_admin?
130
- wf = Runo::Workflow::Foo.new(nil)
131
- assert(
132
- wf.send(:'permit?', Runo::Workflow::ROLE_ADMIN, :create),
133
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
134
- )
135
- assert(
136
- wf.send(:'permit?', Runo::Workflow::ROLE_ADMIN, :read),
137
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
138
- )
139
- assert(
140
- wf.send(:'permit?', Runo::Workflow::ROLE_ADMIN, :update),
141
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
142
- )
143
- assert(
144
- wf.send(:'permit?', Runo::Workflow::ROLE_ADMIN, :delete),
145
- 'Set::Workflow#permit? should return whether it permits the client the action or not'
146
- )
147
- end
148
-
149
- def test_wf_permit_login_action?
150
- wf = Runo::Workflow::Foo.new(nil)
151
- assert(
152
- wf.send(:'permit?', Runo::Workflow::ROLE_USER, :login),
153
- 'Set::Workflow#permit? should always permit :login'
154
- )
155
- assert(
156
- wf.send(:'permit?', Runo::Workflow::ROLE_OWNER, :login),
157
- 'Set::Workflow#permit? should always permit :login'
158
- )
159
- assert(
160
- wf.send(:'permit?', Runo::Workflow::ROLE_GROUP, :login),
161
- 'Set::Workflow#permit? should always permit :login'
162
- )
163
- assert(
164
- wf.send(:'permit?', Runo::Workflow::ROLE_ADMIN, :login),
165
- 'Set::Workflow#permit? should always permit :login'
166
- )
167
- end
168
-
169
- def test_wf_permit_abnormal_action?
170
- wf = Runo::Workflow::Foo.new(nil)
171
- assert(
172
- !wf.send(:'permit?', Runo::Workflow::ROLE_ADMIN, :'non-exist'),
173
- 'Set::Workflow#permit? should always return false for non-exist actions'
174
- )
175
- end
176
-
177
- def test_permit_nobody?
178
- sd = Runo::Set::Static::Folder.root.item('foo', 'bar', 'main')
179
- Runo.client = nil
180
- assert(
181
- !sd.permit?(:create),
182
- "'nobody' should not create"
183
- )
184
- assert(
185
- sd.item('20091120_0001').permit?(:read),
186
- "'nobody' should be able to read the item"
187
- )
188
- assert(
189
- !sd.item('20091120_0001').permit?(:update),
190
- "'nobody' should not update carl's item"
191
- )
192
- assert(
193
- !sd.item('20091120_0001').permit?(:delete),
194
- "'nobody' should not delete carl's item"
195
- )
196
- end
197
-
198
- def test_permit_don?
199
- sd = Runo::Set::Static::Folder.root.item('foo', 'bar', 'main')
200
- Runo.client = 'don' # don belongs to the group of foo/bar/
201
- assert(
202
- sd.permit?(:create),
203
- 'don should be able to create'
204
- )
205
- assert(
206
- sd.item('20091120_0001').permit?(:read),
207
- 'don should be able to read the item'
208
- )
209
- assert(
210
- !sd.item('20091120_0001').permit?(:update),
211
- "don should not update carl's item"
212
- )
213
- assert(
214
- !sd.item('20091120_0001').permit?(:delete),
215
- "don should not delete carl's item"
216
- )
217
- end
218
-
219
- def test_permit_carl?
220
- sd = Runo::Set::Static::Folder.root.item('foo', 'bar', 'main')
221
- Runo.client = 'carl' # carl belongs to the group of foo/bar/, and the owner of the item #0001
222
- assert(
223
- sd.permit?(:create),
224
- 'carl should be able to create'
225
- )
226
- assert(
227
- sd.item('20091120_0001').permit?(:read),
228
- 'carl should be able to read the item'
229
- )
230
- assert(
231
- sd.item('20091120_0001').permit?(:update),
232
- "carl should be able to update his own item"
233
- )
234
- assert(
235
- sd.item('20091120_0001').permit?(:delete),
236
- "carl should be able to delete his own item"
237
- )
238
- end
239
-
240
- def test_permit_frank?
241
- sd = Runo::Set::Static::Folder.root.item('foo', 'bar', 'main')
242
- Runo.client = 'frank' # frank is an admin of foo/bar/
243
- assert(
244
- sd.permit?(:create),
245
- 'frank should be able to create'
246
- )
247
- assert(
248
- sd.item('20091120_0001').permit?(:read),
249
- 'frank should be able to read the item'
250
- )
251
- assert(
252
- sd.item('20091120_0001').permit?(:update),
253
- "frank should be able to update his own item"
254
- )
255
- assert(
256
- sd.item('20091120_0001').permit?(:delete),
257
- "frank should be able to delete his own item"
258
- )
259
- end
260
-
261
- def test_permit_abnormal_action?
262
- sd = Runo::Set::Static::Folder.root.item('foo', 'bar', 'main')
263
- Runo.client = 'frank'
264
- assert(
265
- !sd.permit?(:'****'),
266
- 'frank should not **** on the stage'
267
- )
268
- end
269
-
270
- class Runo::Workflow::Test_default_action < Runo::Workflow
271
- DEFAULT_SUB_ITEMS = {
272
- '_owner' => {:klass => 'meta-owner'},
273
- '_group' => {:klass => 'meta-group'},
274
- }
275
- PERM = {
276
- :create => 0b11000,
277
- :read => 0b10000,
278
- :update => 0b11100,
279
- :foo => 0b11110,
280
- }
281
- end
282
- def test_default_action
283
- sd = Runo::Set::Dynamic.new(
284
- :workflow => 'test_default_action',
285
- :group => ['roy']
286
- )
287
- def sd.meta_admins
288
- ['frank']
289
- end
290
- sd.load(
291
- '20091122_0001' => {'_owner' => 'carl'},
292
- '20091122_0002' => {'_owner' => 'frank'}
293
- )
294
- assert_equal('carl', sd.item('20091122_0001')[:owner])
295
- assert_equal('frank', sd.item('20091122_0002')[:owner])
296
-
297
- Runo.client = nil
298
- assert_equal(
299
- nil,
300
- sd.default_action,
301
- 'Workflow#default_action should return a permitted action for the client'
302
- )
303
-
304
- Runo.client = 'carl' # carl is not the member of the group
305
- assert_equal(
306
- :foo,
307
- sd.default_action,
308
- 'Workflow#default_action should return a permitted action for the client'
309
- )
310
- assert_equal(
311
- :update,
312
- sd.item('20091122_0001').default_action,
313
- 'Workflow#default_action should see the given conds'
314
- )
315
-
316
- Runo.client = 'roy' # roy belongs to the group
317
- assert_equal(
318
- :create,
319
- sd.default_action,
320
- 'Workflow#default_action should return a permitted action for the client'
321
- )
322
-
323
- Runo.client = 'frank' # frank is the admin
324
- assert_equal(
325
- :read,
326
- sd.default_action,
327
- 'Workflow#default_action should return a permitted action for the client'
328
- )
329
- end
330
-
331
- class Runo::Workflow::Test_default_sub_items < Runo::Workflow
332
- DEFAULT_SUB_ITEMS = {
333
- '_timestamp' => {:klass => 'meta-timestamp'},
334
- }
335
- end
336
- def test_default_sub_items
337
- sd = Runo::Set::Dynamic.new(
338
- :workflow => 'test_default_sub_items'
339
- )
340
- assert_equal(
341
- {'_timestamp' => {:klass => 'meta-timestamp'}},
342
- sd[:item]['default'][:item],
343
- 'Workflow#default_sub_items should supply DEFAULT_SUB_ITEMS to sd[:item][*]'
344
- )
345
-
346
- sd = Runo::Set::Dynamic.new(
347
- :workflow => 'test_default_sub_items',
348
- :item => {
349
- 'default' => {
350
- :item => {
351
- '_timestamp' => {:klass => 'meta-timestamp', :can_update => true},
352
- 'foo' => {:klass => 'text'},
353
- },
354
- },
355
- }
356
- )
357
- assert_equal(
358
- {
359
- '_timestamp' => {:klass => 'meta-timestamp', :can_update => true},
360
- 'foo' => {:klass => 'text'},
361
- },
362
- sd[:item]['default'][:item],
363
- 'Workflow#default_sub_items should be overriden by sd[:item]'
364
- )
365
- end
366
-
367
- end