waves 0.7.6 → 0.7.7

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.
Files changed (291) hide show
  1. data/app/Rakefile +64 -6
  2. data/app/configurations/development.rb.erb +2 -1
  3. data/app/configurations/mapping.rb.erb +1 -0
  4. data/app/configurations/production.rb.erb +1 -0
  5. data/app/lib/application.rb.erb +2 -2
  6. data/bin/waves +36 -1
  7. data/doc/HISTORY +44 -0
  8. data/doc/LICENSE +22 -0
  9. data/doc/rdoc/classes/Erubis/Context.html +218 -0
  10. data/doc/rdoc/classes/Kernel.html +145 -0
  11. data/doc/rdoc/classes/Symbol.html +154 -0
  12. data/doc/rdoc/classes/Tempfile.html +161 -0
  13. data/doc/rdoc/classes/Waves.html +455 -0
  14. data/doc/rdoc/classes/Waves/Application.html +371 -0
  15. data/doc/rdoc/classes/Waves/Blackboard.html +296 -0
  16. data/doc/rdoc/classes/Waves/Configurations.html +283 -0
  17. data/doc/rdoc/classes/Waves/Configurations/Base.html +209 -0
  18. data/doc/rdoc/classes/Waves/Configurations/Default.html +237 -0
  19. data/doc/rdoc/classes/Waves/Console.html +187 -0
  20. data/doc/rdoc/classes/Waves/Controllers.html +203 -0
  21. data/doc/rdoc/classes/Waves/Controllers/Base.html +151 -0
  22. data/doc/rdoc/classes/Waves/Controllers/Mixin.html +312 -0
  23. data/doc/rdoc/classes/Waves/Dispatchers.html +118 -0
  24. data/doc/rdoc/classes/Waves/Dispatchers/Base.html +198 -0
  25. data/doc/rdoc/classes/Waves/Dispatchers/Default.html +224 -0
  26. data/doc/rdoc/classes/Waves/Dispatchers/NotFoundError.html +122 -0
  27. data/doc/rdoc/classes/Waves/Dispatchers/Redirect.html +173 -0
  28. data/doc/rdoc/classes/Waves/Foundations.html +131 -0
  29. data/doc/rdoc/classes/Waves/Foundations/Default.html +179 -0
  30. data/doc/rdoc/classes/Waves/Foundations/Simple.html +167 -0
  31. data/doc/rdoc/classes/Waves/Helpers.html +176 -0
  32. data/doc/rdoc/classes/Waves/Helpers/AssetHelper.html +212 -0
  33. data/doc/rdoc/classes/Waves/Helpers/Common.html +213 -0
  34. data/doc/rdoc/classes/Waves/Helpers/Default.html +135 -0
  35. data/doc/rdoc/classes/Waves/Helpers/Form.html +201 -0
  36. data/doc/rdoc/classes/Waves/Helpers/Formatting.html +232 -0
  37. data/doc/rdoc/classes/Waves/Helpers/Model.html +194 -0
  38. data/doc/rdoc/classes/Waves/Helpers/NumberHelper.html +165 -0
  39. data/doc/rdoc/classes/Waves/Helpers/TagHelper.html +226 -0
  40. data/doc/rdoc/classes/Waves/Helpers/UrlHelper.html +242 -0
  41. data/doc/rdoc/classes/Waves/Helpers/View.html +163 -0
  42. data/doc/rdoc/classes/Waves/Inflect/InflectorMethods.html +475 -0
  43. data/doc/rdoc/classes/Waves/Layers.html +175 -0
  44. data/doc/rdoc/classes/Waves/Layers/DefaultErrors.html +161 -0
  45. data/doc/rdoc/classes/Waves/Layers/Inflect.html +119 -0
  46. data/doc/rdoc/classes/Waves/Layers/Inflect/English.html +168 -0
  47. data/doc/rdoc/classes/Waves/Layers/Inflect/English/Rules.html +112 -0
  48. data/doc/rdoc/classes/Waves/Layers/Inflect/English/StringMethods.html +194 -0
  49. data/doc/rdoc/classes/Waves/Layers/MVC.html +204 -0
  50. data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord.html +239 -0
  51. data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord/ControllerMethods.html +246 -0
  52. data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord/Symbol.html +132 -0
  53. data/doc/rdoc/classes/Waves/Layers/ORM/DataMapper.html +166 -0
  54. data/doc/rdoc/classes/Waves/Layers/ORM/Filebase.html +157 -0
  55. data/doc/rdoc/classes/Waves/Layers/ORM/Sequel.html +232 -0
  56. data/doc/rdoc/classes/Waves/Layers/ORM/Sequel/ControllerMethods.html +246 -0
  57. data/doc/rdoc/classes/Waves/Layers/Simple.html +169 -0
  58. data/doc/rdoc/classes/Waves/Layers/SimpleErrors.html +159 -0
  59. data/doc/rdoc/classes/Waves/Logger.html +288 -0
  60. data/doc/rdoc/classes/Waves/Mapping.html +760 -0
  61. data/doc/rdoc/classes/Waves/Mapping/PrettyUrls.html +129 -0
  62. data/doc/rdoc/classes/Waves/Mapping/PrettyUrls/GetRules.html +174 -0
  63. data/doc/rdoc/classes/Waves/Mapping/PrettyUrls/RestRules.html +180 -0
  64. data/doc/rdoc/classes/Waves/MimeTypes.html +200 -0
  65. data/doc/rdoc/classes/Waves/Renderers/Erubis.html +162 -0
  66. data/doc/rdoc/classes/Waves/Renderers/Haml.html +160 -0
  67. data/doc/rdoc/classes/Waves/Renderers/Markaby.html +167 -0
  68. data/doc/rdoc/classes/Waves/Renderers/Mixin.html +191 -0
  69. data/doc/rdoc/classes/Waves/Renderers/Scope.html +181 -0
  70. data/doc/rdoc/classes/Waves/Request.html +441 -0
  71. data/doc/rdoc/classes/Waves/Request/ParseError.html +111 -0
  72. data/doc/rdoc/classes/Waves/Response.html +283 -0
  73. data/doc/rdoc/classes/Waves/ResponseMixin.html +460 -0
  74. data/doc/rdoc/classes/Waves/ResponseProxy.html +269 -0
  75. data/doc/rdoc/classes/Waves/Server.html +488 -0
  76. data/doc/rdoc/classes/Waves/Session.html +330 -0
  77. data/doc/rdoc/classes/Waves/Utilities/Hash.html +185 -0
  78. data/doc/rdoc/classes/Waves/Utilities/Integer.html +424 -0
  79. data/doc/rdoc/classes/Waves/Utilities/Module.html +174 -0
  80. data/doc/rdoc/classes/Waves/Utilities/Object.html +155 -0
  81. data/doc/rdoc/classes/Waves/Utilities/Proc.html +145 -0
  82. data/doc/rdoc/classes/Waves/Utilities/String.html +290 -0
  83. data/doc/rdoc/classes/Waves/Views.html +278 -0
  84. data/doc/rdoc/classes/Waves/Views/Base.html +118 -0
  85. data/doc/rdoc/classes/Waves/Views/Mixin.html +279 -0
  86. data/doc/rdoc/classes/Waves/Views/NoTemplateError.html +111 -0
  87. data/doc/rdoc/created.rid +1 -0
  88. data/doc/rdoc/files/README_rdoc.html +415 -0
  89. data/doc/rdoc/files/bin/waves.html +135 -0
  90. data/doc/rdoc/files/doc/HISTORY.html +265 -0
  91. data/doc/rdoc/files/lib/commands/waves-console_rb.html +110 -0
  92. data/doc/rdoc/files/lib/commands/waves-server_rb.html +108 -0
  93. data/doc/rdoc/files/lib/controllers/base_rb.html +101 -0
  94. data/doc/rdoc/files/lib/controllers/mixin_rb.html +101 -0
  95. data/doc/rdoc/files/lib/dispatchers/base_rb.html +101 -0
  96. data/doc/rdoc/files/lib/dispatchers/default_rb.html +101 -0
  97. data/doc/rdoc/files/lib/foundations/default_rb.html +101 -0
  98. data/doc/rdoc/files/lib/foundations/simple_rb.html +101 -0
  99. data/doc/rdoc/files/lib/helpers/asset_helper_rb.html +101 -0
  100. data/doc/rdoc/files/lib/helpers/common_rb.html +101 -0
  101. data/doc/rdoc/files/lib/helpers/default_rb.html +101 -0
  102. data/doc/rdoc/files/lib/helpers/form_rb.html +101 -0
  103. data/doc/rdoc/files/lib/helpers/formatting_rb.html +108 -0
  104. data/doc/rdoc/files/lib/helpers/model_rb.html +101 -0
  105. data/doc/rdoc/files/lib/helpers/number_helper_rb.html +101 -0
  106. data/doc/rdoc/files/lib/helpers/tag_helper_rb.html +101 -0
  107. data/doc/rdoc/files/lib/helpers/url_helper_rb.html +101 -0
  108. data/doc/rdoc/files/lib/helpers/view_rb.html +101 -0
  109. data/doc/rdoc/files/lib/layers/default_errors_rb.html +101 -0
  110. data/doc/rdoc/files/lib/layers/inflect/english/rules_rb.html +101 -0
  111. data/doc/rdoc/files/lib/layers/inflect/english/string_rb.html +101 -0
  112. data/doc/rdoc/files/lib/layers/inflect/english_rb.html +109 -0
  113. data/doc/rdoc/files/lib/layers/mvc_rb.html +101 -0
  114. data/doc/rdoc/files/lib/layers/orm/active_record/tasks/generate_rb.html +101 -0
  115. data/doc/rdoc/files/lib/layers/orm/active_record/tasks/schema_rb.html +101 -0
  116. data/doc/rdoc/files/lib/layers/orm/active_record_rb.html +108 -0
  117. data/doc/rdoc/files/lib/layers/orm/data_mapper_rb.html +108 -0
  118. data/doc/rdoc/files/lib/layers/orm/filebase_rb.html +101 -0
  119. data/doc/rdoc/files/lib/layers/orm/migration_rb.html +101 -0
  120. data/doc/rdoc/files/lib/layers/orm/sequel/tasks/generate_rb.html +101 -0
  121. data/doc/rdoc/files/lib/layers/orm/sequel/tasks/schema_rb.html +101 -0
  122. data/doc/rdoc/files/lib/layers/orm/sequel_rb.html +108 -0
  123. data/doc/rdoc/files/lib/layers/simple_errors_rb.html +101 -0
  124. data/doc/rdoc/files/lib/layers/simple_rb.html +101 -0
  125. data/doc/rdoc/files/lib/mapping/mapping_rb.html +101 -0
  126. data/doc/rdoc/files/lib/mapping/pretty_urls_rb.html +101 -0
  127. data/doc/rdoc/files/lib/renderers/erubis_rb.html +108 -0
  128. data/doc/rdoc/files/lib/renderers/haml_rb.html +108 -0
  129. data/doc/rdoc/files/lib/renderers/markaby_rb.html +108 -0
  130. data/doc/rdoc/files/lib/renderers/mixin_rb.html +101 -0
  131. data/doc/rdoc/files/lib/runtime/application_rb.html +107 -0
  132. data/doc/rdoc/files/lib/runtime/blackboard_rb.html +101 -0
  133. data/doc/rdoc/files/lib/runtime/configuration_rb.html +101 -0
  134. data/doc/rdoc/files/lib/runtime/console_rb.html +101 -0
  135. data/doc/rdoc/files/lib/runtime/debugger_rb.html +101 -0
  136. data/doc/rdoc/files/lib/runtime/logger_rb.html +108 -0
  137. data/doc/rdoc/files/lib/runtime/mime_types_rb.html +101 -0
  138. data/doc/rdoc/files/lib/runtime/request_rb.html +101 -0
  139. data/doc/rdoc/files/lib/runtime/response_mixin_rb.html +101 -0
  140. data/doc/rdoc/files/lib/runtime/response_proxy_rb.html +101 -0
  141. data/doc/rdoc/files/lib/runtime/response_rb.html +101 -0
  142. data/doc/rdoc/files/lib/runtime/server_rb.html +108 -0
  143. data/doc/rdoc/files/lib/runtime/session_rb.html +101 -0
  144. data/doc/rdoc/files/lib/tasks/cluster_rb.html +101 -0
  145. data/doc/rdoc/files/lib/tasks/gem_rb.html +108 -0
  146. data/doc/rdoc/files/lib/tasks/generate_rb.html +101 -0
  147. data/doc/rdoc/files/lib/utilities/hash_rb.html +101 -0
  148. data/doc/rdoc/files/lib/utilities/inflect_rb.html +111 -0
  149. data/doc/rdoc/files/lib/utilities/integer_rb.html +101 -0
  150. data/doc/rdoc/files/lib/utilities/module_rb.html +101 -0
  151. data/doc/rdoc/files/lib/utilities/object_rb.html +101 -0
  152. data/doc/rdoc/files/lib/utilities/proc_rb.html +101 -0
  153. data/doc/rdoc/files/lib/utilities/string_rb.html +101 -0
  154. data/doc/rdoc/files/lib/utilities/symbol_rb.html +101 -0
  155. data/doc/rdoc/files/lib/utilities/tempfile_rb.html +115 -0
  156. data/doc/rdoc/files/lib/views/base_rb.html +101 -0
  157. data/doc/rdoc/files/lib/views/mixin_rb.html +101 -0
  158. data/doc/rdoc/files/lib/waves_rb.html +195 -0
  159. data/doc/rdoc/fr_class_index.html +104 -0
  160. data/doc/rdoc/fr_file_index.html +97 -0
  161. data/doc/rdoc/fr_method_index.html +233 -0
  162. data/doc/rdoc/index.html +24 -0
  163. data/doc/rdoc/rdoc-style.css +208 -0
  164. data/lib/foundations/default.rb +1 -0
  165. data/lib/layers/default_errors.rb +10 -13
  166. data/lib/layers/inflect/english.rb +24 -0
  167. data/lib/layers/inflect/english/rules.rb +88 -0
  168. data/lib/layers/inflect/english/string.rb +24 -0
  169. data/lib/layers/mvc.rb +31 -35
  170. data/lib/layers/orm/active_record.rb +83 -32
  171. data/lib/layers/orm/active_record/tasks/generate.rb +28 -0
  172. data/lib/layers/orm/active_record/tasks/schema.rb +7 -15
  173. data/lib/layers/orm/data_mapper.rb +12 -16
  174. data/lib/layers/orm/migration.rb +20 -11
  175. data/lib/layers/orm/sequel.rb +53 -49
  176. data/lib/layers/orm/sequel/tasks/generate.rb +28 -0
  177. data/lib/layers/orm/sequel/tasks/schema.rb +6 -14
  178. data/lib/layers/simple.rb +6 -13
  179. data/lib/layers/simple_errors.rb +5 -8
  180. data/lib/renderers/haml.rb +45 -0
  181. data/lib/runtime/application.rb +0 -2
  182. data/lib/tasks/cluster.rb +1 -1
  183. data/lib/utilities/inflect.rb +86 -168
  184. data/lib/utilities/integer.rb +23 -16
  185. data/lib/utilities/module.rb +19 -15
  186. data/lib/utilities/object.rb +22 -14
  187. data/lib/utilities/proc.rb +13 -7
  188. data/lib/utilities/string.rb +0 -12
  189. data/lib/utilities/symbol.rb +4 -1
  190. data/lib/utilities/tempfile.rb +9 -0
  191. data/lib/waves.rb +3 -1
  192. data/samples/blog/Rakefile +14 -0
  193. data/samples/blog/bin/waves-console +3 -0
  194. data/samples/blog/bin/waves-server +3 -0
  195. data/samples/blog/blog.db +0 -0
  196. data/samples/blog/configurations/development.rb +31 -0
  197. data/samples/blog/configurations/mapping.rb +23 -0
  198. data/samples/blog/configurations/production.rb +30 -0
  199. data/samples/blog/doc/EMTPY +0 -0
  200. data/samples/blog/lib/application.rb +5 -0
  201. data/samples/blog/models/comment.rb +14 -0
  202. data/samples/blog/models/entry.rb +14 -0
  203. data/samples/blog/public/css/site.css +2 -0
  204. data/samples/blog/public/javascript/site.js +13 -0
  205. data/samples/blog/schema/migrations/001_initial_schema.rb +17 -0
  206. data/samples/blog/schema/migrations/002_add_comments.rb +18 -0
  207. data/samples/blog/schema/migrations/templates/empty.rb.erb +9 -0
  208. data/samples/blog/startup.rb +6 -0
  209. data/samples/blog/templates/comment/add.mab +10 -0
  210. data/samples/blog/templates/comment/list.mab +6 -0
  211. data/samples/blog/templates/entry/editor.mab +13 -0
  212. data/samples/blog/templates/entry/list.mab +11 -0
  213. data/samples/blog/templates/entry/show.mab +9 -0
  214. data/samples/blog/templates/entry/summary.mab +5 -0
  215. data/samples/blog/templates/errors/not_found_404.mab +2 -0
  216. data/samples/blog/templates/errors/server_error_500.mab +2 -0
  217. data/samples/blog/templates/layouts/default.mab +17 -0
  218. data/samples/jub/Rakefile +72 -0
  219. data/samples/jub/bin/waves-console +4 -0
  220. data/samples/jub/bin/waves-server +4 -0
  221. data/samples/jub/configurations/development.rb +31 -0
  222. data/samples/jub/configurations/mapping.rb +18 -0
  223. data/samples/jub/configurations/production.rb +31 -0
  224. data/samples/jub/lib/application.rb +5 -0
  225. data/samples/jub/startup.rb +6 -0
  226. data/samples/jub/templates/errors/not_found_404.mab +2 -0
  227. data/samples/jub/templates/errors/server_error_500.mab +2 -0
  228. data/samples/jub/templates/layouts/default.mab +14 -0
  229. data/verify/app_generation/helpers.rb +24 -0
  230. data/verify/app_generation/startup.rb +39 -0
  231. data/verify/blackboard/blackboard_verify.rb +92 -0
  232. data/verify/blackboard/helpers.rb +5 -0
  233. data/verify/configurations/attributes.rb +37 -0
  234. data/verify/configurations/helpers.rb +1 -0
  235. data/verify/configurations/rack_integration.rb +29 -0
  236. data/verify/controllers/base.rb +37 -0
  237. data/verify/controllers/helpers.rb +13 -0
  238. data/verify/controllers/interface.rb +51 -0
  239. data/verify/core/helpers.rb +3 -0
  240. data/verify/core/utilities.rb +177 -0
  241. data/verify/foundations/default.rb +86 -0
  242. data/verify/foundations/default_application/Rakefile +14 -0
  243. data/verify/foundations/default_application/bin/waves-console +3 -0
  244. data/verify/foundations/default_application/bin/waves-server +3 -0
  245. data/verify/foundations/default_application/configurations/development.rb +26 -0
  246. data/verify/foundations/default_application/configurations/mapping.rb +14 -0
  247. data/verify/foundations/default_application/configurations/production.rb +30 -0
  248. data/verify/foundations/default_application/controllers/default.rb +15 -0
  249. data/verify/foundations/default_application/controllers/loaded.rb +15 -0
  250. data/verify/foundations/default_application/defaultapplication.db +0 -0
  251. data/verify/foundations/default_application/helpers/loaded.rb +10 -0
  252. data/verify/foundations/default_application/lib/application.rb +5 -0
  253. data/verify/foundations/default_application/models/default.rb +13 -0
  254. data/verify/foundations/default_application/models/loaded.rb +13 -0
  255. data/verify/foundations/default_application/schema/migrations/templates/empty.rb.erb +9 -0
  256. data/verify/foundations/default_application/startup.rb +7 -0
  257. data/verify/foundations/default_application/templates/errors/not_found_404.mab +2 -0
  258. data/verify/foundations/default_application/templates/errors/server_error_500.mab +2 -0
  259. data/verify/foundations/default_application/templates/layouts/default.mab +14 -0
  260. data/verify/foundations/default_application/views/default.rb +7 -0
  261. data/verify/foundations/default_application/views/loaded.rb +15 -0
  262. data/verify/foundations/helpers.rb +1 -0
  263. data/verify/foundations/simple.rb +25 -0
  264. data/verify/helpers.rb +76 -0
  265. data/verify/layers/data_mapper/association_verify.rb +87 -0
  266. data/verify/layers/default_errors.rb +29 -0
  267. data/verify/layers/helpers.rb +1 -0
  268. data/verify/layers/migration.rb +33 -0
  269. data/verify/layers/sequel/model.rb +41 -0
  270. data/verify/layers/sequeltest.db +0 -0
  271. data/verify/mapping/always.rb +19 -0
  272. data/verify/mapping/filters.rb +65 -0
  273. data/verify/mapping/handle.rb +24 -0
  274. data/verify/mapping/helpers.rb +7 -0
  275. data/verify/mapping/matches.rb +27 -0
  276. data/verify/mapping/named.rb +29 -0
  277. data/verify/mapping/options.rb +17 -0
  278. data/verify/mapping/path.rb +40 -0
  279. data/verify/mapping/response_proxy.rb +50 -0
  280. data/verify/mapping/threaded.rb +25 -0
  281. data/verify/requests/helpers.rb +16 -0
  282. data/verify/requests/request.rb +73 -0
  283. data/verify/requests/response.rb +59 -0
  284. data/verify/requests/session.rb +54 -0
  285. data/verify/views/helpers.rb +1 -0
  286. data/verify/views/rendering.rb +34 -0
  287. data/verify/views/templates/foo.erb +0 -0
  288. data/verify/views/templates/moo.erb +0 -0
  289. data/verify/views/templates/moo.mab +0 -0
  290. metadata +597 -224
  291. data/lib/utilities/kernel.rb +0 -34
