test/unit/sinatra_runner_tests.rb in deas-0.24.0 vs test/unit/sinatra_runner_tests.rb in deas-0.24.1
- old
+ new
@@ -1,19 +1,37 @@
require 'assert'
require 'deas/sinatra_runner'
+require 'deas/runner'
+require 'deas/template'
require 'test/support/fake_sinatra_call'
require 'test/support/view_handlers'
-require 'deas/template'
class Deas::SinatraRunner
class UnitTests < Assert::Context
desc "Deas::SinatraRunner"
setup do
+ @runner_class = Deas::SinatraRunner
+ end
+ subject{ @runner_class }
+
+ should "be a Runner" do
+ assert subject < Deas::Runner
+ end
+
+ end
+
+ class InitTests < UnitTests
+ desc "when init"
+ setup do
+ @params = { 'value' => '1' }
+ @norm_params_spy = Deas::Runner::NormalizedParamsSpy.new
+ Assert.stub(NormalizedParams, :new){ |p| @norm_params_spy.new(p) }
+
@fake_sinatra_call = FakeSinatraCall.new
- @runner = Deas::SinatraRunner.new(FlagViewHandler, @fake_sinatra_call)
+ @runner = @runner_class.new(FlagViewHandler, @fake_sinatra_call)
end
subject{ @runner }
should have_readers :app_settings
should have_imeths :run
@@ -24,10 +42,15 @@
assert_equal @fake_sinatra_call.params, subject.params
assert_equal @fake_sinatra_call.settings.deas_logger, subject.logger
assert_equal @fake_sinatra_call.session, subject.session
end
+ should "call to normalize its params" do
+ assert_equal @fake_sinatra_call.params, @norm_params_spy.params
+ assert_true @norm_params_spy.value_called
+ end
+
should "call the sinatra_call's halt with" do
return_value = catch(:halt){ subject.halt('test') }
assert_equal [ 'test' ], return_value
end
@@ -85,12 +108,12 @@
assert_true block_called
end
end
- class RunTests < UnitTests
- desc "run"
+ class RunTests < InitTests
+ desc "and run"
setup do
@return_value = @runner.run
@handler = @runner.instance_variable_get("@handler")
end
subject{ @handler }
@@ -109,44 +132,31 @@
assert_equal true, @return_value
end
end
- class ParamsTests < UnitTests
- desc "normalizing params"
+ class NormalizedParamsTests < UnitTests
+ desc "NormalizedParams"
+ setup do
+ @norm_params_class = Deas::SinatraRunner::NormalizedParams
+ end
- should "convert any non-string hash keys to string keys" do
- exp_params = {
- 'a' => 'aye',
- 'b' => 'bee',
- 'attachment' => {
- 'tempfile' => 'a-file',
- 'content_type' => 'whatever'
- },
- 'attachments' => [
- { 'tempfile' => 'a-file' },
- { 'tempfile' => 'b-file' }
- ]
- }
- assert_equal exp_params, runner_params({
- :a => 'aye',
- 'b' => 'bee',
- 'attachment' => {
- :tempfile => 'a-file',
- :content_type => 'whatever'
- },
- 'attachments' => [
- { :tempfile => 'a-file' },
- { 'tempfile' => 'b-file' }
- ]
+ should "be a normalized params subclass" do
+ assert @norm_params_class < Deas::Runner::NormalizedParams
+ end
+
+ should "not convert Tempfile param values to strings" do
+ tempfile = Class.new(::Tempfile){ def initialize; end }.new
+ params = normalized({
+ 'attachment' => { :tempfile => tempfile }
})
+ assert_kind_of ::Tempfile, params['attachment']['tempfile']
end
private
- def runner_params(params)
- @fake_sinatra_call.params = params
- Deas::SinatraRunner.new(FlagViewHandler, @fake_sinatra_call).params
+ def normalized(params)
+ @norm_params_class.new(params).value
end
end
end