waves-stable 0.7.7 → 2009.3.10

Sign up to get free protection for your applications and to get access to all the features.
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