helmet 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -27,6 +27,15 @@ module Helmet
27
27
  @before_filters
28
28
  end
29
29
 
30
+ # include methods to the helper
31
+ def helpers(&block)
32
+ @helpers.module_exec(&block)
33
+ end
34
+
35
+ def get_helpers
36
+ @helpers
37
+ end
38
+
30
39
  def get(route, &block)
31
40
  register_route('GET', route, &block);
32
41
  register_route('HEAD', route, &block);
@@ -67,6 +76,8 @@ module Helmet
67
76
  @before_filters = []
68
77
 
69
78
  @config = {}
79
+
80
+ @helpers = Module.new
70
81
  end
71
82
 
72
83
  private
@@ -85,6 +96,9 @@ module Helmet
85
96
 
86
97
  # request handler
87
98
  handler = Handler.new(env, self.class)
99
+
100
+ # include Helpers
101
+ handler.extend(self.class.get_helpers)
88
102
 
89
103
  catch(:halt) do
90
104
  # evaluate filters
@@ -63,7 +63,13 @@ module Helmet
63
63
  @response.body
64
64
  end
65
65
 
66
+ # @return (Hash) request params
67
+ def params
68
+ env.params || {}
69
+ end
70
+
66
71
  def content_type(type)
72
+ # TODO implement content type header
67
73
  end
68
74
  end
69
75
  end
@@ -0,0 +1,54 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+
3
+ class HelperAPI < Helmet::API
4
+
5
+ helpers do
6
+ def print_text(text)
7
+ "text: #{text}"
8
+ end
9
+ end
10
+
11
+ helpers do
12
+ def x(num)
13
+ 'x' * num
14
+ end
15
+
16
+ def y(num)
17
+ 'y' * num
18
+ end
19
+ end
20
+
21
+ get '/' do
22
+ print_text params['text']
23
+ end
24
+
25
+ get '/xy' do
26
+ x(params['x'].to_i) + y(params['y'].to_i)
27
+ end
28
+
29
+ end
30
+
31
+ class HelperTest < Test::Unit::TestCase
32
+ include Goliath::TestHelper
33
+
34
+ # code from goliath test
35
+ def setup
36
+ @err = Proc.new { assert false, "API request failed" }
37
+ end
38
+
39
+ def test_helper_binding
40
+ with_api(HelperAPI) do
41
+ get_request({:query => {'text' => 'Hello'}}, @err) do |c|
42
+ assert_equal 'text: Hello', c.response
43
+ end
44
+ end
45
+ end
46
+
47
+ def test_multiple_helpers_methods
48
+ with_api(HelperAPI) do
49
+ get_request({:path => '/xy', :query => {'x' => 5, 'y' => 10}}, @err) do |c|
50
+ assert_equal "#{'x'*5}#{'y'*10}", c.response
51
+ end
52
+ end
53
+ end
54
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: helmet
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.2
5
+ version: 0.1.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Thiago Lewin
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-10-09 00:00:00 Z
13
+ date: 2012-10-26 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: goliath
@@ -49,6 +49,7 @@ files:
49
49
  - lib/helmet/templates.rb
50
50
  - lib/helmet.rb
51
51
  - test/api_test.rb
52
+ - test/helper_test.rb
52
53
  - test/template_test.rb
53
54
  - test/test_helper.rb
54
55
  - test/views/test.erb