@@ -0,0 +1,5 @@
1
+ require File.join(File.dirname(__FILE__) , "..", "helpers")
2
+
3
+ module BlackBoardVerify ; include Waves::Foundations::Simple ; end
4
+ # Waves << BlackBoardVerify
5
+ # Waves::Console.load( :mode => :development )
@@ -0,0 +1,37 @@
1
+ # require 'test_helper' because RubyMate needs help
2
+ require File.join(File.dirname(__FILE__) , "helpers")
3
+
4
+ describe "Configuration attributes" do
5
+
6
+ class Basic < Waves::Configurations::Base; end
7
+
8
+ it "can be declared by developers" do
9
+ Basic.attribute :smurf
10
+ Basic.smurf("smurfy")
11
+ Basic.smurf.should == "smurfy"
12
+ end
13
+
14
+
15
+ it "must be declared before use" do
16
+ Basic.should.not.respond_to :gnome
17
+ end
18
+
19
+ end
20
+
21
+ describe "Waves::Configurations::Default" do
22
+
23
+ class Default < Waves::Configurations::Default; end
24
+
25
+ it "declares certain attributes necessary to run a Waves app" do
26
+ %w( host port ports log reloadable database session debug root synchronize? ).each do |attr|
27
+ Default.should.respond_to attr
28
+ end
29
+ end
30
+
31
+ it "sets default values for important attributes" do
32
+ [ :debug, :synchronize?, :session, :log, :reloadable ].each do |attr|
33
+ Default[attr].should.not.be.nil
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1 @@
1
+ require File.join(File.dirname(__FILE__) , "..", "helpers")
@@ -0,0 +1,29 @@
1
+ # require 'test_helper' because RubyMate needs help
2
+ require File.join(File.dirname(__FILE__) , "helpers")
3
+
4
+ describe "A Waves Configuration" do
5
+
6
+ class Default < Waves::Configurations::Default; end
7
+
8
+ it "can specify a Rack handler" do
9
+ class Default
10
+ handler(::Rack::Handler::Mongrel, :Host => '0.0.0.0', :Port => 8080)
11
+ end
12
+ Default.handler.should == [ ::Rack::Handler::Mongrel, { :Host => '0.0.0.0', :Port => 8080 } ]
13
+ end
14
+
15
+ it "provides an accessor for a hash of mime types" do
16
+ Waves::MimeTypes.should.receive(:[]).with('foo.png').and_return('image/png')
17
+ Default.mime_types['foo.png'].should == 'image/png'
18
+ end
19
+
20
+ it "must define the application for use with Rack" do
21
+ app = Rack::Builder.new() {}
22
+ Rack::Builder.should.receive(:new).with().and_return(app)
23
+ Default.application do
24
+ "stuff"
25
+ end
26
+ Default.application.should.be.a.kind_of Rack::Builder
27
+ end
28
+
29
+ end
@@ -0,0 +1,37 @@
1
+ # # require 'test_helper' because RubyMate needs help
2
+ # require File.join(File.dirname(__FILE__) , "helpers")
3
+ #
4
+ # # Nota bene, y'all: These model helper methods are very ORM specific, and should probably
5
+ # # get moved into the ORM layers.
6
+ #
7
+ # describe "The base Waves controller" do
8
+ #
9
+ # before do
10
+ # Waves.application.stub!(:models).and_return(VerifyControllers::Models)
11
+ # @request = mock('request')
12
+ # @dc = VerifyControllers::Controllers::Default.new(@request)
13
+ # end
14
+ #
15
+ # it "can isolate its model's attributes from the request params" do
16
+ # @dc.should.receive(:params).and_return({:foo => 'bar', :default => {:one => 'one', :two => 'two'}})
17
+ # @dc.attributes.should == {:one => 'one', :two => 'two'}
18
+ # end
19
+ #
20
+ # it "provides shortcut methods for common model interactions" do
21
+ # VerifyControllers::Models::Default.should.receive(:all)
22
+ # @dc.all
23
+ #
24
+ # VerifyControllers::Models::Default.should.receive(:[]).with(:name => 'This').and_return('That')
25
+ # @dc.find('This').should == 'That'
26
+ #
27
+ # VerifyControllers::Models::Default.should.receive(:create).with("Does it work?").and_return('It worked!')
28
+ # @dc.should.receive(:attributes).and_return("Does it work?")
29
+ # @dc.create.should == 'It worked!'
30
+ #
31
+ # # @dc.update('This')
32
+ #
33
+ # # @dc.delete('This')
34
+ #
35
+ # end
36
+ #
37
+ # end
@@ -0,0 +1,13 @@
1
+ require File.join(File.dirname(__FILE__) , "..", "helpers")
2
+
3
+ module VerifyControllers
4
+ module Models
5
+ class Default
6
+ end
7
+ end
8
+ module Controllers
9
+ class Default < Waves::Controllers::Base; end
10
+ end
11
+ end
12
+
13
+ VerifyControllers::Models.stub!(:[]).with(:default).and_return(VerifyControllers::Models::Default)
@@ -0,0 +1,51 @@
1
+ # require 'test_helper' because RubyMate needs help
2
+ require File.join(File.dirname(__FILE__) , "helpers")
3
+
4
+ describe "A Waves controller" do
5
+
6
+ before do
7
+ Waves.application.stub!(:models).and_return(VerifyControllers::Models)
8
+ @request = mock('request')
9
+ @dc = VerifyControllers::Controllers::Default.new(@request)
10
+ end
11
+
12
+ it "initializes with and can access a request" do
13
+ @dc.request.should == @request
14
+ end
15
+
16
+ it "can access a destructured version of the request params" do
17
+ request_hash = { 'beer.name' => 'Pale Rye Ale',
18
+ 'beer.brew.kind' => 'mini-mash',
19
+ 'beer.brew.yeast' => 'White Labs British Ale' ,
20
+ 'beer.brew.hops.variety' => 'Fuggles' }
21
+ destructured_hash = { :beer =>
22
+ { :name => 'Pale Rye Ale',
23
+ :brew => { :kind => 'mini-mash',
24
+ :yeast => 'White Labs British Ale',
25
+ :hops => { :variety => 'Fuggles' }}}}
26
+
27
+ @request.should.receive(:params).and_return(request_hash)
28
+ @dc.params.should == destructured_hash
29
+ end
30
+
31
+
32
+ it "has reflective model helpers to allow generalizing" do
33
+ # Waves.application handwaving done in ./helpers
34
+
35
+ @dc.model_name.should == 'default'
36
+ @dc.model.should == VerifyControllers::Models::Default
37
+ end
38
+
39
+ end
40
+
41
+ describe "The process method of a Waves controller class" do
42
+
43
+ it "executes a block within the scope of a controller instance" do
44
+ @request = mock('request')
45
+ result = VerifyControllers::Controllers::Default.process(@request) do
46
+ self.class.name
47
+ end
48
+ result.should == "VerifyControllers::Controllers::Default"
49
+ end
50
+
51
+ end
@@ -0,0 +1,3 @@
1
+ %w( rubygems bacon facon ).each { |f| require f }
2
+ Bacon.extend Bacon::TestUnitOutput
3
+ Bacon.summary_on_exit
@@ -0,0 +1,177 @@
1
+ # require 'test_helper' because RubyMate needs help
2
+ require File.join(File.dirname(__FILE__) , "helpers")
3
+
4
+ UTILITIES = "#{File.dirname(__FILE__)}/../../lib/utilities"
5
+
6
+ require "#{UTILITIES}/module"
7
+ require "#{UTILITIES}/inflect"
8
+ require "#{UTILITIES}/string"
9
+ require "#{UTILITIES}/symbol"
10
+ require "#{UTILITIES}/object"
11
+ require "#{UTILITIES}/integer"
12
+ require "#{UTILITIES}/proc"
13
+ require "#{UTILITIES}/hash"
14
+
15
+
16
+ describe "Waves::Utilities::Module" do
17
+
18
+ before do
19
+ module Eenie; module Meenie; module Miney; end; end ; end
20
+ end
21
+
22
+ it "defines a basename method" do
23
+ Eenie::Meenie.basename.should == "Meenie"
24
+ Eenie::Meenie::Miney.basename.should == "Miney"
25
+ end
26
+
27
+ it "defines [] for easy access to namespaced constants" do
28
+ Eenie[:Meenie].should == Eenie::Meenie
29
+ end
30
+
31
+ end
32
+
33
+ describe "a language extended with Waves::Utilities::Inflect" do
34
+
35
+ before do
36
+ # Nominative only, of course.
37
+ module Latin
38
+ extend Waves::Inflect::InflectorMethods
39
+ rule 'us', 'i'
40
+ rule 'u', 'ua'
41
+ rule 'x', 'gis'
42
+
43
+ word 'deus', 'di'
44
+ word 'cultus'
45
+
46
+ singular_rule 'inuum', 'inua'
47
+ plural_rule 'ix', 'ices'
48
+ end
49
+ end
50
+
51
+ it "can define general pluralization rules" do
52
+ Latin.plural('servus').should == 'servi'
53
+ end
54
+
55
+ it "can register two-way exceptions for specific words" do
56
+ Latin.plural('deus').should == 'di'
57
+ Latin.plural('cultus').should == 'cultus'
58
+ end
59
+
60
+ it "can register rules for singularization exceptions" do
61
+ Latin.singular('cornua').should == 'cornu'
62
+ Latin.singular('continua').should == 'continuum'
63
+ end
64
+
65
+ it "can register rules for pluralization exceptions" do
66
+ Latin.plural('phoenix').should == 'phoenices'
67
+ end
68
+
69
+
70
+ end
71
+
72
+ describe "Waves::Utilities::String" do
73
+
74
+ # ** API Change **
75
+ # it "delegates singular and plural inflection methods" do
76
+ # Waves::Inflect::English.should.receive(:singular).and_return("boring")
77
+ # Waves::Inflect::English.should.receive(:plural).and_return("still boring")
78
+ # "boring".singular.plural
79
+ # end
80
+
81
+ it "defines / as syntactic sugar for File.join" do
82
+ ( "lib" / "utilities" ).should == File.join( "lib", "utilities" )
83
+ ( "lib" / :utilities ).should == File.join( "lib", "utilities" )
84
+ ( "lib" / 3 ).should == File.join( "lib", "3" )
85
+ end
86
+
87
+ it "defines a snake_case method" do
88
+ "MilchCow".snake_case.should == "milch_cow"
89
+ "Milch Cow".snake_case.should == "milch_cow"
90
+ "milchCow".snake_case.should == "milch_cow"
91
+ "StrangeFaceMilchCow".snake_case.should == "strange_face_milch_cow"
92
+ end
93
+
94
+ it "defines a camel_case method" do
95
+ "siege_engine".camel_case.should == "SiegeEngine"
96
+ "ineffective_siege_engine".camel_case.should == "IneffectiveSiegeEngine"
97
+ end
98
+
99
+ it "defines a lower_camel_case method" do
100
+ "siege_engine".lower_camel_case.should == "siegeEngine"
101
+ "ineffective_siege_engine".lower_camel_case.should == "ineffectiveSiegeEngine"
102
+ end
103
+
104
+ it "defines a title_case method" do
105
+ # Yes, we know that this is naive title casing.
106
+ "sing ho! for the life of a bear".title_case.should == "Sing Ho! For The Life Of A Bear"
107
+ end
108
+
109
+ end
110
+
111
+ describe "A monkeypatch to Symbol" do
112
+
113
+ it "defines / as syntactic sugar for File.join" do
114
+ ( :lib / :utilities ).should == File.join( "lib", "utilities")
115
+ end
116
+
117
+ end
118
+
119
+
120
+ describe "Waves::Utilities::Object" do
121
+
122
+ before do |variable|
123
+ @foo = [ :a, :b, :c ]
124
+ end
125
+
126
+ it "defines instance_exec, to allow instance_eval-ing a block with parameters" do
127
+ result = @foo.instance_exec(2) do |i|
128
+ self[i]
129
+ end
130
+ result.should == :c
131
+
132
+ result = @foo.instance_exec(0,2) do |*args|
133
+ self.slice(*args)
134
+ end
135
+ result.should == [:a, :b]
136
+ end
137
+
138
+ end
139
+
140
+ describe "Waves::Utilities::Integer" do
141
+ # pedantic, no?
142
+ 1.kilobytes.should == "1,024".to_i
143
+ 1.megabytes.should == "1,048,576".to_i
144
+ 1.gigabytes.should == "1,073,741,824".to_i
145
+ 1.terabytes.should == "1,099,511,627,776".to_i
146
+ 1.petabytes.should == "1,125,899,906,842,624".to_i
147
+ 1.exabytes.should == "1,152,921,504,606,846,976".to_i
148
+ 1.zettabytes.should == "1,180,591,620,717,411,303,424".to_i
149
+ 1.yottabytes.should == "1,208,925,819,614,629,174,706,176".to_i
150
+ end
151
+
152
+ describe "Waves::Utilities::Proc" do
153
+
154
+ it "defines | as syntactic sugar for passing the result of a proc to a lambda" do
155
+ p = Proc.new { "smurf" }
156
+ l = lambda { |data| data.reverse }
157
+ result = p | l
158
+ result.call.should == "frums"
159
+ end
160
+
161
+ end
162
+
163
+ describe "Waves::Utilities::Hash" do
164
+
165
+ it "adds a non-destructive method for converting all hash keys to strings" do
166
+ h = { :a => 1, 'b' => 2, 3 => 3}
167
+ h.stringify_keys.should == { 'a' => 1, 'b' => 2, '3' => 3}
168
+ h.should == { :a => 1, 'b' => 2, 3 => 3}
169
+ end
170
+
171
+ it "adds a destructive method for converting hash keys to symbols" do
172
+ h = { "two" => 2, :three => 3}
173
+ h.symbolize_keys!
174
+ h.should == { :two => 2, :three => 3 }
175
+ end
176
+
177
+ end
@@ -0,0 +1,86 @@
1
+ # require 'test_helper' because RubyMate needs help
2
+ require File.join(File.dirname(__FILE__) , "helpers")
3
+
4
+ Dir.chdir File.dirname(__FILE__) / "default_application" do
5
+ module DefaultApplication
6
+ include Waves::Foundations::Default
7
+ end
8
+ Waves::Console.load( :mode => :development )
9
+ DA = DefaultApplication
10
+
11
+
12
+ describe "An application module which includes the Default foundation" do
13
+
14
+ it "defines basic namespaces" do
15
+ DA::Configurations::Mapping
16
+ DA::Configurations::Default.host.should == nil
17
+ DA::Configurations::Development.host.should == '127.0.0.1'
18
+ DA::Models::Default
19
+ DA::Views::Default
20
+ DA::Controllers::Default
21
+ DA::Helpers::Default
22
+ DA::Helpers::Testing
23
+ end
24
+
25
+ # it "**leftover tests of Default to be reapportioned**" do
26
+ # Waves::Application.instance.mapping.send(:mapping).should.not.be.empty
27
+ # DA::Helpers::Default.instance_methods.should.include "layout"
28
+ #
29
+ # DA::Models::Default.should.respond_to :crayola
30
+ # DA::Controllers::Default.instance_methods.should.include "attributes"
31
+ # DA::Controllers::Default.instance_methods.should.include "destroy_all"
32
+ #
33
+ # DA::Views::Default.instance_methods.should.include "renderer"
34
+ # DA::Views::Default.instance_methods.should.include "from_default"
35
+ # end
36
+
37
+ it "auto_creates Models when their files do not exist" do
38
+ DA::Models::Created.superclass.should == DA::Models::Default
39
+ end
40
+
41
+ it "auto_loads Models when their files exist" do
42
+ DA::Models::Loaded.instance_methods.should.include "from_loaded"
43
+ end
44
+
45
+ it "auto_creates Controllers when their files do not exist" do
46
+ DA::Controllers::Created.superclass.should == DA::Controllers::Default
47
+ end
48
+
49
+ it "auto_loads Controllers when their files exist" do
50
+ DA::Controllers::Loaded.instance_methods.should.include "from_loaded"
51
+ end
52
+
53
+ it "auto_creates Views when their files do not exist" do
54
+ DA::Views::Created.superclass.should == DA::Views::Default
55
+ end
56
+
57
+ it "auto_loads Views when their files exist" do
58
+ DA::Views::Loaded.instance_methods.should.include "from_loaded"
59
+ end
60
+
61
+ it "auto_creates Helpers when their files do not exist" do
62
+ DA::Helpers::Created.included_modules.should.include Waves::Helpers::Default
63
+ end
64
+
65
+ it "auto_loads Helpers when their files exist" do
66
+ DA::Helpers::Loaded.instance_methods.should.include "doctype"
67
+ end
68
+
69
+
70
+ it "should have accessors defined" do
71
+ [ :config, :configurations, :controllers, :models, :helpers, :views ].each do |method|
72
+ DA.should.respond_to method
73
+ end
74
+ end
75
+
76
+ it "should define [] method for appropriate submodules" do
77
+ DA::Configurations.should.respond_to :[]
78
+ DA::Models.should.respond_to :[]
79
+ DA::Views.should.respond_to :[]
80
+ DA::Controllers.should.respond_to :[]
81
+ end
82
+
83
+ end
84
+
85
+
86
+ end