lolita 3.1.9 → 3.1.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (239) hide show
  1. data/.document +5 -5
  2. data/.rspec +2 -2
  3. data/GUIDELINES.rdoc +24 -24
  4. data/Gemfile +26 -26
  5. data/History.rdoc +154 -154
  6. data/LICENSE.txt +22 -22
  7. data/README.rdoc +98 -98
  8. data/Rakefile +40 -40
  9. data/VERSION +1 -1
  10. data/app/controllers/lolita/info_controller.rb +41 -41
  11. data/app/controllers/lolita/rest_controller.rb +130 -130
  12. data/app/helpers/components/lolita/configuration/list_component.rb +10 -10
  13. data/app/helpers/lolita_helper.rb +11 -11
  14. data/app/views/components/lolita/configuration/column/_display.html.erb +4 -4
  15. data/app/views/components/lolita/configuration/column/_header.html.erb +7 -7
  16. data/app/views/components/lolita/configuration/column/_sort.html.erb +4 -4
  17. data/app/views/components/lolita/configuration/columns/_body.html.erb +4 -4
  18. data/app/views/components/lolita/configuration/columns/_display.html.erb +1 -1
  19. data/app/views/components/lolita/configuration/columns/_first.html.erb +2 -2
  20. data/app/views/components/lolita/configuration/columns/_first_column_header.html.erb +3 -3
  21. data/app/views/components/lolita/configuration/columns/_header.html.erb +8 -8
  22. data/app/views/components/lolita/configuration/columns/_last.html.erb +4 -4
  23. data/app/views/components/lolita/configuration/columns/_last_column_header.html.erb +2 -2
  24. data/app/views/components/lolita/configuration/columns/_row.html.erb +7 -7
  25. data/app/views/components/lolita/configuration/field/_display.html.erb +9 -9
  26. data/app/views/components/lolita/configuration/field/_label.html.erb +1 -1
  27. data/app/views/components/lolita/configuration/field/_object.html.erb +1 -1
  28. data/app/views/components/lolita/configuration/field/array/_display.html.erb +4 -4
  29. data/app/views/components/lolita/configuration/field/array/habtm/_display.html.erb +26 -26
  30. data/app/views/components/lolita/configuration/field/array/select/_display.html.erb +5 -5
  31. data/app/views/components/lolita/configuration/field/boolean/filter/_display.html.erb +1 -1
  32. data/app/views/components/lolita/configuration/field/date/_display.html.erb +1 -1
  33. data/app/views/components/lolita/configuration/field/date_time/date/_display.html.erb +1 -1
  34. data/app/views/components/lolita/configuration/field/integer/_display.html.erb +1 -1
  35. data/app/views/components/lolita/configuration/field/string/_display.html.erb +4 -4
  36. data/app/views/components/lolita/configuration/field/string/disabled/_display.html.erb +1 -1
  37. data/app/views/components/lolita/configuration/field/string/password/_display.html.erb +3 -3
  38. data/app/views/components/lolita/configuration/field/string/text/_display.html.erb +18 -18
  39. data/app/views/components/lolita/configuration/field_set/_display.html.erb +5 -5
  40. data/app/views/components/lolita/configuration/list/_display.html.erb +10 -10
  41. data/app/views/components/lolita/configuration/list/_filter.html.erb +7 -7
  42. data/app/views/components/lolita/configuration/list/_new_resource.html.erb +4 -4
  43. data/app/views/components/lolita/configuration/list/_title.html.erb +4 -4
  44. data/app/views/components/lolita/configuration/tab/_display.html.erb +17 -17
  45. data/app/views/components/lolita/configuration/tab/_fields.html.erb +6 -6
  46. data/app/views/components/lolita/configuration/tab/content/_display.html.erb +1 -1
  47. data/app/views/components/lolita/configuration/tab/default/_display.html.erb +8 -8
  48. data/app/views/components/lolita/configuration/tabs/_display.html.erb +10 -10
  49. data/app/views/components/lolita/navigation/_display.html.erb +2 -2
  50. data/app/views/components/lolita/navigation/_tree.html.erb +38 -38
  51. data/app/views/components/lolita/shared/_flash.html.erb +5 -5
  52. data/app/views/components/lolita/shared/_header.html.erb +8 -8
  53. data/app/views/components/lolita/shared/_right_sidebar.html.erb +13 -13
  54. data/app/views/layouts/lolita/application.html.erb +44 -44
  55. data/app/views/lolita/info/index.html.erb +232 -232
  56. data/app/views/lolita/rest/form.html.erb +1 -1
  57. data/app/views/lolita/rest/index.html.erb +1 -1
  58. data/author +1 -1
  59. data/config/locales/default/lv.yml +180 -180
  60. data/config/locales/en.yml +20 -20
  61. data/config/locales/lv.yml +20 -20
  62. data/config/routes.rb +3 -3
  63. data/db/seed.rb +1 -1
  64. data/features/create_page.feature +19 -19
  65. data/features/step_definitions/lolita_steps.rb +7 -7
  66. data/features/step_definitions/web_steps.rb +219 -219
  67. data/features/support/env.rb +73 -73
  68. data/features/support/paths.rb +35 -35
  69. data/lib/generators/helpers/file_helper.rb +22 -22
  70. data/lib/generators/lolita/assets_generator.rb +18 -18
  71. data/lib/generators/lolita/install_generator.rb +28 -28
  72. data/lib/generators/templates/lolita.rb +19 -19
  73. data/lib/lolita.rb +184 -184
  74. data/lib/lolita/adapter/abstract_adapter.rb +13 -13
  75. data/lib/lolita/adapter/active_record.rb +148 -148
  76. data/lib/lolita/adapter/mongoid.rb +127 -127
  77. data/lib/lolita/base_configuration.rb +165 -165
  78. data/lib/lolita/builder.rb +249 -249
  79. data/lib/lolita/configuration/base.rb +76 -76
  80. data/lib/lolita/configuration/column.rb +94 -94
  81. data/lib/lolita/configuration/columns.rb +66 -66
  82. data/lib/lolita/configuration/factory.rb +55 -55
  83. data/lib/lolita/configuration/field.rb +216 -216
  84. data/lib/lolita/configuration/field/array.rb +75 -75
  85. data/lib/lolita/configuration/field/big_decimal.rb +12 -12
  86. data/lib/lolita/configuration/field/boolean.rb +12 -12
  87. data/lib/lolita/configuration/field/date.rb +12 -12
  88. data/lib/lolita/configuration/field/date_time.rb +13 -13
  89. data/lib/lolita/configuration/field/integer.rb +12 -12
  90. data/lib/lolita/configuration/field/string.rb +13 -13
  91. data/lib/lolita/configuration/field/time.rb +13 -13
  92. data/lib/lolita/configuration/field_set.rb +25 -25
  93. data/lib/lolita/configuration/fields.rb +35 -35
  94. data/lib/lolita/configuration/filter.rb +108 -108
  95. data/lib/lolita/configuration/list.rb +104 -104
  96. data/lib/lolita/configuration/page.rb +124 -124
  97. data/lib/lolita/configuration/tab.rb +187 -187
  98. data/lib/lolita/configuration/tab/content.rb +21 -21
  99. data/lib/lolita/configuration/tab/default.rb +25 -25
  100. data/lib/lolita/configuration/tabs.rb +132 -132
  101. data/lib/lolita/controllers/component_helpers.rb +127 -127
  102. data/lib/lolita/controllers/internal_helpers.rb +109 -109
  103. data/lib/lolita/controllers/url_helpers.rb +111 -111
  104. data/lib/lolita/controllers/user_helpers.rb +32 -32
  105. data/lib/lolita/controllers/view_user_helpers.rb +12 -12
  106. data/lib/lolita/dbi/base.rb +50 -50
  107. data/lib/lolita/errors.rb +12 -12
  108. data/lib/lolita/hooks.rb +355 -355
  109. data/lib/lolita/hooks/named_hook.rb +125 -125
  110. data/lib/lolita/lazy_loader.rb +46 -46
  111. data/lib/lolita/mapping.rb +55 -55
  112. data/lib/lolita/modules.rb +6 -6
  113. data/lib/lolita/modules/rest.rb +10 -10
  114. data/lib/lolita/navigation/branch.rb +132 -132
  115. data/lib/lolita/navigation/tree.rb +116 -116
  116. data/lib/lolita/observed_array.rb +74 -74
  117. data/lib/lolita/rails.rb +20 -20
  118. data/lib/lolita/rails/all.rb +10 -10
  119. data/lib/lolita/rails/routes.rb +133 -133
  120. data/lib/lolita/ruby_ext/accessors.rb +26 -26
  121. data/lib/lolita/support/formatter.rb +62 -62
  122. data/lib/lolita/support/formatter/rails.rb +56 -56
  123. data/lib/lolita/test/matchers.rb +77 -77
  124. data/lolita.gemspec +2 -2
  125. data/public/javascripts/jquery-1.6.min.js +15 -15
  126. data/public/javascripts/jquery-ui-1.8.13.min.js +407 -407
  127. data/public/javascripts/lolita/main.js +39 -39
  128. data/public/javascripts/lolita/tab.js +41 -41
  129. data/public/javascripts/modernizr-1.7.min.js +1 -1
  130. data/public/javascripts/rails.js +137 -137
  131. data/public/javascripts/tinymce/langs/en.js +221 -221
  132. data/public/javascripts/tinymce/license.txt +504 -504
  133. data/public/javascripts/tinymce/themes/advanced/about.htm +52 -52
  134. data/public/javascripts/tinymce/themes/advanced/anchor.htm +26 -26
  135. data/public/javascripts/tinymce/themes/advanced/charmap.htm +51 -51
  136. data/public/javascripts/tinymce/themes/advanced/color_picker.htm +74 -74
  137. data/public/javascripts/tinymce/themes/advanced/editor_template_src.js +1328 -1328
  138. data/public/javascripts/tinymce/themes/advanced/image.htm +80 -80
  139. data/public/javascripts/tinymce/themes/advanced/js/about.js +73 -73
  140. data/public/javascripts/tinymce/themes/advanced/js/anchor.js +42 -42
  141. data/public/javascripts/tinymce/themes/advanced/js/charmap.js +354 -354
  142. data/public/javascripts/tinymce/themes/advanced/js/color_picker.js +329 -329
  143. data/public/javascripts/tinymce/themes/advanced/js/image.js +247 -247
  144. data/public/javascripts/tinymce/themes/advanced/js/link.js +153 -153
  145. data/public/javascripts/tinymce/themes/advanced/js/source_editor.js +56 -56
  146. data/public/javascripts/tinymce/themes/advanced/langs/en.js +68 -68
  147. data/public/javascripts/tinymce/themes/advanced/langs/en_dlg.js +53 -53
  148. data/public/javascripts/tinymce/themes/advanced/link.htm +57 -57
  149. data/public/javascripts/tinymce/themes/advanced/shortcuts.htm +47 -47
  150. data/public/javascripts/tinymce/themes/advanced/skins/cirkuit/content.css +66 -66
  151. data/public/javascripts/tinymce/themes/advanced/skins/cirkuit/dialog.css +117 -117
  152. data/public/javascripts/tinymce/themes/advanced/skins/cirkuit/ui.css +988 -988
  153. data/public/javascripts/tinymce/themes/advanced/source_editor.htm +25 -25
  154. data/public/javascripts/tinymce/tiny_mce_popup.js +4 -4
  155. data/public/javascripts/tinymce_config.js +15 -15
  156. data/public/stylesheets/lolita/default.css +169 -169
  157. data/public/stylesheets/lolita/style.css +253 -253
  158. data/spec/adapter_helper.rb +43 -43
  159. data/spec/builder_spec.rb +120 -120
  160. data/spec/configuration/base_spec.rb +44 -44
  161. data/spec/configuration/column_spec.rb +89 -89
  162. data/spec/configuration/columns_spec.rb +54 -54
  163. data/spec/configuration/field_set_spec.rb +12 -12
  164. data/spec/configuration/field_spec.rb +118 -118
  165. data/spec/configuration/filter_spec.rb +122 -122
  166. data/spec/configuration/list_spec.rb +76 -76
  167. data/spec/configuration/page_spec.rb +19 -19
  168. data/spec/configuration/tab_spec.rb +165 -165
  169. data/spec/configuration/tabs_spec.rb +106 -106
  170. data/spec/controllers/component_helpers_spec.rb +5 -5
  171. data/spec/controllers/internal_helpers_spec.rb +76 -76
  172. data/spec/controllers/lolita_rest_nested_resources_spec.rb +33 -33
  173. data/spec/controllers/lolita_rest_spec.rb +53 -53
  174. data/spec/dbi/base_spec.rb +44 -44
  175. data/spec/hooks_spec.rb +257 -257
  176. data/spec/lolita_spec.rb +13 -13
  177. data/spec/mapping_spec.rb +29 -29
  178. data/spec/navigation/branch_spec.rb +81 -81
  179. data/spec/navigation/tree_spec.rb +73 -73
  180. data/spec/orm/mongoid.rb +11 -11
  181. data/spec/rails_app/app/controllers/application_controller.rb +3 -3
  182. data/spec/rails_app/app/helpers/application_helper.rb +3 -3
  183. data/spec/rails_app/app/mongoid/address.rb +7 -7
  184. data/spec/rails_app/app/mongoid/category.rb +5 -5
  185. data/spec/rails_app/app/mongoid/comment.rb +5 -5
  186. data/spec/rails_app/app/mongoid/post.rb +18 -18
  187. data/spec/rails_app/app/mongoid/preference.rb +5 -5
  188. data/spec/rails_app/app/mongoid/profile.rb +13 -13
  189. data/spec/rails_app/app/mongoid/tag.rb +3 -3
  190. data/spec/rails_app/app/views/components/lolita/configuration/list/_body_cell.html.erb +1 -1
  191. data/spec/rails_app/config/application.rb +26 -26
  192. data/spec/rails_app/config/boot.rb +13 -13
  193. data/spec/rails_app/config/environment.rb +5 -5
  194. data/spec/rails_app/config/environments/development.rb +19 -19
  195. data/spec/rails_app/config/environments/production.rb +33 -33
  196. data/spec/rails_app/config/environments/test.rb +33 -33
  197. data/spec/rails_app/config/initializers/backtrace_silencers.rb +7 -7
  198. data/spec/rails_app/config/initializers/inflections.rb +2 -2
  199. data/spec/rails_app/config/initializers/secret_token.rb +1 -1
  200. data/spec/rails_app/config/routes.rb +2 -2
  201. data/spec/rails_app/lib/lolita/configuration/field/my_custom_collection.rb +13 -13
  202. data/spec/rails_app/public/javascripts/jquery-1.5.1.min.js +15 -15
  203. data/spec/rails_app/public/javascripts/lolita/main.js +6 -6
  204. data/spec/rails_app/public/javascripts/lolita/tab.js +40 -40
  205. data/spec/rails_app/public/javascripts/modernizr-1.7.min.js +1 -1
  206. data/spec/rails_app/public/javascripts/rails.js +137 -137
  207. data/spec/rails_app/public/javascripts/tinymce/langs/en.js +221 -221
  208. data/spec/rails_app/public/javascripts/tinymce/license.txt +504 -504
  209. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/about.htm +52 -52
  210. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/anchor.htm +26 -26
  211. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/charmap.htm +51 -51
  212. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/color_picker.htm +74 -74
  213. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/editor_template_src.js +1328 -1328
  214. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/image.htm +80 -80
  215. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/about.js +73 -73
  216. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/anchor.js +42 -42
  217. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/charmap.js +354 -354
  218. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/color_picker.js +329 -329
  219. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/image.js +247 -247
  220. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/link.js +153 -153
  221. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/js/source_editor.js +56 -56
  222. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/langs/en.js +68 -68
  223. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/langs/en_dlg.js +53 -53
  224. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/link.htm +57 -57
  225. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/shortcuts.htm +47 -47
  226. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/content.css +66 -66
  227. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/dialog.css +117 -117
  228. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/skins/cirkuit/ui.css +988 -988
  229. data/spec/rails_app/public/javascripts/tinymce/themes/advanced/source_editor.htm +25 -25
  230. data/spec/rails_app/public/javascripts/tinymce/tiny_mce_popup.js +4 -4
  231. data/spec/rails_app/public/stylesheets/lolita/default.css +169 -169
  232. data/spec/rails_app/public/stylesheets/lolita/style.css +214 -214
  233. data/spec/routing/routes_spec.rb +15 -15
  234. data/spec/spec_helper.rb +46 -46
  235. data/spec/support/factories/category.rb +3 -3
  236. data/spec/support/factories/post.rb +4 -4
  237. data/spec/support/factories/tag.rb +2 -2
  238. data/spec/support/formatter_spec.rb +42 -42
  239. metadata +31 -31
