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,9 +0,0 @@
1
- class <%= class_name %> < Sequel::Migration
2
-
3
- def up
4
- end
5
-
6
- def down
7
- end
8
-
9
- end
@@ -1,7 +0,0 @@
1
- unless defined? WAVES
2
- WAVES = File.join(File.dirname(__FILE__), 'waves')
3
- end
4
-
5
- $:.unshift(File.join(WAVES, "lib")) if File.exist? WAVES
6
-
7
- require 'waves'
@@ -1,2 +0,0 @@
1
- h1 '404'
2
- p %q( That URL does not exist on this server. )
@@ -1,2 +0,0 @@
1
- h1 '500'
2
- p %q( Internal server error. Sorry, but your request could not be processed. )
@@ -1,14 +0,0 @@
1
- doctype :html4_strict
2
-
3
- html do
4
-
5
- head do
6
- title @title
7
- end
8
-
9
- body do
10
- layout_content
11
- end
12
-
13
- end
14
-
@@ -1,7 +0,0 @@
1
- module DefaultApplication
2
- module Views
3
- class Default < Waves::Views::Base
4
- def from_default; end
5
- end
6
- end
7
- end
@@ -1,15 +0,0 @@
1
- module DefaultApplication
2
-
3
- module Views
4
-
5
- class Loaded < Default
6
-
7
- def from_loaded
8
-
9
- end
10
-
11
- end
12
-
13
- end
14
-
15
- end
@@ -1 +0,0 @@
1
- require File.join(File.dirname(__FILE__) , "..", "helpers")
@@ -1,25 +0,0 @@
1
- # require 'test_helper' because RubyMate needs help
2
- require File.join(File.dirname(__FILE__) , "helpers")
3
-
4
- module SimpleApplication ; include Waves::Foundations::Simple ; end
5
-
6
- describe "An application module which includes the Simple foundation" do
7
-
8
- it "should have basic submodules defined" do
9
- lambda do
10
- SimpleApplication::Configurations::Mapping
11
- SimpleApplication::Configurations::Development
12
- end.should.not.raise
13
- end
14
-
15
- it "should have accessors defined" do
16
- [ :config, :configurations ].each do |method|
17
- SimpleApplication.should.respond_to method
18
- end
19
- end
20
-
21
- it "should define [] method for appropriate submodules" do
22
- SimpleApplication::Configurations.should.respond_to :[]
23
- end
24
-
25
- end
data/verify/helpers.rb DELETED
@@ -1,76 +0,0 @@
1
- require 'rubygems'
2
- %w( bacon facon ).each { |f| require f }
3
-
4
- # Prepend the framework lib to the loadpath
5
- $:.unshift( File.join(File.dirname(__FILE__), "..", "lib") )
6
- require 'waves'
7
-
8
- Bacon.extend Bacon::TestUnitOutput
9
- Bacon.summary_on_exit
10
-
11
- module Kernel
12
- private
13
- def specification(name, &block) Bacon::Context.new(name, &block) end
14
- end
15
-
16
-
17
- Bacon::Context.module_eval do
18
-
19
- # Mapping helpers
20
- def mapping
21
- ::Waves::Application.instance.mapping
22
- end
23
-
24
- %w{ path url always handle threaded generator}.each do |method|
25
- module_eval "def #{method}(*args,&block); mapping.#{method}(*args,&block);end"
26
- end
27
-
28
- # Rack request helpers
29
- ::Rack::MockRequest::DEFAULT_ENV.merge!(
30
- 'REMOTE_ADDR' => '127.0.0.1',
31
- 'REMOTE_HOST' => 'localhost',
32
- 'SERVER_NAME' => 'localhost',
33
- 'SERVER_PORT' => '3000',
34
- 'SERVER_PORT_SECURE' => '0',
35
- 'SERVER_PROTOCOL' => 'HTTP/1.1',
36
- 'SERVER_SOFTWARE' => 'Waves 1.0',
37
- 'HTTP_HOST' => 'localhost',
38
- 'HTTP_VERSION' => 'HTTP/1.1',
39
- 'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14',
40
- 'HTTP_CACHE_CONTROL' => 'max-age=0',
41
- 'HTTP_ACCEPT' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
42
- 'HTTP_ACCEPT_LANGUAGE' => 'en-us,en;q=0.5',
43
- 'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
44
- 'HTTP_ACCEPT_ENCODING' => 'gzip,compress;q=0.5,*;q=0.0,',
45
- 'HTTP_CONNECTION' => 'keep-alive',
46
- 'HTTP_KEEP_ALIVE' => '300',
47
- 'HTTP_REFERER' => 'http://localhost/',
48
- 'GATEWAY_INTERFACE' => 'CGI/1.1'
49
- )
50
-
51
- def request
52
- @request ||= ::Rack::MockRequest.new( ::Waves::Dispatchers::Default.new )
53
- end
54
-
55
- def get(uri, opts={}) request.get(uri, opts) end
56
- def post(uri, opts={}) request.post(uri, opts) end
57
- def put(uri, opts={}) request.put(uri, opts) end
58
- def delete(uri, opts={}) request.delete(uri, opts) end
59
-
60
-
61
- # Testing helpers
62
- alias_method :specify, :it
63
-
64
- def wrap(&block)
65
- @before << block
66
- @after << block
67
- end
68
-
69
- def rm_if_exist(name)
70
- FileUtils.rm name if File.exist? name
71
- end
72
-
73
- end
74
-
75
-
76
-
@@ -1,87 +0,0 @@
1
- # require 'test_helper' because RubyMate needs help
2
- require File.join(File.dirname(__FILE__), "..", "helpers")
3
-
4
- begin
5
- require 'layers/orm/data_mapper'
6
- require 'flexmock'
7
-
8
- module DMApplication
9
- include Waves::Foundations::Default
10
- include Waves::Layers::ORM::DataMapper
11
- end
12
-
13
- DMA = DMApplication
14
- DMAMapping = DMA::Configurations::Mapping
15
- DMApplication::Configurations::Default
16
-
17
- module DMA ; include Waves::Foundations::Simple ; end
18
- Waves << DMA
19
- Waves::Console.load( :mode => :development )
20
-
21
- module DMApplication
22
- module Configurations
23
- class Development < Default
24
- database :database => 'sqlite3::memory'
25
- end
26
- end
27
- end
28
-
29
- module Bacon
30
- class Context
31
- include FlexMock::ArgumentTypes
32
- include FlexMock::MockContainer
33
- end
34
- end
35
-
36
- describe "DataMapper Associations" do
37
-
38
- before do
39
- @adapter = FlexMock::DefaultFrameworkAdapter.new
40
- end
41
-
42
- after do
43
- flexmock_verify
44
- end
45
-
46
- it 'should add before and after filters that push a new repo' do
47
- filters = DMAMapping.send :filters
48
- filters.should.not == nil
49
- filters[:before][0][0][:path].should == true
50
- filters[:always][0][0][:path].should == true
51
- before_size = ::DataMapper::Repository.context.size
52
- filters[:before][0][1].call
53
- after_size = ::DataMapper::Repository.context.size
54
- (after_size - before_size).should == 1
55
- filters[:always][0][1].call
56
- end_size = ::DataMapper::Repository.context.size
57
- (end_size - after_size).should == -1
58
- end
59
-
60
- it 'should add before and after filters that push a new repo with flexmock' do
61
- mock_context = flexmock("context")
62
- flexmock(::DataMapper::Repository, :context => mock_context)
63
- mock_context.should_receive(:push).once
64
- mock_context.should_receive(:pop).once
65
-
66
- filters = DMAMapping.send :filters
67
- filters[:before][0][1].call
68
- filters[:always][0][1].call
69
- end
70
-
71
- it 'should initialize the database adapater' do
72
- DMA.database.class.should.not == nil
73
- DMA.database.class.should == ::DataMapper::Adapters::Sqlite3Adapter
74
- end
75
-
76
- it 'It should load models' do
77
- # pending
78
- end
79
-
80
- end
81
- rescue LoadError => e
82
- describe "DataMapper Associations" do
83
- it 'should be able to load dm-core' do
84
- puts "\nDatamapper associations specs not run! Could not load dm-core: #{e}\n"
85
- end
86
- end
87
- end
@@ -1,29 +0,0 @@
1
- # require 'test_helper' because RubyMate needs help
2
- require File.join(File.dirname(__FILE__) , "helpers")
3
-
4
- module DefaultErrorsApp
5
- include Waves::Foundations::Simple
6
- include Waves::Layers::DefaultErrors
7
- module Views
8
- class Errors
9
- include Waves::Views::Mixin
10
- def not_found_404(arg)
11
- "View-based 404"
12
- end
13
- end
14
- end
15
- stub!(:views).and_return(Views)
16
- end
17
-
18
- # Waves << DefaultErrorsApp
19
- Waves::Console.load( :mode => :development )
20
-
21
-
22
- describe "An application which includes the DefaultErrors layer" do
23
-
24
- it "registers a view-based handler for NotFound errors" do
25
- r = get('/bogus')
26
- r.body.should == "View-based 404"
27
- end
28
-
29
- end
@@ -1 +0,0 @@
1
- require File.join(File.dirname(__FILE__) , "..", "helpers")
@@ -1,33 +0,0 @@
1
- # require 'test_helper' because RubyMate needs help
2
- require File.join(File.dirname(__FILE__) , "helpers")
3
- require 'layers/orm/migration'
4
-
5
- ORM = Waves::Layers::ORM
6
-
7
- Dir.chdir("#{File.dirname(__FILE__)}/../../samples/blog") do
8
-
9
- describe "Waves::Layers::ORM migration helpers" do
10
-
11
- it "defines a standard migration location" do
12
- ORM.migration_directory.should == "schema/migrations"
13
- end
14
-
15
- it "supplies a list of all migration files found in the standard location" do
16
- ORM.migration_files.should == ["schema/migrations/001_initial_schema.rb", "schema/migrations/002_add_comments.rb"]
17
- end
18
-
19
- it "detects the highest-numbered existing migration file" do
20
- ORM.latest_migration_version.should == 2
21
- end
22
-
23
- it "determines the number of the next migration to be created" do
24
- ORM.next_migration_version.should == 3
25
- end
26
-
27
- it "generates the path for the next migration with a given name" do
28
- ORM.migration_destination("blink").should == "schema/migrations/003_blink.rb"
29
- end
30
-
31
- end
32
-
33
- end
@@ -1,41 +0,0 @@
1
- # require 'test_helper' because RubyMate needs help
2
- require File.join(File.dirname(__FILE__) , "..", "helpers")
3
- require 'layers/orm/sequel'
4
-
5
- module TestApplication
6
- include AutoCode
7
- module Configurations
8
- class Development
9
- stub!(:database).and_return(:adapter => 'sqlite',
10
- :database => "#{File.dirname(__FILE__)}test.db")
11
- end
12
- end
13
- stub!(:config).and_return(Configurations::Development)
14
- include Waves::Layers::ORM::Sequel
15
- end
16
-
17
- Waves << TestApplication
18
- # Waves::Console.load( :mode => :development )
19
- TA = TestApplication
20
-
21
- describe "An application module which includes the Sequel ORM layer" do
22
-
23
- wrap { rm_if_exist 'test.db' }
24
-
25
- it "auto_creates models that inherit from Sequel::Model" do
26
- TA::Models::Default.superclass.should == Sequel::Model
27
- TA::Models::Thingy.superclass.should == TA::Models::Default
28
- end
29
-
30
- it "sets the dataset to use the snake_case of the class name as the table name" do
31
- TA::Models::Thingy.dataset.send(:to_table_reference).should =~ /SELECT.+FROM.+thingies+/
32
- end
33
-
34
- it "provides an accessor for database" do
35
- TA.should.respond_to :database
36
- end
37
-
38
- end
39
-
40
- # Waves.instance_variable_set(:@application, nil)
41
- # raise Waves.application.inspect
@@ -1,19 +0,0 @@
1
- # require 'test_helper' because RubyMate needs help
2
- require File.join(File.dirname(__FILE__), "helpers")
3
- ::TEST_VALUE = 'foo'
4
-
5
- specification "A developer can ensure" do
6
-
7
- before do
8
- mapping.clear
9
- path('/' ) { raise RuntimeError.new('bar') }
10
- always( true ) { Waves.been_there }
11
- end
12
-
13
- specify 'processing is guaranteed regardless of what happens in an action' do
14
- Waves.should.receive(:been_there)
15
- lambda { get('/') }.should.raise RuntimeError
16
- end
17
-
18
- end
19
-
@@ -1,65 +0,0 @@
1
- # require 'test_helper' because RubyMate needs help
2
- require File.join(File.dirname(__FILE__), "helpers")
3
-
4
- describe "A developer can map requests to filters." do
5
-
6
- before do
7
- mapping.clear
8
- handle(Waves::Dispatchers::NotFoundError) { response.status = 404}
9
- mapping.before( :path => '/filters', :method => :post ) { request.response.write('Before post:') }
10
- mapping.before( :path => '/filters' ) { request.response.write('Before:') }
11
- mapping.wrap( :path => '/filters', :method => :post ) { request.response.write(':Wrap post:') }
12
- mapping.wrap( :path => '/filters' ) { request.response.write(':Wrap:') }
13
- mapping.path( '/filters' ) { 'During' }
14
- mapping.after( :path => '/filters', :method => :post ) { request.response.write('After post:') }
15
- mapping.after( :path => '/filters' ) { request.response.write(':After') }
16
-
17
- regexp = %r{^/filters/(\w+)$}
18
-
19
- mapping.before( :path => regexp ) { |filtername| request.response.write("Before #{filtername}:") }
20
- mapping.wrap( :path => regexp ) { |filtername| request.response.write(":Wrap #{filtername}:") }
21
- mapping.path( regexp ) { 'During' }
22
- mapping.after( :path => regexp ) { |filtername| request.response.write(":After #{filtername}") }
23
-
24
- mapping.before( :path => 'filters_with_no_map' ) { request.response.write("Before") }
25
- mapping.wrap( :path => 'filters_with_no_map' ) { request.response.write("Wrap") }
26
- mapping.after( :path => 'filters_with_no_map' ) { request.response.write("After") }
27
-
28
- mapping.before('/pathstring') { request.response.write("Before pathstring") }
29
- mapping.wrap('/pathstring') { request.response.write("Wrap pathstring") }
30
- mapping.path('/pathstring') { "During pathstring" }
31
- mapping.after('/pathstring') { request.response.write("After pathstring") }
32
-
33
- mapping.before(%r{^/pathregexp$}) { request.response.write("Before pathregexp") }
34
- mapping.wrap(%r{^/pathregexp$}) { request.response.write("Wrap pathregexp") }
35
- mapping.path(%r{^/pathregexp$}) { "During pathregexp" }
36
- mapping.after(%r{^/pathregexp$}) { request.response.write("After pathregexp") }
37
-
38
- mapping.before('/pathstring/name', :method => :post) { request.response.write("Before pathstring post") }
39
- mapping.wrap('/pathstring/name', :method => :post) { request.response.write("Wrap pathstring post") }
40
- mapping.path('/pathstring/name', :method => :post) { "During pathstring post" }
41
- mapping.after('/pathstring/name', :method => :post) { request.response.write("After pathstring post") }
42
-
43
- mapping.before(%r{^/pathregexp/name$}, :method => :post) { request.response.write("Before pathregexp post") }
44
- mapping.wrap(%r{^/pathregexp/name$}, :method => :post) { request.response.write("Wrap pathregexp post") }
45
- mapping.path(%r{^/pathregexp/name$}, :method => :post) { "During pathregexp post" }
46
- mapping.after(%r{^/pathregexp/name$}, :method => :post) { request.response.write("After pathregexp post") }
47
- end
48
-
49
- it "Map a path to a 'before', 'after' and 'wrap' filters." do
50
- get('/filters').body.should == 'Before::Wrap:During:Wrap::After'
51
- end
52
-
53
- it "Map a POST to a path to a 'before', 'after' and 'wrap' filters" do
54
- post('/filters').body.should == 'Before post:Before::Wrap post::Wrap:During:Wrap post::Wrap:After post::After'
55
- end
56
-
57
- it "The 'before', 'after' and 'wrap' filters accept a regular expression and can extract parameters from the request path" do
58
- get('/filters/xyz').body.should == 'Before xyz::Wrap xyz:During:Wrap xyz::After xyz'
59
- end
60
-
61
- it "When having 'before', 'after' and 'wrap' filters but no corresponding map action this results in a 404" do
62
- get('/filters_with_no_map').status.should == 404
63
- end
64
-
65
- end