deas 0.7.0 → 0.8.0

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/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