@@ -1,44 +1,44 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe Lolita::DBI::Base do
4
- # before(:each) do
5
- # @base = Base.new
6
- # end
7
-
8
- it "should raise error when not ORM class is given" do
9
- lambda{
10
- Lolita::DBI::Base.new(String)
11
- }.should raise_error Lolita::NotORMClassError
12
- lambda{
13
- Lolita::DBI::Base.new()
14
- }.should raise_error ArgumentError
15
- end
16
-
17
- it "should detect adapter" do
18
- dbi=Lolita::DBI::Base.new(Post)
19
- dbi.klass.should == Post
20
- Lolita::DBI::Base.adapters.should include(dbi.adapter_name)
21
- end
22
-
23
- it "should connect adapter" do
24
- dbi=Lolita::DBI::Base.new(Post)
25
- lambda{
26
- dbi.fields
27
- }.should_not raise_error
28
- end
29
-
30
- it "should display all adapter available" do
31
- Lolita::DBI::Base.adapters.size.should > 0
32
- end
33
-
34
- it "should order with paginate" do
35
- Post.destroy_all
36
- Factory.create(:post, :title => "Apple")
37
- Factory.create(:post, :title => "Banana")
38
- Factory.create(:post, :title => "Cucumber")
39
- dbi=Lolita::DBI::Base.new(Post)
40
- dbi.paginate(:per_page => 3, :page => 1, :sort => [[:title,:desc]]).map(&:title).should == %w(Cucumber Banana Apple)
41
- dbi.paginate(:per_page => 3, :page => 1, :sort => [[:title,:asc]]).map(&:title).should == %w(Apple Banana Cucumber)
42
- end
43
- end
44
-
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Lolita::DBI::Base do
4
+ # before(:each) do
5
+ # @base = Base.new
6
+ # end
7
+
8
+ it "should raise error when not ORM class is given" do
9
+ lambda{
10
+ Lolita::DBI::Base.new(String)
11
+ }.should raise_error Lolita::NotORMClassError
12
+ lambda{
13
+ Lolita::DBI::Base.new()
14
+ }.should raise_error ArgumentError
15
+ end
16
+
17
+ it "should detect adapter" do
18
+ dbi=Lolita::DBI::Base.new(Post)
19
+ dbi.klass.should == Post
20
+ Lolita::DBI::Base.adapters.should include(dbi.adapter_name)
21
+ end
22
+
23
+ it "should connect adapter" do
24
+ dbi=Lolita::DBI::Base.new(Post)
25
+ lambda{
26
+ dbi.fields
27
+ }.should_not raise_error
28
+ end
29
+
30
+ it "should display all adapter available" do
31
+ Lolita::DBI::Base.adapters.size.should > 0
32
+ end
33
+
34
+ it "should order with paginate" do
35
+ Post.destroy_all
36
+ Factory.create(:post, :title => "Apple")
37
+ Factory.create(:post, :title => "Banana")
38
+ Factory.create(:post, :title => "Cucumber")
39
+ dbi=Lolita::DBI::Base.new(Post)
40
+ dbi.paginate(:per_page => 3, :page => 1, :sort => [[:title,:desc]]).map(&:title).should == %w(Cucumber Banana Apple)
41
+ dbi.paginate(:per_page => 3, :page => 1, :sort => [[:title,:asc]]).map(&:title).should == %w(Apple Banana Cucumber)
42
+ end
43
+ end
44
+
data/spec/hooks_spec.rb CHANGED
@@ -1,257 +1,257 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/simple_spec_helper')
2
-
3
-
4
- class MyClass
5
- def self.value(value=nil)
6
- @value=value if value
7
- @value
8
- end
9
-
10
- attr_accessor :name
11
- def initialize
12
- self.run(:after_init)
13
- end
14
-
15
- def save
16
- self.run(:before_save)
17
- end
18
- end
19
-
20
- class Counter
21
- def self.set(val)
22
- @value=val
23
- end
24
-
25
- def self.get
26
- @value
27
- end
28
- end
29
-
30
- describe Lolita::Hooks do
31
- after(:each) do
32
- MyClass.clear_hooks if MyClass.respond_to?(:clear_hooks)
33
- Counter.clear_hooks if Counter.respond_to?(:clear_hooks)
34
- MyClass.value(0)
35
- end
36
-
37
- it "should be possible to define hooks for class" do
38
- MyClass.send(:include, Lolita::Hooks)
39
- MyClass.add_hook(:after_load)
40
- MyClass.hooks.should have(1).item
41
- end
42
-
43
- it "should accept callback for class" do
44
- MyClass.send(:include, Lolita::Hooks)
45
- MyClass.add_hook(:after_load)
46
- MyClass.after_load do
47
- 1+1
48
- end
49
- MyClass.callbacks[:after_load][:blocks].should have(1).item
50
- MyClass.callbacks[:after_load][:methods].should have(0).items
51
- end
52
-
53
- it "should append methods and blocks to callbacks" do
54
- MyClass.send(:include,Lolita::Hooks)
55
- MyClass.add_hook(:after_load)
56
- MyClass.after_load {}
57
- MyClass.after_load {}
58
- MyClass.after_load :method
59
- MyClass.after_load :other_method
60
- MyClass.callbacks[:after_load][:blocks].should have(2).items
61
- MyClass.callbacks[:after_load][:methods].should have(2).items
62
- end
63
-
64
- context "Firing callbacks" do
65
-
66
- before(:each) do
67
- MyClass.send(:include, Lolita::Hooks)
68
- MyClass.add_hook(:after_load)
69
- MyClass.add_hook(:after_init)
70
- MyClass.add_hook(:before_save)
71
- end
72
-
73
- it "should ran on instance when called on one" do
74
- MyClass.value(0)
75
- MyClass.after_init do
76
- self.name="name"
77
- end
78
- object=MyClass.new
79
- object.name.should == "name"
80
- end
81
-
82
- it "should accept callbacks for any instance" do
83
- object=MyClass.new
84
- object.before_save do
85
- self.name="new name"
86
- end
87
- object.save
88
- object.name.should == "new name"
89
- end
90
-
91
- it "should detect hook by name" do
92
- MyClass.after_load do
93
- value(true)
94
- end
95
- MyClass.run(:after_load)
96
- MyClass.value.should be_true
97
- end
98
-
99
- it "should have named run method" do
100
- MyClass.after_load {
101
- MyClass.value(MyClass.value()+1)
102
- }
103
- object=MyClass.new
104
- MyClass.run_after_load
105
- object.run_after_load
106
- MyClass.value.should == 2
107
- end
108
-
109
- it "should execute callback each time" do
110
- MyClass.value(0)
111
- MyClass.after_load do
112
- value(value()+1)
113
- end
114
- MyClass.run(:after_load)
115
- MyClass.run(:after_load)
116
- MyClass.value.should == 2
117
- end
118
-
119
-
120
- describe "block content" do
121
- it "should return block content" do
122
- MyClass.after_load do
123
- "My name"+
124
- let_content.to_s
125
- end
126
-
127
- output=MyClass.run(:after_load) do
128
- " is Earl"
129
- end
130
-
131
- output.should == "My name is Earl"
132
- end
133
- end
134
-
135
- context "wrap around" do
136
-
137
- it "should allow to wrap around when #run receive block" do
138
- MyClass.after_load do
139
- value("first")
140
- let_content()
141
- end
142
-
143
- MyClass.run(:after_load) do
144
- value("second")
145
- end
146
- MyClass.value.should == "second"
147
- end
148
-
149
- it "should call default block when no block passed as callback" do
150
- MyClass.run(:after_load) do
151
- value("inblock")
152
- end
153
-
154
- MyClass.value.should=="inblock"
155
- end
156
- end
157
-
158
- context "methods as callbacks" do
159
- class MethodTestClass
160
- include Lolita::Hooks
161
- add_hook :before_save
162
- before_save :set_name
163
-
164
- def save
165
- self.run_before_save
166
- end
167
-
168
- private
169
-
170
- def self.set_name
171
- @name="Class name"
172
- end
173
-
174
- def set_name
175
- @name="Name"
176
- end
177
- end
178
-
179
- it "should call callback for method on class" do
180
- MethodTestClass.run_before_save
181
- MethodTestClass.instance_variable_get(:"@name").should == "Class name"
182
- end
183
-
184
- it "should run callbac on instance" do
185
- object=MethodTestClass.new
186
- object.save
187
- object.instance_variable_get(:"@name").should == "Name"
188
- end
189
- end
190
- end
191
-
192
-
193
- describe "named callbacks" do
194
- before(:each) do
195
- Lolita::Hooks::NamedHook.add(:components) unless Lolita::Hooks::NamedHook.exist?(:component)
196
- end
197
-
198
- after(:each) do
199
- Lolita::Hooks.components.clear_hooks
200
- end
201
-
202
- it "should add callbacks" do
203
- Lolita::Hooks.components.add_hook(:before)
204
- Lolita::Hooks.components.hooks.should have(1).hook
205
- end
206
-
207
- it "should filter by name" do
208
- Lolita::Hooks.components.add_hook(:before)
209
- Counter.set(0)
210
- Lolita::Hooks.component(:"list").before do
211
- Counter.set(Counter.get+1)
212
- end
213
-
214
- Lolita::Hooks.component(:"tab").before do
215
- Counter.set(Counter.get+1)
216
- end
217
-
218
- Lolita::Hooks.component(:"list").run(:before)
219
- Counter.get.should == 1
220
- end
221
-
222
- it "should run on each named object when defined for all collection" do
223
- Lolita::Hooks.components.add_hook(:after)
224
- Counter.set(0)
225
- Lolita::Hooks.components.after do
226
- Counter.set(Counter.get+1)
227
- end
228
- Lolita::Hooks.component(:"list").run(:after)
229
- Lolita::Hooks.component(:"tab").run(:after)
230
- Counter.get.should == 2
231
- end
232
-
233
- it "should execute run block when no callback block given" do
234
- Lolita::Hooks.components.add_hook(:around)
235
- Counter.set(0)
236
- Lolita::Hooks.components.run(:around) do
237
- Counter.set(1)
238
- end
239
- Counter.get.should==1
240
- end
241
-
242
- it "should run all named hook callbacks when runned on named collection" do
243
- pending "Need to update functionality to work."
244
- Lolita::Hooks.components.add_hook(:after)
245
- Counter.set(0)
246
- Lolita::Hooks.component(:"list").after do
247
- Counter.set(Counter.get+1)
248
- end
249
- Lolita::Hooks.component(:"tab").after do
250
- Counter.set(Counter.get+1)
251
- end
252
- Lolita::Hooks.components.run(:after)
253
- Counter.get.should == 2
254
- end
255
-
256
- end
257
- end
1
+ require File.expand_path(File.dirname(__FILE__) + '/simple_spec_helper')
2
+
3
+
4
+ class MyClass
5
+ def self.value(value=nil)
6
+ @value=value if value
7
+ @value
8
+ end
9
+
10
+ attr_accessor :name
11
+ def initialize
12
+ self.run(:after_init)
13
+ end
14
+
15
+ def save
16
+ self.run(:before_save)
17
+ end
18
+ end
19
+
20
+ class Counter
21
+ def self.set(val)
22
+ @value=val
23
+ end
24
+
25
+ def self.get
26
+ @value
27
+ end
28
+ end
29
+
30
+ describe Lolita::Hooks do
31
+ after(:each) do
32
+ MyClass.clear_hooks if MyClass.respond_to?(:clear_hooks)
33
+ Counter.clear_hooks if Counter.respond_to?(:clear_hooks)
34
+ MyClass.value(0)
35
+ end
36
+
37
+ it "should be possible to define hooks for class" do
38
+ MyClass.send(:include, Lolita::Hooks)
39
+ MyClass.add_hook(:after_load)
40
+ MyClass.hooks.should have(1).item
41
+ end
42
+
43
+ it "should accept callback for class" do
44
+ MyClass.send(:include, Lolita::Hooks)
45
+ MyClass.add_hook(:after_load)
46
+ MyClass.after_load do
47
+ 1+1
48
+ end
49
+ MyClass.callbacks[:after_load][:blocks].should have(1).item
50
+ MyClass.callbacks[:after_load][:methods].should have(0).items
51
+ end
52
+
53
+ it "should append methods and blocks to callbacks" do
54
+ MyClass.send(:include,Lolita::Hooks)
55
+ MyClass.add_hook(:after_load)
56
+ MyClass.after_load {}
57
+ MyClass.after_load {}
58
+ MyClass.after_load :method
59
+ MyClass.after_load :other_method
60
+ MyClass.callbacks[:after_load][:blocks].should have(2).items
61
+ MyClass.callbacks[:after_load][:methods].should have(2).items
62
+ end
63
+
64
+ context "Firing callbacks" do
65
+
66
+ before(:each) do
67
+ MyClass.send(:include, Lolita::Hooks)
68
+ MyClass.add_hook(:after_load)
69
+ MyClass.add_hook(:after_init)
70
+ MyClass.add_hook(:before_save)
71
+ end
72
+
73
+ it "should ran on instance when called on one" do
74
+ MyClass.value(0)
75
+ MyClass.after_init do
76
+ self.name="name"
77
+ end
78
+ object=MyClass.new
79
+ object.name.should == "name"
80
+ end
81
+
82
+ it "should accept callbacks for any instance" do
83
+ object=MyClass.new
84
+ object.before_save do
85
+ self.name="new name"
86
+ end
87
+ object.save
88
+ object.name.should == "new name"
89
+ end
90
+
91
+ it "should detect hook by name" do
92
+ MyClass.after_load do
93
+ value(true)
94
+ end
95
+ MyClass.run(:after_load)
96
+ MyClass.value.should be_true
97
+ end
98
+
99
+ it "should have named run method" do
100
+ MyClass.after_load {
101
+ MyClass.value(MyClass.value()+1)
102
+ }
103
+ object=MyClass.new
104
+ MyClass.run_after_load
105
+ object.run_after_load
106
+ MyClass.value.should == 2
107
+ end
108
+
109
+ it "should execute callback each time" do
110
+ MyClass.value(0)
111
+ MyClass.after_load do
112
+ value(value()+1)
113
+ end
114
+ MyClass.run(:after_load)
115
+ MyClass.run(:after_load)
116
+ MyClass.value.should == 2
117
+ end
118
+
119
+
120
+ describe "block content" do
121
+ it "should return block content" do
122
+ MyClass.after_load do
123
+ "My name"+
124
+ let_content.to_s
125
+ end
126
+
127
+ output=MyClass.run(:after_load) do
128
+ " is Earl"
129
+ end
130
+
131
+ output.should == "My name is Earl"
132
+ end
133
+ end
134
+
135
+ context "wrap around" do
136
+
137
+ it "should allow to wrap around when #run receive block" do
138
+ MyClass.after_load do
139
+ value("first")
140
+ let_content()
141
+ end
142
+
143
+ MyClass.run(:after_load) do
144
+ value("second")
145
+ end
146
+ MyClass.value.should == "second"
147
+ end
148
+
149
+ it "should call default block when no block passed as callback" do
150
+ MyClass.run(:after_load) do
151
+ value("inblock")
152
+ end
153
+
154
+ MyClass.value.should=="inblock"
155
+ end
156
+ end
157
+
158
+ context "methods as callbacks" do
159
+ class MethodTestClass
160
+ include Lolita::Hooks
161
+ add_hook :before_save
162
+ before_save :set_name
163
+
164
+ def save
165
+ self.run_before_save
166
+ end
167
+
168
+ private
169
+
170
+ def self.set_name
171
+ @name="Class name"
172
+ end
173
+
174
+ def set_name
175
+ @name="Name"
176
+ end
177
+ end
178
+
179
+ it "should call callback for method on class" do
180
+ MethodTestClass.run_before_save
181
+ MethodTestClass.instance_variable_get(:"@name").should == "Class name"
182
+ end
183
+
184
+ it "should run callbac on instance" do
185
+ object=MethodTestClass.new
186
+ object.save
187
+ object.instance_variable_get(:"@name").should == "Name"
188
+ end
189
+ end
190
+ end
191
+
192
+
193
+ describe "named callbacks" do
194
+ before(:each) do
195
+ Lolita::Hooks::NamedHook.add(:components) unless Lolita::Hooks::NamedHook.exist?(:component)
196
+ end
197
+
198
+ after(:each) do
199
+ Lolita::Hooks.components.clear_hooks
200
+ end
201
+
202
+ it "should add callbacks" do
203
+ Lolita::Hooks.components.add_hook(:before)
204
+ Lolita::Hooks.components.hooks.should have(1).hook
205
+ end
206
+
207
+ it "should filter by name" do
208
+ Lolita::Hooks.components.add_hook(:before)
209
+ Counter.set(0)
210
+ Lolita::Hooks.component(:"list").before do
211
+ Counter.set(Counter.get+1)
212
+ end
213
+
214
+ Lolita::Hooks.component(:"tab").before do
215
+ Counter.set(Counter.get+1)
216
+ end
217
+
218
+ Lolita::Hooks.component(:"list").run(:before)
219
+ Counter.get.should == 1
220
+ end
221
+
222
+ it "should run on each named object when defined for all collection" do
223
+ Lolita::Hooks.components.add_hook(:after)
224
+ Counter.set(0)
225
+ Lolita::Hooks.components.after do
226
+ Counter.set(Counter.get+1)
227
+ end
228
+ Lolita::Hooks.component(:"list").run(:after)
229
+ Lolita::Hooks.component(:"tab").run(:after)
230
+ Counter.get.should == 2
231
+ end
232
+
233
+ it "should execute run block when no callback block given" do
234
+ Lolita::Hooks.components.add_hook(:around)
235
+ Counter.set(0)
236
+ Lolita::Hooks.components.run(:around) do
237
+ Counter.set(1)
238
+ end
239
+ Counter.get.should==1
240
+ end
241
+
242
+ it "should run all named hook callbacks when runned on named collection" do
243
+ pending "Need to update functionality to work."
244
+ Lolita::Hooks.components.add_hook(:after)
245
+ Counter.set(0)
246
+ Lolita::Hooks.component(:"list").after do
247
+ Counter.set(Counter.get+1)
248
+ end
249
+ Lolita::Hooks.component(:"tab").after do
250
+ Counter.set(Counter.get+1)
251
+ end
252
+ Lolita::Hooks.components.run(:after)
253
+ Counter.get.should == 2
254
+ end
255
+
256
+ end
257
+ end