deas 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -4,3 +4,5 @@ gemspec
4
4
 
5
5
  gem 'rake'
6
6
  gem 'pry'
7
+ gem 'multi_json'
8
+ gem 'yajl-ruby'
data/lib/deas/runner.rb CHANGED
@@ -2,7 +2,8 @@ module Deas
2
2
 
3
3
  class Runner
4
4
 
5
- attr_accessor :request, :response, :params, :logger, :session
5
+ attr_reader :app_settings
6
+ attr_reader :request, :response, :params, :logger, :session
6
7
 
7
8
  def initialize(handler_class)
8
9
  @handler_class = handler_class
@@ -11,7 +11,7 @@ module Deas
11
11
 
12
12
  def initialize(handler_class, sinatra_call)
13
13
  @sinatra_call = sinatra_call
14
- @handler_class = handler_class
14
+ @app_settings = @sinatra_call.settings
15
15
  @logger = @sinatra_call.settings.logger
16
16
  @params = @sinatra_call.params
17
17
  @request = @sinatra_call.request
@@ -1,3 +1,4 @@
1
+ require 'ostruct'
1
2
  require 'deas/runner'
2
3
 
3
4
  module Deas
@@ -8,11 +9,12 @@ module Deas
8
9
 
9
10
  def initialize(handler_class, args = nil)
10
11
  args = (args || {}).dup
11
- @logger = args.delete(:logger) || Deas::NullLogger.new
12
- @params = args.delete(:params) || {}
13
- @request = args.delete(:request)
14
- @response = args.delete(:response)
15
- @session = args.delete(:session)
12
+ @app_settings = OpenStruct.new(args.delete(:app_settings))
13
+ @logger = args.delete(:logger) || Deas::NullLogger.new
14
+ @params = args.delete(:params) || {}
15
+ @request = args.delete(:request)
16
+ @response = args.delete(:response)
17
+ @session = args.delete(:session)
16
18
 
17
19
  super(handler_class)
18
20
  args.each{|key, value| @handler.send("#{key}=", value) }
data/lib/deas/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Deas
2
- VERSION = "0.7.0"
2
+ VERSION = "0.8.0"
3
3
  end
@@ -55,11 +55,12 @@ module Deas
55
55
  @deas_runner.render(*args, &block)
56
56
  end
57
57
 
58
- def logger; @deas_runner.logger; end
59
- def request; @deas_runner.request; end
60
- def response; @deas_runner.response; end
61
- def params; @deas_runner.params; end
62
- def session; @deas_runner.session; end
58
+ def app_settings; @deas_runner.app_settings; end
59
+ def logger; @deas_runner.logger; end
60
+ def request; @deas_runner.request; end
61
+ def response; @deas_runner.response; end
62
+ def params; @deas_runner.params; end
63
+ def session; @deas_runner.session; end
63
64
 
64
65
  def run_callback(callback)
65
66
  (self.class.send("#{callback}_callbacks") || []).each do |callback|
@@ -8,6 +8,8 @@ class DeasTestServer
8
8
  logger TEST_LOGGER
9
9
  verbose_logging true
10
10
 
11
+ set :a_setting, 'something'
12
+
11
13
  error do |exception|
12
14
  case exception
13
15
  when Sinatra::NotFound
@@ -27,6 +29,8 @@ class DeasTestServer
27
29
  post '/session', 'SetSessionHandler'
28
30
  get '/session', 'UseSessionHandler'
29
31
 
32
+ get '/handler/tests.json', 'HandlerTestsHandler'
33
+
30
34
  end
31
35
 
32
36
  class ShowHandler
@@ -123,3 +127,30 @@ class UseSessionHandler
123
127
  end
124
128
 
125
129
  end
130
+
131
+ class HandlerTestsHandler
132
+ include Deas::ViewHandler
133
+
134
+ def init!
135
+ @data = {}
136
+ set_data('app_settings_a_setting'){ self.app_settings.a_setting }
137
+ set_data('logger_class_name'){ self.logger.class.name }
138
+ set_data('request_method'){ self.request.request_method.to_s }
139
+ set_data('response_firstheaderval'){ self.response.headers.sort.first.to_s }
140
+ set_data('params_a_param'){ self.params['a-param'] }
141
+ set_data('session_inspect'){ self.session.inspect }
142
+ end
143
+
144
+ def set_data(a, &block)
145
+ begin
146
+ @data[a] = block.call
147
+ rescue Exception => e
148
+ end
149
+ end
150
+
151
+ def run!
152
+ require 'multi_json'
153
+ [200, {}, MultiJson.encode(@data)]
154
+ end
155
+
156
+ end
@@ -94,4 +94,24 @@ module Deas
94
94
 
95
95
  end
96
96
 
97
+ class HandlerTests < RackTests
98
+ desc "handler"
99
+ setup do
100
+ get 'handler/tests.json?a-param=something'
101
+
102
+ require 'multi_json'
103
+ @data = MultiJson.decode(last_response.body || "")
104
+ end
105
+
106
+ should "be able to access sinatra call data" do
107
+ assert_equal 'something', @data['app_settings_a_setting']
108
+ assert_equal 'Logger', @data['logger_class_name']
109
+ assert_equal 'GET', @data['request_method']
110
+ assert_equal 'Content-Type', @data['response_firstheaderval']
111
+ assert_equal 'something', @data['params_a_param']
112
+ assert_equal '{}', @data['session_inspect']
113
+ end
114
+
115
+ end
116
+
97
117
  end
@@ -11,7 +11,8 @@ class Deas::Runner
11
11
  end
12
12
  subject{ @runner }
13
13
 
14
- should have_instance_methods :request, :response, :params, :logger, :session
14
+ should have_reader :app_settings
15
+ should have_readers :request, :response, :params, :logger, :session
15
16
 
16
17
  should "raise NotImplementedError with #halt" do
17
18
  assert_raises(NotImplementedError){ subject.halt }
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deas
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 63
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 7
8
+ - 8
9
9
  - 0
10
- version: 0.7.0
10
+ version: 0.8.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kelly Redding