helmet 0.1.2 → 0.1.3

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.
@@ -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