waves-stable 0.7.7 → 2009.3.10

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 (236) hide show
  1. data/bin/waves +20 -74
  2. data/doc/HISTORY +1 -44
  3. data/doc/README +1 -0
  4. data/doc/VERSION +1 -0
  5. data/lib/caches/file.rb +48 -0
  6. data/lib/caches/memcached.rb +40 -0
  7. data/lib/caches/simple.rb +25 -0
  8. data/lib/caches/synchronized.rb +25 -0
  9. data/lib/commands/console.rb +35 -0
  10. data/lib/commands/generate.rb +52 -0
  11. data/lib/commands/help.rb +5 -0
  12. data/lib/commands/{waves-server.rb → server.rb} +16 -3
  13. data/lib/dispatchers/base.rb +22 -21
  14. data/lib/dispatchers/default.rb +10 -66
  15. data/lib/ext/float.rb +13 -0
  16. data/lib/{utilities → ext}/hash.rb +2 -2
  17. data/lib/{utilities → ext}/integer.rb +5 -2
  18. data/lib/ext/kernel.rb +20 -0
  19. data/lib/ext/module.rb +20 -0
  20. data/lib/{utilities → ext}/object.rb +3 -5
  21. data/lib/ext/string.rb +20 -0
  22. data/lib/ext/symbol.rb +11 -0
  23. data/lib/ext/tempfile.rb +5 -0
  24. data/lib/foundations/classic.rb +66 -0
  25. data/lib/foundations/compact.rb +50 -0
  26. data/lib/helpers/basic.rb +11 -0
  27. data/lib/helpers/doc_type.rb +34 -0
  28. data/lib/helpers/extended.rb +21 -0
  29. data/lib/helpers/form.rb +3 -1
  30. data/lib/helpers/formatting.rb +3 -3
  31. data/lib/helpers/layouts.rb +37 -0
  32. data/lib/helpers/model.rb +8 -4
  33. data/lib/helpers/view.rb +2 -4
  34. data/lib/layers/inflect/english.rb +48 -5
  35. data/lib/layers/mvc.rb +18 -18
  36. data/lib/layers/mvc/controllers.rb +41 -0
  37. data/lib/layers/mvc/extensions.rb +52 -0
  38. data/lib/layers/orm/migration.rb +1 -1
  39. data/lib/layers/orm/{active_record.rb → providers/active_record.rb} +9 -14
  40. data/lib/layers/orm/{active_record → providers/active_record}/migrations/empty.rb.erb +0 -0
  41. data/lib/layers/orm/{active_record → providers/active_record}/tasks/generate.rb +1 -1
  42. data/lib/layers/orm/{active_record → providers/active_record}/tasks/schema.rb +1 -1
  43. data/lib/layers/orm/{data_mapper.rb → providers/data_mapper.rb} +3 -4
  44. data/lib/layers/orm/providers/filebase.rb +25 -0
  45. data/lib/layers/orm/{sequel.rb → providers/sequel.rb} +11 -7
  46. data/lib/layers/orm/{sequel → providers/sequel}/migrations/empty.rb.erb +0 -0
  47. data/lib/layers/orm/{sequel → providers/sequel}/tasks/generate.rb +5 -3
  48. data/lib/layers/orm/{sequel → providers/sequel}/tasks/schema.rb +2 -2
  49. data/lib/{renderers → layers/renderers}/erubis.rb +13 -16
  50. data/lib/{renderers → layers/renderers}/haml.rb +27 -25
  51. data/lib/layers/renderers/markaby.rb +29 -0
  52. data/lib/matchers/accept.rb +21 -0
  53. data/lib/matchers/base.rb +30 -0
  54. data/lib/matchers/content_type.rb +17 -0
  55. data/lib/matchers/path.rb +67 -0
  56. data/lib/matchers/query.rb +21 -0
  57. data/lib/matchers/request.rb +27 -0
  58. data/lib/matchers/resource.rb +19 -0
  59. data/lib/matchers/traits.rb +19 -0
  60. data/lib/matchers/uri.rb +20 -0
  61. data/lib/renderers/mixin.rb +15 -29
  62. data/lib/resources/mixin.rb +134 -0
  63. data/lib/resources/paths.rb +34 -0
  64. data/lib/runtime/configuration.rb +51 -136
  65. data/lib/runtime/console.rb +4 -1
  66. data/lib/runtime/logger.rb +24 -48
  67. data/lib/runtime/mime_types.rb +516 -2
  68. data/lib/runtime/mocks.rb +14 -0
  69. data/lib/runtime/monitor.rb +32 -0
  70. data/lib/runtime/request.rb +107 -39
  71. data/lib/runtime/response.rb +5 -2
  72. data/lib/runtime/response_mixin.rb +41 -22
  73. data/lib/runtime/runtime.rb +67 -0
  74. data/lib/runtime/server.rb +14 -101
  75. data/lib/runtime/session.rb +4 -43
  76. data/lib/runtime/worker.rb +86 -0
  77. data/lib/servers/base.rb +42 -0
  78. data/lib/servers/mongrel.rb +13 -0
  79. data/lib/servers/webrick.rb +13 -0
  80. data/lib/tasks/gem.rb +1 -0
  81. data/lib/tasks/generate.rb +67 -62
  82. data/lib/views/errors.rb +49 -0
  83. data/lib/views/mixin.rb +34 -82
  84. data/lib/waves.rb +36 -57
  85. data/samples/blog/Rakefile +16 -5
  86. data/samples/blog/configurations/default.rb +11 -0
  87. data/samples/blog/configurations/development.rb +9 -11
  88. data/samples/blog/configurations/production.rb +11 -15
  89. data/samples/blog/models/comment.rb +9 -0
  90. data/samples/blog/models/entry.rb +17 -0
  91. data/samples/blog/public/css/site.css +13 -2
  92. data/samples/blog/public/javascript/jquery-1.2.6.min.js +32 -0
  93. data/samples/blog/resources/entry.rb +39 -0
  94. data/samples/blog/resources/map.rb +9 -0
  95. data/samples/blog/schema/migrations/001_initial_schema.rb +3 -3
  96. data/samples/blog/schema/migrations/002_add_comments.rb +2 -2
  97. data/samples/blog/startup.rb +8 -6
  98. data/samples/blog/templates/comment/add.mab +6 -4
  99. data/samples/blog/templates/comment/list.mab +4 -4
  100. data/samples/blog/templates/entry/{editor.mab → edit.mab} +7 -6
  101. data/samples/blog/templates/entry/list.mab +10 -5
  102. data/samples/blog/templates/entry/show.mab +16 -7
  103. data/samples/blog/templates/entry/summary.mab +8 -4
  104. data/samples/blog/templates/errors/not_found_404.mab +6 -1
  105. data/samples/blog/templates/layouts/default.mab +5 -3
  106. data/samples/blog/templates/waves/status.mab +85 -0
  107. data/{app → templates/classic}/Rakefile +21 -3
  108. data/templates/classic/configurations/default.rb.erb +9 -0
  109. data/{app → templates/classic}/configurations/development.rb.erb +3 -8
  110. data/{app → templates/classic}/configurations/production.rb.erb +3 -5
  111. data/{app → templates/classic}/controllers/.gitignore +0 -0
  112. data/{app/doc → templates/classic/helpers}/.gitignore +0 -0
  113. data/{app/helpers → templates/classic/lib/tasks}/.gitignore +0 -0
  114. data/{app/lib/tasks → templates/classic/models}/.gitignore +0 -0
  115. data/{app/log → templates/classic/public/css}/.gitignore +0 -0
  116. data/{app/models → templates/classic/public/flash}/.gitignore +0 -0
  117. data/{app/public/css → templates/classic/public/images}/.gitignore +0 -0
  118. data/{app/public/flash → templates/classic/public/javascript}/.gitignore +0 -0
  119. data/{app/public/images → templates/classic/resources}/.gitignore +0 -0
  120. data/templates/classic/resources/map.rb.erb +8 -0
  121. data/{app/public/javascript → templates/classic/schema/migrations}/.gitignore +0 -0
  122. data/templates/classic/startup.rb.erb +11 -0
  123. data/templates/classic/templates/errors/not_found_404.mab +7 -0
  124. data/templates/classic/templates/errors/server_error_500.mab +7 -0
  125. data/{app → templates/classic}/templates/layouts/default.mab +0 -0
  126. data/{app/schema/migrations → templates/classic/tmp/sessions}/.gitignore +0 -0
  127. data/{app/tmp/sessions → templates/classic/views}/.gitignore +0 -0
  128. data/templates/compact/startup.rb.erb +11 -0
  129. metadata +152 -258
  130. data/app/bin/waves-console +0 -4
  131. data/app/bin/waves-server +0 -4
  132. data/app/configurations/mapping.rb.erb +0 -14
  133. data/app/lib/application.rb.erb +0 -5
  134. data/app/startup.rb +0 -5
  135. data/app/templates/errors/not_found_404.mab +0 -2
  136. data/app/templates/errors/server_error_500.mab +0 -2
  137. data/app/views/.gitignore +0 -0
  138. data/bin/waves-console +0 -4
  139. data/bin/waves-server +0 -4
  140. data/lib/commands/waves-console.rb +0 -21
  141. data/lib/controllers/base.rb +0 -11
  142. data/lib/controllers/mixin.rb +0 -165
  143. data/lib/foundations/default.rb +0 -27
  144. data/lib/foundations/simple.rb +0 -30
  145. data/lib/helpers/asset_helper.rb +0 -67
  146. data/lib/helpers/common.rb +0 -66
  147. data/lib/helpers/default.rb +0 -13
  148. data/lib/helpers/number_helper.rb +0 -25
  149. data/lib/helpers/tag_helper.rb +0 -58
  150. data/lib/helpers/url_helper.rb +0 -77
  151. data/lib/layers/default_errors.rb +0 -26
  152. data/lib/layers/inflect/english/rules.rb +0 -88
  153. data/lib/layers/inflect/english/string.rb +0 -24
  154. data/lib/layers/orm/filebase.rb +0 -22
  155. data/lib/layers/simple.rb +0 -32
  156. data/lib/layers/simple_errors.rb +0 -23
  157. data/lib/mapping/mapping.rb +0 -289
  158. data/lib/mapping/pretty_urls.rb +0 -96
  159. data/lib/renderers/markaby.rb +0 -33
  160. data/lib/runtime/application.rb +0 -69
  161. data/lib/runtime/blackboard.rb +0 -57
  162. data/lib/runtime/debugger.rb +0 -9
  163. data/lib/runtime/response_proxy.rb +0 -30
  164. data/lib/tasks/cluster.rb +0 -26
  165. data/lib/utilities/inflect.rb +0 -110
  166. data/lib/utilities/module.rb +0 -21
  167. data/lib/utilities/proc.rb +0 -16
  168. data/lib/utilities/string.rb +0 -49
  169. data/lib/utilities/symbol.rb +0 -10
  170. data/lib/utilities/tempfile.rb +0 -9
  171. data/lib/views/base.rb +0 -9
  172. data/samples/blog/bin/waves-console +0 -3
  173. data/samples/blog/bin/waves-server +0 -3
  174. data/samples/blog/configurations/mapping.rb +0 -23
  175. data/samples/blog/doc/EMTPY +0 -0
  176. data/samples/blog/lib/application.rb +0 -5
  177. data/verify/app_generation/helpers.rb +0 -24
  178. data/verify/app_generation/startup.rb +0 -39
  179. data/verify/blackboard/blackboard_verify.rb +0 -92
  180. data/verify/blackboard/helpers.rb +0 -5
  181. data/verify/configurations/attributes.rb +0 -37
  182. data/verify/configurations/helpers.rb +0 -1
  183. data/verify/configurations/rack_integration.rb +0 -29
  184. data/verify/controllers/base.rb +0 -37
  185. data/verify/controllers/helpers.rb +0 -13
  186. data/verify/controllers/interface.rb +0 -51
  187. data/verify/core/helpers.rb +0 -3
  188. data/verify/core/utilities.rb +0 -177
  189. data/verify/foundations/default.rb +0 -86
  190. data/verify/foundations/default_application/Rakefile +0 -14
  191. data/verify/foundations/default_application/bin/waves-console +0 -3
  192. data/verify/foundations/default_application/bin/waves-server +0 -3
  193. data/verify/foundations/default_application/configurations/development.rb +0 -26
  194. data/verify/foundations/default_application/configurations/mapping.rb +0 -14
  195. data/verify/foundations/default_application/configurations/production.rb +0 -30
  196. data/verify/foundations/default_application/controllers/default.rb +0 -15
  197. data/verify/foundations/default_application/controllers/loaded.rb +0 -15
  198. data/verify/foundations/default_application/defaultapplication.db +0 -0
  199. data/verify/foundations/default_application/helpers/loaded.rb +0 -10
  200. data/verify/foundations/default_application/lib/application.rb +0 -5
  201. data/verify/foundations/default_application/models/default.rb +0 -13
  202. data/verify/foundations/default_application/models/loaded.rb +0 -13
  203. data/verify/foundations/default_application/schema/migrations/templates/empty.rb.erb +0 -9
  204. data/verify/foundations/default_application/startup.rb +0 -7
  205. data/verify/foundations/default_application/templates/errors/not_found_404.mab +0 -2
  206. data/verify/foundations/default_application/templates/errors/server_error_500.mab +0 -2
  207. data/verify/foundations/default_application/templates/layouts/default.mab +0 -14
  208. data/verify/foundations/default_application/views/default.rb +0 -7
  209. data/verify/foundations/default_application/views/loaded.rb +0 -15
  210. data/verify/foundations/helpers.rb +0 -1
  211. data/verify/foundations/simple.rb +0 -25
  212. data/verify/helpers.rb +0 -76
  213. data/verify/layers/data_mapper/association_verify.rb +0 -87
  214. data/verify/layers/default_errors.rb +0 -29
  215. data/verify/layers/helpers.rb +0 -1
  216. data/verify/layers/migration.rb +0 -33
  217. data/verify/layers/sequel/model.rb +0 -41
  218. data/verify/mapping/always.rb +0 -19
  219. data/verify/mapping/filters.rb +0 -65
  220. data/verify/mapping/handle.rb +0 -24
  221. data/verify/mapping/helpers.rb +0 -7
  222. data/verify/mapping/matches.rb +0 -27
  223. data/verify/mapping/named.rb +0 -29
  224. data/verify/mapping/options.rb +0 -17
  225. data/verify/mapping/path.rb +0 -40
  226. data/verify/mapping/response_proxy.rb +0 -50
  227. data/verify/mapping/threaded.rb +0 -25
  228. data/verify/requests/helpers.rb +0 -16
  229. data/verify/requests/request.rb +0 -73
  230. data/verify/requests/response.rb +0 -59
  231. data/verify/requests/session.rb +0 -54
  232. data/verify/views/helpers.rb +0 -1
  233. data/verify/views/rendering.rb +0 -34
  234. data/verify/views/templates/foo.erb +0 -0
  235. data/verify/views/templates/moo.erb +0 -0
  236. data/verify/views/templates/moo.mab +0 -0
