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.
- data/bin/waves +20 -74
- data/doc/HISTORY +1 -44
- data/doc/README +1 -0
- data/doc/VERSION +1 -0
- data/lib/caches/file.rb +48 -0
- data/lib/caches/memcached.rb +40 -0
- data/lib/caches/simple.rb +25 -0
- data/lib/caches/synchronized.rb +25 -0
- data/lib/commands/console.rb +35 -0
- data/lib/commands/generate.rb +52 -0
- data/lib/commands/help.rb +5 -0
- data/lib/commands/{waves-server.rb → server.rb} +16 -3
- data/lib/dispatchers/base.rb +22 -21
- data/lib/dispatchers/default.rb +10 -66
- data/lib/ext/float.rb +13 -0
- data/lib/{utilities → ext}/hash.rb +2 -2
- data/lib/{utilities → ext}/integer.rb +5 -2
- data/lib/ext/kernel.rb +20 -0
- data/lib/ext/module.rb +20 -0
- data/lib/{utilities → ext}/object.rb +3 -5
- data/lib/ext/string.rb +20 -0
- data/lib/ext/symbol.rb +11 -0
- data/lib/ext/tempfile.rb +5 -0
- data/lib/foundations/classic.rb +66 -0
- data/lib/foundations/compact.rb +50 -0
- data/lib/helpers/basic.rb +11 -0
- data/lib/helpers/doc_type.rb +34 -0
- data/lib/helpers/extended.rb +21 -0
- data/lib/helpers/form.rb +3 -1
- data/lib/helpers/formatting.rb +3 -3
- data/lib/helpers/layouts.rb +37 -0
- data/lib/helpers/model.rb +8 -4
- data/lib/helpers/view.rb +2 -4
- data/lib/layers/inflect/english.rb +48 -5
- data/lib/layers/mvc.rb +18 -18
- data/lib/layers/mvc/controllers.rb +41 -0
- data/lib/layers/mvc/extensions.rb +52 -0
- data/lib/layers/orm/migration.rb +1 -1
- data/lib/layers/orm/{active_record.rb → providers/active_record.rb} +9 -14
- data/lib/layers/orm/{active_record → providers/active_record}/migrations/empty.rb.erb +0 -0
- data/lib/layers/orm/{active_record → providers/active_record}/tasks/generate.rb +1 -1
- data/lib/layers/orm/{active_record → providers/active_record}/tasks/schema.rb +1 -1
- data/lib/layers/orm/{data_mapper.rb → providers/data_mapper.rb} +3 -4
- data/lib/layers/orm/providers/filebase.rb +25 -0
- data/lib/layers/orm/{sequel.rb → providers/sequel.rb} +11 -7
- data/lib/layers/orm/{sequel → providers/sequel}/migrations/empty.rb.erb +0 -0
- data/lib/layers/orm/{sequel → providers/sequel}/tasks/generate.rb +5 -3
- data/lib/layers/orm/{sequel → providers/sequel}/tasks/schema.rb +2 -2
- data/lib/{renderers → layers/renderers}/erubis.rb +13 -16
- data/lib/{renderers → layers/renderers}/haml.rb +27 -25
- data/lib/layers/renderers/markaby.rb +29 -0
- data/lib/matchers/accept.rb +21 -0
- data/lib/matchers/base.rb +30 -0
- data/lib/matchers/content_type.rb +17 -0
- data/lib/matchers/path.rb +67 -0
- data/lib/matchers/query.rb +21 -0
- data/lib/matchers/request.rb +27 -0
- data/lib/matchers/resource.rb +19 -0
- data/lib/matchers/traits.rb +19 -0
- data/lib/matchers/uri.rb +20 -0
- data/lib/renderers/mixin.rb +15 -29
- data/lib/resources/mixin.rb +134 -0
- data/lib/resources/paths.rb +34 -0
- data/lib/runtime/configuration.rb +51 -136
- data/lib/runtime/console.rb +4 -1
- data/lib/runtime/logger.rb +24 -48
- data/lib/runtime/mime_types.rb +516 -2
- data/lib/runtime/mocks.rb +14 -0
- data/lib/runtime/monitor.rb +32 -0
- data/lib/runtime/request.rb +107 -39
- data/lib/runtime/response.rb +5 -2
- data/lib/runtime/response_mixin.rb +41 -22
- data/lib/runtime/runtime.rb +67 -0
- data/lib/runtime/server.rb +14 -101
- data/lib/runtime/session.rb +4 -43
- data/lib/runtime/worker.rb +86 -0
- data/lib/servers/base.rb +42 -0
- data/lib/servers/mongrel.rb +13 -0
- data/lib/servers/webrick.rb +13 -0
- data/lib/tasks/gem.rb +1 -0
- data/lib/tasks/generate.rb +67 -62
- data/lib/views/errors.rb +49 -0
- data/lib/views/mixin.rb +34 -82
- data/lib/waves.rb +36 -57
- data/samples/blog/Rakefile +16 -5
- data/samples/blog/configurations/default.rb +11 -0
- data/samples/blog/configurations/development.rb +9 -11
- data/samples/blog/configurations/production.rb +11 -15
- data/samples/blog/models/comment.rb +9 -0
- data/samples/blog/models/entry.rb +17 -0
- data/samples/blog/public/css/site.css +13 -2
- data/samples/blog/public/javascript/jquery-1.2.6.min.js +32 -0
- data/samples/blog/resources/entry.rb +39 -0
- data/samples/blog/resources/map.rb +9 -0
- data/samples/blog/schema/migrations/001_initial_schema.rb +3 -3
- data/samples/blog/schema/migrations/002_add_comments.rb +2 -2
- data/samples/blog/startup.rb +8 -6
- data/samples/blog/templates/comment/add.mab +6 -4
- data/samples/blog/templates/comment/list.mab +4 -4
- data/samples/blog/templates/entry/{editor.mab → edit.mab} +7 -6
- data/samples/blog/templates/entry/list.mab +10 -5
- data/samples/blog/templates/entry/show.mab +16 -7
- data/samples/blog/templates/entry/summary.mab +8 -4
- data/samples/blog/templates/errors/not_found_404.mab +6 -1
- data/samples/blog/templates/layouts/default.mab +5 -3
- data/samples/blog/templates/waves/status.mab +85 -0
- data/{app → templates/classic}/Rakefile +21 -3
- data/templates/classic/configurations/default.rb.erb +9 -0
- data/{app → templates/classic}/configurations/development.rb.erb +3 -8
- data/{app → templates/classic}/configurations/production.rb.erb +3 -5
- data/{app → templates/classic}/controllers/.gitignore +0 -0
- data/{app/doc → templates/classic/helpers}/.gitignore +0 -0
- data/{app/helpers → templates/classic/lib/tasks}/.gitignore +0 -0
- data/{app/lib/tasks → templates/classic/models}/.gitignore +0 -0
- data/{app/log → templates/classic/public/css}/.gitignore +0 -0
- data/{app/models → templates/classic/public/flash}/.gitignore +0 -0
- data/{app/public/css → templates/classic/public/images}/.gitignore +0 -0
- data/{app/public/flash → templates/classic/public/javascript}/.gitignore +0 -0
- data/{app/public/images → templates/classic/resources}/.gitignore +0 -0
- data/templates/classic/resources/map.rb.erb +8 -0
- data/{app/public/javascript → templates/classic/schema/migrations}/.gitignore +0 -0
- data/templates/classic/startup.rb.erb +11 -0
- data/templates/classic/templates/errors/not_found_404.mab +7 -0
- data/templates/classic/templates/errors/server_error_500.mab +7 -0
- data/{app → templates/classic}/templates/layouts/default.mab +0 -0
- data/{app/schema/migrations → templates/classic/tmp/sessions}/.gitignore +0 -0
- data/{app/tmp/sessions → templates/classic/views}/.gitignore +0 -0
- data/templates/compact/startup.rb.erb +11 -0
- metadata +152 -258
- data/app/bin/waves-console +0 -4
- data/app/bin/waves-server +0 -4
- data/app/configurations/mapping.rb.erb +0 -14
- data/app/lib/application.rb.erb +0 -5
- data/app/startup.rb +0 -5
- data/app/templates/errors/not_found_404.mab +0 -2
- data/app/templates/errors/server_error_500.mab +0 -2
- data/app/views/.gitignore +0 -0
- data/bin/waves-console +0 -4
- data/bin/waves-server +0 -4
- data/lib/commands/waves-console.rb +0 -21
- data/lib/controllers/base.rb +0 -11
- data/lib/controllers/mixin.rb +0 -165
- data/lib/foundations/default.rb +0 -27
- data/lib/foundations/simple.rb +0 -30
- data/lib/helpers/asset_helper.rb +0 -67
- data/lib/helpers/common.rb +0 -66
- data/lib/helpers/default.rb +0 -13
- data/lib/helpers/number_helper.rb +0 -25
- data/lib/helpers/tag_helper.rb +0 -58
- data/lib/helpers/url_helper.rb +0 -77
- data/lib/layers/default_errors.rb +0 -26
- data/lib/layers/inflect/english/rules.rb +0 -88
- data/lib/layers/inflect/english/string.rb +0 -24
- data/lib/layers/orm/filebase.rb +0 -22
- data/lib/layers/simple.rb +0 -32
- data/lib/layers/simple_errors.rb +0 -23
- data/lib/mapping/mapping.rb +0 -289
- data/lib/mapping/pretty_urls.rb +0 -96
- data/lib/renderers/markaby.rb +0 -33
- data/lib/runtime/application.rb +0 -69
- data/lib/runtime/blackboard.rb +0 -57
- data/lib/runtime/debugger.rb +0 -9
- data/lib/runtime/response_proxy.rb +0 -30
- data/lib/tasks/cluster.rb +0 -26
- data/lib/utilities/inflect.rb +0 -110
- data/lib/utilities/module.rb +0 -21
- data/lib/utilities/proc.rb +0 -16
- data/lib/utilities/string.rb +0 -49
- data/lib/utilities/symbol.rb +0 -10
- data/lib/utilities/tempfile.rb +0 -9
- data/lib/views/base.rb +0 -9
- data/samples/blog/bin/waves-console +0 -3
- data/samples/blog/bin/waves-server +0 -3
- data/samples/blog/configurations/mapping.rb +0 -23
- data/samples/blog/doc/EMTPY +0 -0
- data/samples/blog/lib/application.rb +0 -5
- data/verify/app_generation/helpers.rb +0 -24
- data/verify/app_generation/startup.rb +0 -39
- data/verify/blackboard/blackboard_verify.rb +0 -92
- data/verify/blackboard/helpers.rb +0 -5
- data/verify/configurations/attributes.rb +0 -37
- data/verify/configurations/helpers.rb +0 -1
- data/verify/configurations/rack_integration.rb +0 -29
- data/verify/controllers/base.rb +0 -37
- data/verify/controllers/helpers.rb +0 -13
- data/verify/controllers/interface.rb +0 -51
- data/verify/core/helpers.rb +0 -3
- data/verify/core/utilities.rb +0 -177
- data/verify/foundations/default.rb +0 -86
- data/verify/foundations/default_application/Rakefile +0 -14
- data/verify/foundations/default_application/bin/waves-console +0 -3
- data/verify/foundations/default_application/bin/waves-server +0 -3
- data/verify/foundations/default_application/configurations/development.rb +0 -26
- data/verify/foundations/default_application/configurations/mapping.rb +0 -14
- data/verify/foundations/default_application/configurations/production.rb +0 -30
- data/verify/foundations/default_application/controllers/default.rb +0 -15
- data/verify/foundations/default_application/controllers/loaded.rb +0 -15
- data/verify/foundations/default_application/defaultapplication.db +0 -0
- data/verify/foundations/default_application/helpers/loaded.rb +0 -10
- data/verify/foundations/default_application/lib/application.rb +0 -5
- data/verify/foundations/default_application/models/default.rb +0 -13
- data/verify/foundations/default_application/models/loaded.rb +0 -13
- data/verify/foundations/default_application/schema/migrations/templates/empty.rb.erb +0 -9
- data/verify/foundations/default_application/startup.rb +0 -7
- data/verify/foundations/default_application/templates/errors/not_found_404.mab +0 -2
- data/verify/foundations/default_application/templates/errors/server_error_500.mab +0 -2
- data/verify/foundations/default_application/templates/layouts/default.mab +0 -14
- data/verify/foundations/default_application/views/default.rb +0 -7
- data/verify/foundations/default_application/views/loaded.rb +0 -15
- data/verify/foundations/helpers.rb +0 -1
- data/verify/foundations/simple.rb +0 -25
- data/verify/helpers.rb +0 -76
- data/verify/layers/data_mapper/association_verify.rb +0 -87
- data/verify/layers/default_errors.rb +0 -29
- data/verify/layers/helpers.rb +0 -1
- data/verify/layers/migration.rb +0 -33
- data/verify/layers/sequel/model.rb +0 -41
- data/verify/mapping/always.rb +0 -19
- data/verify/mapping/filters.rb +0 -65
- data/verify/mapping/handle.rb +0 -24
- data/verify/mapping/helpers.rb +0 -7
- data/verify/mapping/matches.rb +0 -27
- data/verify/mapping/named.rb +0 -29
- data/verify/mapping/options.rb +0 -17
- data/verify/mapping/path.rb +0 -40
- data/verify/mapping/response_proxy.rb +0 -50
- data/verify/mapping/threaded.rb +0 -25
- data/verify/requests/helpers.rb +0 -16
- data/verify/requests/request.rb +0 -73
- data/verify/requests/response.rb +0 -59
- data/verify/requests/session.rb +0 -54
- data/verify/views/helpers.rb +0 -1
- data/verify/views/rendering.rb +0 -34
- data/verify/views/templates/foo.erb +0 -0
- data/verify/views/templates/moo.erb +0 -0
- data/verify/views/templates/moo.mab +0 -0
data/verify/mapping/handle.rb
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# require 'test_helper' because RubyMate needs help
|
|
2
|
-
require File.join(File.dirname(__FILE__), "helpers")
|
|
3
|
-
|
|
4
|
-
specification "A developer can register exception handlers" do
|
|
5
|
-
|
|
6
|
-
before do
|
|
7
|
-
mapping.clear
|
|
8
|
-
mapping.handle(Waves::Dispatchers::NotFoundError) do
|
|
9
|
-
response.status = 404; response.body = "404 Not Found"
|
|
10
|
-
end
|
|
11
|
-
mapping.handle(Waves::Dispatchers::NotFoundError) do
|
|
12
|
-
response.status = 404; response.body = "Something Different"
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
specify 'The minimal 404 handler in SimpleErrors' do
|
|
17
|
-
|
|
18
|
-
r = get('/')
|
|
19
|
-
r.status.should == 404
|
|
20
|
-
r.body.should == '404 Not Found'
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
end
|
data/verify/mapping/helpers.rb
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__) , "..", "helpers")
|
|
2
|
-
|
|
3
|
-
# define basic app for use in testing
|
|
4
|
-
# before methods may add to it using helper methods
|
|
5
|
-
module MappingApp ; include Waves::Foundations::Simple ; end
|
|
6
|
-
Waves << MappingApp
|
|
7
|
-
Waves::Console.load( :mode => :development )
|
data/verify/mapping/matches.rb
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# require 'test_helper' because RubyMate needs help
|
|
2
|
-
require File.join(File.dirname(__FILE__), "helpers")
|
|
3
|
-
|
|
4
|
-
specification "A developer can extract parameters from a request path or URL." do
|
|
5
|
-
|
|
6
|
-
before do
|
|
7
|
-
mapping.clear
|
|
8
|
-
|
|
9
|
-
path %r{/param/(\w+)} do |value|
|
|
10
|
-
"You asked for: #{value}."
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
url %r{http://localhost:(\d+)/port} do |port|
|
|
14
|
-
port
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
specify 'Extract a parameter via a regexp match of the path.' do
|
|
20
|
-
get('/param/elephant').body.should == 'You asked for: elephant.'
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
specify 'Extract a parameter via a regexp match of the URL.' do
|
|
24
|
-
get('http://localhost:3000/port').body.should == '3000'
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
end
|
data/verify/mapping/named.rb
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# require 'test_helper' because RubyMate needs help
|
|
2
|
-
require File.join(File.dirname(__FILE__), "helpers")
|
|
3
|
-
|
|
4
|
-
specification "A developer can register named mappings" do
|
|
5
|
-
|
|
6
|
-
# before do
|
|
7
|
-
# mapping.clear
|
|
8
|
-
# resource = /([\w\-]+)/
|
|
9
|
-
# name = /([\w\-\_\.\+\@]+)/
|
|
10
|
-
# path [resource, name],
|
|
11
|
-
# :generator => generator(:show) { |resource,name| "/#{resource}/#{name}" } do
|
|
12
|
-
# "Works"
|
|
13
|
-
# end
|
|
14
|
-
# end
|
|
15
|
-
#
|
|
16
|
-
# specify "accessible via Waves.mapping.named" do
|
|
17
|
-
#
|
|
18
|
-
# Waves.mapping.named.show("foo", "bar").should == "/foo/bar"
|
|
19
|
-
#
|
|
20
|
-
# end
|
|
21
|
-
#
|
|
22
|
-
# specify "accessible via Application.paths" do
|
|
23
|
-
#
|
|
24
|
-
# Test.paths.show("foo", "bar").should == "/foo/bar"
|
|
25
|
-
#
|
|
26
|
-
# end
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
end
|
data/verify/mapping/options.rb
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# require 'test_helper' because RubyMate needs help
|
|
2
|
-
require File.join(File.dirname(__FILE__), "helpers")
|
|
3
|
-
|
|
4
|
-
specification "A developer can map requests with options." do
|
|
5
|
-
|
|
6
|
-
before do
|
|
7
|
-
mapping.clear
|
|
8
|
-
path('/', :remote_addr => "10.10.10.10" ) { 'This request is from 10.10.10.10' }
|
|
9
|
-
path('/', :remote_addr => "127.0.0.1" ) { 'This request is from 127.0.0.1' }
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
specify 'Map the path of a GET request to a lambda.' do
|
|
13
|
-
get('/').body.should == 'This request is from 127.0.0.1'
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
end
|
|
17
|
-
|
data/verify/mapping/path.rb
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# require 'test_helper' because RubyMate needs help
|
|
2
|
-
require File.join(File.dirname(__FILE__), "helpers")
|
|
3
|
-
|
|
4
|
-
specification "A developer can map requests using the request path." do
|
|
5
|
-
|
|
6
|
-
before do
|
|
7
|
-
mapping.clear
|
|
8
|
-
path('/', :method => :post ) { 'This is a simple post rule.' }
|
|
9
|
-
path('/', :method => :put ) { 'This is a simple put rule.' }
|
|
10
|
-
path('/', :method => :delete ) { 'This is a simple delete rule.' }
|
|
11
|
-
path('/', :method => :get) { 'This is a simple get rule.' }
|
|
12
|
-
path('/foo') { "The server says, 'bar!'" }
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
specify 'Map the path of a GET request to a lambda.' do
|
|
16
|
-
get('/').body.should == 'This is a simple get rule.'
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
specify 'Map the path of a POST request to a lambda.' do
|
|
20
|
-
post('/').body.should == 'This is a simple post rule.'
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
specify 'Map the path of a PUT request to a lambda.' do
|
|
24
|
-
put('/').body.should == 'This is a simple put rule.'
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
specify 'Map the path of a DELETE request to a lambda.' do
|
|
28
|
-
delete('/').body.should == 'This is a simple delete rule.'
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
specify 'When method is not explicitely set in a mapping it accepts all methods' do
|
|
32
|
-
get( '/foo' ).body.should == "The server says, 'bar!'"
|
|
33
|
-
post( '/foo' ).body.should == "The server says, 'bar!'"
|
|
34
|
-
put( '/foo' ).body.should == "The server says, 'bar!'"
|
|
35
|
-
delete( '/foo' ).body.should == "The server says, 'bar!'"
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
end
|
|
40
|
-
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# require 'test_helper' because RubyMate needs help
|
|
2
|
-
require File.join(File.dirname(__FILE__), "helpers")
|
|
3
|
-
|
|
4
|
-
# Note: you have to define the resource classes using module_eval here, because otherwise
|
|
5
|
-
# the auto_create code never gets triggered in the application.
|
|
6
|
-
|
|
7
|
-
module MappingApp
|
|
8
|
-
include Waves::Layers::MVC
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
MappingApp::Controllers.module_eval do
|
|
12
|
-
class Animal
|
|
13
|
-
include Waves::Controllers::Mixin
|
|
14
|
-
def cow() 'Moo!' end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
MappingApp::Views.module_eval do
|
|
19
|
-
class Animal
|
|
20
|
-
include Waves::Views::Mixin
|
|
21
|
-
def say( says ) "This animal says: '#{says}'" end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
specification "A developer may succinctly define a resource-based controller-view chain." do
|
|
26
|
-
|
|
27
|
-
before do
|
|
28
|
-
mapping.clear
|
|
29
|
-
path('/cow' ) do
|
|
30
|
-
resource( :animal ) { controller { cow } | view { | says | say( says ) } }
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
path('/onager') do
|
|
34
|
-
resource( "cow" ) do
|
|
35
|
-
controller { redirect model_name }.call
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
specify 'Pipe output of controller to view within a resource context.' do
|
|
41
|
-
get('/cow').body.should == "This animal says: 'Moo!'"
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
specify "Redirect from within controller" do
|
|
45
|
-
get('/onager').status.should == 302
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
end
|
|
50
|
-
|
data/verify/mapping/threaded.rb
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# require 'test_helper' because RubyMate needs help
|
|
2
|
-
require File.join(File.dirname(__FILE__), "helpers")
|
|
3
|
-
|
|
4
|
-
specification "Requests can be made threaded for event driven servers" do
|
|
5
|
-
|
|
6
|
-
before do
|
|
7
|
-
mapping.clear
|
|
8
|
-
threaded( '/upload', {:method => :post} ) { 'This is threaded.' }
|
|
9
|
-
path( '/foo' ) { "The server says, 'bar!'" }
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
specify 'Post to upload should be threaded' do
|
|
13
|
-
req = Waves::Request.new( ::Rack::MockRequest.env_for('/upload', {:method => 'POST'}) )
|
|
14
|
-
::Waves::Dispatchers::Default.new.deferred?(req).should == true
|
|
15
|
-
post('/upload').body.should == 'This is threaded.'
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
specify 'Get to foo should not be threaded' do
|
|
19
|
-
req = Waves::Request.new( ::Rack::MockRequest.env_for('/foo', {:method => 'GET'}) )
|
|
20
|
-
::Waves::Dispatchers::Default.new.deferred?(req).should == false
|
|
21
|
-
get('/foo').body.should == "The server says, 'bar!'"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
end
|
|
25
|
-
|
data/verify/requests/helpers.rb
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__) , "..", "helpers")
|
|
2
|
-
|
|
3
|
-
module TestRequests
|
|
4
|
-
module Configurations
|
|
5
|
-
class Default
|
|
6
|
-
# stub!(:session).and_return(:duration => 30.minutes, :path => '/tmp/sessions')
|
|
7
|
-
::BasePath = File.dirname(__FILE__) / :tmp
|
|
8
|
-
stub!(:session).and_return(:duration => 30.minutes, :path => ::BasePath)
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def env_for(uri="/", options={})
|
|
15
|
-
Rack::MockRequest.env_for(uri,options)
|
|
16
|
-
end
|
data/verify/requests/request.rb
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# require 'test_helper' because RubyMate needs help
|
|
2
|
-
require File.join(File.dirname(__FILE__) , "helpers")
|
|
3
|
-
|
|
4
|
-
describe "A Waves request instance" do
|
|
5
|
-
|
|
6
|
-
before do
|
|
7
|
-
Waves::Session.stub!(:base_path).and_return(BasePath)
|
|
8
|
-
@request = Waves::Request.new(env_for)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it "has session, response, and blackboard objects" do
|
|
12
|
-
@request.session.class.should == Waves::Session
|
|
13
|
-
@request.response.class.should == Waves::Response
|
|
14
|
-
@request.blackboard.class.should == Waves::Blackboard
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it "provides an accessor to the Rack request" do
|
|
18
|
-
@request.rack_request.class.should == Rack::Request
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it "wraps some useful Rack data in more elegant methods" do
|
|
22
|
-
@request.rack_request.should.receive(:path_info)
|
|
23
|
-
@request.path
|
|
24
|
-
|
|
25
|
-
@request.rack_request.should.receive(:host)
|
|
26
|
-
@request.domain
|
|
27
|
-
|
|
28
|
-
@request.rack_request.env.should.receive(:[]).with('CONTENT_TYPE')
|
|
29
|
-
@request.content_type
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it "delegates unknown methods to the Rack request" do
|
|
33
|
-
@request.rack_request.should.receive(:chitty_bang_bang)
|
|
34
|
-
@request.chitty_bang_bang
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
describe "The HTTP request method" do
|
|
40
|
-
|
|
41
|
-
before do
|
|
42
|
-
Waves::Session.stub!(:base_path).and_return(BasePath)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it "is determined in a straightforward manner for straightforward requests" do
|
|
46
|
-
@get = Waves::Request.new(env_for("/", :method => 'GET'))
|
|
47
|
-
@post = Waves::Request.new(env_for("/", :method => 'POST'))
|
|
48
|
-
@put = Waves::Request.new(env_for("/", :method => 'PUT'))
|
|
49
|
-
@delete = Waves::Request.new(env_for("/", :method => 'DELETE'))
|
|
50
|
-
|
|
51
|
-
@get.method.should == :get
|
|
52
|
-
@post.method.should == :post
|
|
53
|
-
@put.method.should == :put
|
|
54
|
-
@delete.method.should == :delete
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it "can be set with the '_method' query param on a POST" do
|
|
58
|
-
@url_put = Waves::Request.new(env_for("/?_method=put", :method => 'POST'))
|
|
59
|
-
@url_delete = Waves::Request.new(env_for("/?_method=delete", :method => 'POST'))
|
|
60
|
-
|
|
61
|
-
@url_put.method.should == :put; @url_put.put?.should.be.true
|
|
62
|
-
@url_delete.method.should == :delete; @url_delete.delete?.should.be.true
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
it "can be set with the '_method' body param on a POST" do
|
|
66
|
-
@body_put = Waves::Request.new(env_for("/", :method => 'POST', :input => '_method=put'))
|
|
67
|
-
@body_delete = Waves::Request.new(env_for("/", :method => 'POST', :input => '_method=delete'))
|
|
68
|
-
|
|
69
|
-
@body_put.method.should == :put; @body_put.put?.should.be.true
|
|
70
|
-
@body_delete.method.should == :delete
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
end
|
data/verify/requests/response.rb
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# require 'test_helper' because RubyMate needs help
|
|
2
|
-
require File.join(File.dirname(__FILE__) , "helpers")
|
|
3
|
-
|
|
4
|
-
describe "An instance of Waves::Response" do
|
|
5
|
-
|
|
6
|
-
before do
|
|
7
|
-
Waves::Session.stub!(:base_path).and_return(BasePath)
|
|
8
|
-
@request = Waves::Request.new(env_for)
|
|
9
|
-
@response = Waves::Response.new(@request)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it "has a Rack::Response" do
|
|
13
|
-
@response.rack_response.class.should == Rack::Response
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
it "has a Waves::Request" do
|
|
17
|
-
@response.request.class.should == Waves::Request
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
it "can access the session for the current request" do
|
|
21
|
-
@response.session.class.should == Waves::Session
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it "provides setter methods for commonly used headers" do
|
|
25
|
-
@response.rack_response.should.receive(:[]=).with('Content-Type', 'text/javascript')
|
|
26
|
-
@response.content_type = 'text/javascript'
|
|
27
|
-
|
|
28
|
-
@response.rack_response.should.receive(:[]=).with('Content-Length', '42')
|
|
29
|
-
@response.content_length = '42'
|
|
30
|
-
|
|
31
|
-
@response.rack_response.should.receive(:[]=).with('Location', '/here/')
|
|
32
|
-
@response.location = '/here/'
|
|
33
|
-
|
|
34
|
-
@response.rack_response.should.receive(:[]=).with('Expires', 'Thu, 09 Aug 2007 05:22:55 GMT')
|
|
35
|
-
@response.expires = 'Thu, 09 Aug 2007 05:22:55 GMT'
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it "delegates unknown methods to the Rack response" do
|
|
39
|
-
@response.rack_response.should.receive(:mclintock!)
|
|
40
|
-
@response.mclintock!
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
describe "Waves::Response#finish" do
|
|
46
|
-
|
|
47
|
-
before do
|
|
48
|
-
Waves::Session.stub!(:base_path).and_return(BasePath)
|
|
49
|
-
@request = Waves::Request.new(env_for)
|
|
50
|
-
@response = Waves::Response.new(@request)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "saves the request session and calls Rack::Response#finish" do
|
|
54
|
-
@response.session.should.receive(:save)
|
|
55
|
-
@response.rack_response.should.receive(:finish)
|
|
56
|
-
@response.finish
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
end
|
data/verify/requests/session.rb
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# require 'test_helper' because RubyMate needs help
|
|
2
|
-
require File.join(File.dirname(__FILE__) , "helpers")
|
|
3
|
-
|
|
4
|
-
SessionData = "--- \nmoo: cow\n"
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
describe "An new instance of Waves::Session" do
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
before do
|
|
12
|
-
FileUtils.mkdir(BasePath) unless File.exist?(BasePath)
|
|
13
|
-
Waves::Session.stub!(:generate_session_id).and_return("fake_session")
|
|
14
|
-
Waves::Session.stub!(:base_path).and_return(BasePath)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
after do
|
|
18
|
-
FileUtils.rm Dir["#{BasePath}/fake_session"]
|
|
19
|
-
FileUtils.rmdir BasePath
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "loads data from a session file if one exists" do
|
|
23
|
-
File.write(BasePath / :fake_session, SessionData)
|
|
24
|
-
@request = Waves::Request.new(env_for)
|
|
25
|
-
session = @request.session
|
|
26
|
-
session.to_hash.should == { 'moo' => 'cow'}
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it "is empty when no session file exists" do
|
|
30
|
-
Waves::Session.stub!(:generate_session_id).and_return("other_session")
|
|
31
|
-
@request = Waves::Request.new(env_for)
|
|
32
|
-
session = @request.session
|
|
33
|
-
session.to_hash.should.be.empty
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
describe "Session values" do
|
|
39
|
-
|
|
40
|
-
before do
|
|
41
|
-
Waves::Session.stub!(:base_path).and_return(BasePath)
|
|
42
|
-
@request = Waves::Request.new(env_for)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it "can be read and written using [] and []=" do
|
|
46
|
-
session = Waves::Session.new(@request)
|
|
47
|
-
session['moo'].should.be.nil
|
|
48
|
-
session['moo'] = 'bull'
|
|
49
|
-
session['moo'].should == 'bull'
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
|
data/verify/views/helpers.rb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__) , "..", "helpers")
|
data/verify/views/rendering.rb
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# require 'test_helper' because RubyMate needs help
|
|
2
|
-
require File.join(File.dirname(__FILE__) , "helpers")
|
|
3
|
-
|
|
4
|
-
Dir.chdir(File.dirname(__FILE__)) do
|
|
5
|
-
class TestView
|
|
6
|
-
include Waves::Views::Mixin
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
describe "Waves::Views" do
|
|
10
|
-
|
|
11
|
-
it "provides a list of Renderers" do
|
|
12
|
-
Waves::Views.renderers.should.respond_to :[]
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "defines an error for missing templates" do
|
|
16
|
-
defined?(Waves::Views::NoTemplateError).should.not.be.nil
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
describe "A class which has included Waves::Views::Mixin" do
|
|
22
|
-
|
|
23
|
-
before do
|
|
24
|
-
@view = TestView.new(mock(:request))
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "uses the first renderer for which it can find a template file with the associated extension" do
|
|
28
|
-
@view.renderer("foo").should == Waves::Renderers::Erubis
|
|
29
|
-
@view.renderer("moo").should == Waves::Renderers::Erubis
|
|
30
|
-
@view.renderer("bleat").should == nil
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
end
|
|
34
|
-
end
|