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