@@ -1,16 +0,0 @@
1
- module Waves
2
- module Utilities
3
- module Proc
4
- # calls the given lambda with the receiver as its argument
5
- def |(lambda)
6
- lambda do
7
- lambda.call( self.call )
8
- end
9
- end
10
- end
11
- end
12
- end
13
-
14
- class Proc # :nodoc:
15
- include Waves::Utilities::Proc
16
- end
@@ -1,49 +0,0 @@
1
- module Waves
2
- module Utilities
3
-
4
- # Utility methods mixed into String.
5
-
6
- module String
7
-
8
- # Syntactic sugar for using File.join to concatenate the argument to the receiver.
9
- #
10
- # require "lib" / "utilities" / "string"
11
- #
12
- # The idea is not original, but we can't remember where we first saw it.
13
- #
14
- # Waves::Utilities::Symbol defines the same method, allowing for :files / 'afilename.txt'
15
-
16
- def / ( string )
17
- File.join(self,string.to_s)
18
- end
19
-
20
- # produces stringsLikeThis
21
- def lower_camel_case
22
- gsub(/(_)(\w)/) { $2.upcase }
23
- end
24
-
25
- # produces StringsLikeThis
26
- def camel_case
27
- lower_camel_case.gsub(/^([a-z])/) { $1.upcase }
28
- end
29
-
30
- # produces strings_like_this
31
- def snake_case
32
- gsub(/\s+/,'').gsub(/([a-z\d])([A-Z])/){ "#{$1}_#{$2}"}.tr("-", "_").downcase
33
- end
34
-
35
- def title_case
36
- gsub(/(^|\s)\s*([a-z])/) { $1 + $2.upcase }
37
- end
38
-
39
- def text
40
- gsub(/[\_\-\.\:]/,' ')
41
- end
42
-
43
- end
44
- end
45
- end
46
-
47
- class ::String # :nodoc:
48
- include Waves::Utilities::String
49
- end
@@ -1,10 +0,0 @@
1
- class Symbol
2
- # Does File.join on self and string, converting self to string before invocation.
3
- # See String#/ for more.
4
- #
5
- # Note: This overrides any definitions done politely in modules, such as
6
- # {Sequel::SQL::ComplexExpressionMethods}[http://sequel.rubyforge.org/classes/Sequel/SQL/ComplexExpressionMethods.html]
7
- def / ( string )
8
- self.to_s / string
9
- end
10
- end
@@ -1,9 +0,0 @@
1
- # Patch Ruby's Tempfile class to work around a problem uploading files with Rack.
2
- #
3
- # The fix came from here: http://sinatra.lighthouseapp.com/projects/9779/tickets/1
4
- #
5
- # This is fixed in Rack already, but it hasn't made it into a gem.
6
- class Tempfile
7
- # Make == act like eql?
8
- def ==(other) ; eql?(other) || super ; end
9
- end
data/lib/views/base.rb DELETED
@@ -1,9 +0,0 @@
1
- module Waves
2
- module Views
3
- class Base
4
-
5
- include Waves::Views::Mixin
6
-
7
- end
8
- end
9
- end
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'startup'
3
- require 'commands/waves-console'
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'startup'
3
- require 'commands/waves-server'
@@ -1,23 +0,0 @@
1
- module Blog
2
-
3
- module Configurations
4
-
5
- module Mapping
6
- extend Waves::Mapping
7
-
8
- path '/', :method => :get do
9
- redirect("/entries")
10
- end
11
-
12
- path %r{^/comments/?$}, :method => :post do
13
- resource( :comment ) do
14
- controller { comment = create; redirect( "/entry/#{comment.entry.name}" ) }
15
- end
16
- end
17
- include Waves::Mapping::PrettyUrls::RestRules
18
- include Waves::Mapping::PrettyUrls::GetRules
19
- end
20
-
21
- end
22
-
23
- end
File without changes
@@ -1,5 +0,0 @@
1
- require 'layers/orm/sequel'
2
- module Blog
3
- include Waves::Foundations::Default
4
- include Waves::Layers::ORM::Sequel
5
- end
@@ -1,24 +0,0 @@
1
- %w( rubygems bacon open3 extensions/all).each { |f| require f }
2
-
3
- Bacon.extend Bacon::TestUnitOutput
4
- Bacon.summary_on_exit
5
-
6
- require File.join(File.dirname(__FILE__), "..", "..", "lib", "utilities", "string")
7
-
8
-
9
- AppPath = File.expand_path(File.dirname(__FILE__) / "sandbox")
10
- FrameworkPath = File.expand_path(File.dirname(__FILE__) / ".." / "..")
11
-
12
- def generate_test_app(path)
13
- command = File.dirname(__FILE__) / ".." / ".." / :bin / "waves"
14
- system "#{command} #{path}"
15
- end
16
-
17
- def clobber_test_app(path)
18
- FileUtils.rm_rf(path) if File.exist?(path)
19
- end
20
-
21
- def set_framework_path(path)
22
- text = File.read(path / 'startup.rb').split("\n").unshift("WAVES = '#{FrameworkPath}'").join("\n")
23
- File.write(path / 'startup.rb', text)
24
- end
@@ -1,39 +0,0 @@
1
- # require 'test_helper' because RubyMate needs help
2
-
3
- require File.join(File.dirname(__FILE__) , "helpers")
4
-
5
- clobber_test_app(AppPath)
6
- generate_test_app(AppPath)
7
-
8
- describe "A generated application" do
9
-
10
- it "has executable script files" do
11
- File.executable?(File.join(AppPath, "bin", "waves-console")).should.be.true
12
- end
13
-
14
- it "will fail to find waves framework, if the gem is not available" do
15
- Dir.chdir(AppPath) do
16
- stdin, stdout, stderr = Open3.popen3("ruby startup.rb")
17
- stderr.gets.should =~ %r{no such file to load -- waves \(LoadError\)}
18
- end
19
- end
20
-
21
- it "will find and use waves framework source when WAVES is defined" do
22
- set_framework_path(AppPath)
23
- Dir.chdir(AppPath) do
24
- stdin, stdout, stderr = Open3.popen3("ruby startup.rb")
25
- stderr.gets.should == nil
26
- end
27
- end
28
-
29
- it "has the directories we expect it to have" do
30
- dirs = %w{ bin/ configurations/ controllers/ doc/ helpers/ lib/
31
- log/ models/ public/ schema/ templates/ tmp/ views/ }
32
- Dir.chdir(AppPath) do
33
- Dir.glob("*/").should == dirs
34
- end
35
- end
36
-
37
- end
38
-
39
- clobber_test_app(AppPath)
@@ -1,92 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "helpers")
2
-
3
- specification "Blackboard" do
4
-
5
- it 'should create a blackboard' do
6
- request = mock(:request)
7
- Waves::Blackboard.new(request).should.not == nil
8
- end
9
-
10
- it 'should allow adding a value, and reading from it' do
11
- request = mock(:request)
12
- bb = Waves::Blackboard.new(request)
13
- bb.test = 2
14
- bb.test.should == 2
15
-
16
- bb["test"].should == 2
17
-
18
- bb["test2"] = 3
19
- bb["test2"].should == 3
20
- bb.test2.should == 3
21
- end
22
-
23
- it 'should not have a value if never set' do
24
- request = mock(:request)
25
- bb = Waves::Blackboard.new(request)
26
- bb.never_set.should == nil
27
- bb["never_set"].should == nil
28
- end
29
-
30
- it 'should iterate over all defined values' do
31
- request = mock(:request)
32
- bb = Waves::Blackboard.new(request)
33
- bb.value1 = 1
34
- bb.value2 = 2
35
- a = []
36
- bb.each do |value|
37
- a << value
38
- end
39
- a.should == [["value1", 1], ["value2", 2]]
40
- end
41
-
42
- end
43
-
44
- module BlackBoardVerify
45
- module Controllers
46
- class Test
47
- include Waves::Controllers::Mixin
48
- end
49
- end
50
- end
51
-
52
- module BlackBoardVerify
53
- module Configurations
54
- module Mapping
55
- extend Waves::Mapping
56
- end
57
- end
58
- end
59
-
60
- module BlackBoardVerify
61
- module Helpers
62
- module Test
63
- extend Waves::Helpers::Default
64
- end
65
- end
66
- end
67
-
68
- module BlackBoardVerify
69
- module Views
70
- module Test
71
- extend Waves::Views::Mixin
72
- end
73
- end
74
- end
75
-
76
- specification "Blackboard included in other classes" do
77
-
78
- before do
79
- end
80
-
81
- after do
82
- end
83
-
84
- it 'should be included in other classes' do
85
- request = mock(:request)
86
- BlackBoardVerify::Controllers::Test.instance_methods.should.include "blackboard"
87
- Waves::Helpers::Default.instance_methods.should.include "blackboard"
88
- Waves::ResponseProxy.instance_methods.should.include "blackboard"
89
- BlackBoardVerify::Views::Test.methods.should.include "blackboard"
90
- end
91
-
92
- end
@@ -1,5 +0,0 @@
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 )
@@ -1,37 +0,0 @@
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
@@ -1 +0,0 @@
1
- require File.join(File.dirname(__FILE__) , "..", "helpers")
@@ -1,29 +0,0 @@
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
@@ -1,37 +0,0 @@
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
@@ -1,13 +0,0 @@
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)
@@ -1,51 +0,0 @@
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