gin 0.0.0 → 1.0.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.
@@ -0,0 +1,68 @@
1
+ require 'test/test_helper'
2
+
3
+ class ResponseTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @res = Gin::Response.new
7
+ end
8
+
9
+
10
+ def test_assign_body
11
+ @res.body = "foo"
12
+ assert_equal ["foo"], @res.body
13
+
14
+ @res.body = ["bar"]
15
+ assert_equal ["bar"], @res.body
16
+
17
+ rack_resp = Rack::Response.new
18
+ rack_resp.body = "rack_body"
19
+ @res.body = rack_resp
20
+ assert_equal ["rack_body"], @res.body
21
+ end
22
+
23
+
24
+ def test_finish
25
+ @res.body = "foo"
26
+ expected = [200,
27
+ {"Content-Type"=>"text/html;charset=UTF-8", "Content-Length"=>"3"},
28
+ ["foo"]]
29
+
30
+ assert_equal expected, @res.finish
31
+ end
32
+
33
+
34
+ def test_finish_file
35
+ path = File.join(Gin::PUBLIC_DIR, "404.html")
36
+ file = File.open(path, "rb")
37
+ @res.body = file
38
+ resp = @res.finish
39
+
40
+ assert_equal file.size.to_s, resp[1]['Content-Length']
41
+ end
42
+
43
+
44
+ def test_finish_bodyless
45
+ [204, 205, 304].each do |code|
46
+ @res['Content-Type'] = "application/json"
47
+ @res['Content-Length'] = "123"
48
+ @res.status = code
49
+ @res.body = "foo"
50
+ expected = [code, {}, []]
51
+
52
+ assert_equal expected, @res.finish
53
+ end
54
+ end
55
+
56
+
57
+ def test_finish_no_ctype_clen
58
+ [100, 101].each do |code|
59
+ @res['Content-Type'] = "application/json"
60
+ @res['Content-Length'] = "123"
61
+ @res.status = code
62
+ @res.body = "foo"
63
+ expected = [code, {}, ["foo"]]
64
+
65
+ assert_equal expected, @res.finish
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,193 @@
1
+ require "test/test_helper"
2
+
3
+ class MyCtrl < Gin::Controller;
4
+ def index; end
5
+ def show; end
6
+ def unmounted_action; end
7
+ end
8
+
9
+ class FooController < Gin::Controller; end
10
+
11
+
12
+ class RouterTest < Test::Unit::TestCase
13
+
14
+ def setup
15
+ @router = Gin::Router.new
16
+ end
17
+
18
+
19
+ def test_add_and_retrieve
20
+ @router.add MyCtrl, '/my_ctrl' do
21
+ get :bar, "/bar"
22
+ post :foo
23
+ any :thing
24
+ end
25
+
26
+ assert_equal [MyCtrl, :bar, {}],
27
+ @router.resources_for("GET", "/my_ctrl/bar")
28
+
29
+ assert_equal [MyCtrl, :foo, {}],
30
+ @router.resources_for("post", "/my_ctrl/foo")
31
+
32
+ assert_nil @router.resources_for("post", "/my_ctrl")
33
+
34
+ %w{get post put delete head options trace}.each do |verb|
35
+ assert_equal [MyCtrl, :thing, {}],
36
+ @router.resources_for(verb, "/my_ctrl/thing")
37
+ end
38
+ end
39
+
40
+
41
+ def test_add_and_retrieve_named_route
42
+ @router.add FooController, "/foo" do
43
+ get :index, "/", :all_foo
44
+ get :bar, :my_bar
45
+ post :create
46
+ end
47
+
48
+ assert_equal [FooController, :bar, {}],
49
+ @router.resources_for("GET", "/foo/bar")
50
+
51
+ assert_equal "/foo/bar", @router.path_to(:my_bar)
52
+ assert_equal "/foo/create", @router.path_to(:create_foo)
53
+ assert_equal "/foo", @router.path_to(:all_foo)
54
+ end
55
+
56
+
57
+ def test_add_and_retrieve_w_path_params
58
+ @router.add MyCtrl, '/my_ctrl/:str' do
59
+ get :bar, "/bar"
60
+ post :foo, "/"
61
+ end
62
+
63
+ assert_nil @router.resources_for("post", "/my_ctrl")
64
+
65
+ assert_equal [MyCtrl, :bar, {'str' => 'item'}],
66
+ @router.resources_for("GET", "/my_ctrl/item/bar")
67
+
68
+ assert_equal [MyCtrl, :foo, {'str' => 'item'}],
69
+ @router.resources_for("post", "/my_ctrl/item")
70
+ end
71
+
72
+
73
+ def test_add_omit_base_path
74
+ @router.add MyCtrl do
75
+ get :bar
76
+ end
77
+
78
+ assert_equal [MyCtrl, :bar, {}],
79
+ @router.resources_for("GET", "/my_ctrl/bar")
80
+ end
81
+
82
+
83
+ def test_add_omit_base_path_controller
84
+ @router.add FooController do
85
+ get :index, '/'
86
+ end
87
+
88
+ assert_equal [FooController, :index, {}],
89
+ @router.resources_for("GET", "/foo")
90
+ end
91
+
92
+
93
+ def test_add_root_base_path
94
+ @router.add MyCtrl, "/" do
95
+ get :bar, "/"
96
+ end
97
+
98
+ assert_equal [MyCtrl, :bar, {}],
99
+ @router.resources_for("GET", "/")
100
+
101
+ assert !@router.has_route?(MyCtrl, :show)
102
+ assert !@router.has_route?(MyCtrl, :index)
103
+ end
104
+
105
+
106
+ def test_add_default_restful_routes
107
+ @router.add MyCtrl, "/" do
108
+ get :show, "/:id"
109
+ end
110
+
111
+ assert !@router.has_route?(MyCtrl, :index)
112
+ assert !@router.has_route?(MyCtrl, :unmounted_action)
113
+ end
114
+
115
+
116
+ def test_add_all_restful_routes
117
+ @router.add MyCtrl, "/" do
118
+ get :show, "/:id"
119
+ defaults
120
+ end
121
+
122
+ assert @router.has_route?(MyCtrl, :index)
123
+ assert @router.has_route?(MyCtrl, :unmounted_action)
124
+ end
125
+
126
+
127
+ def test_add_all
128
+ @router.add MyCtrl, "/"
129
+
130
+ assert_equal [MyCtrl, :index, {}],
131
+ @router.resources_for("GET", "/")
132
+
133
+ assert_equal [MyCtrl, :show, {'id' => '123'}],
134
+ @router.resources_for("GET", "/123")
135
+
136
+ assert_equal [MyCtrl, :unmounted_action, {}],
137
+ @router.resources_for("GET", "/unmounted_action")
138
+ end
139
+
140
+
141
+ def test_has_route
142
+ @router.add MyCtrl, '/my_ctrl/:str' do
143
+ get :bar, "/bar"
144
+ post :foo, "/"
145
+ end
146
+
147
+ assert @router.has_route?(MyCtrl, :bar)
148
+ assert @router.has_route?(MyCtrl, :foo)
149
+ assert !@router.has_route?(MyCtrl, :thing)
150
+ end
151
+
152
+
153
+ def test_path_to
154
+ @router.add MyCtrl, '/my_ctrl/' do
155
+ get :bar, "/bar"
156
+ end
157
+
158
+ assert_equal "/my_ctrl/bar", @router.path_to(MyCtrl, :bar)
159
+ end
160
+
161
+
162
+ def test_path_to_missing
163
+ @router.add MyCtrl, '/my_ctrl/' do
164
+ get :bar, "/bar"
165
+ end
166
+
167
+ assert_raises Gin::Router::PathArgumentError do
168
+ @router.path_to(MyCtrl, :foo)
169
+ end
170
+ end
171
+
172
+
173
+ def test_path_to_param
174
+ @router.add MyCtrl, '/my_ctrl/' do
175
+ get :show, "/:id"
176
+ end
177
+
178
+ assert_equal "/my_ctrl/val", @router.path_to(MyCtrl, :show, "id" => "val")
179
+
180
+ assert_equal "/my_ctrl/val", @router.path_to(MyCtrl, :show, :id => "val")
181
+ end
182
+
183
+
184
+ def test_path_to_param_missing
185
+ @router.add MyCtrl, '/my_ctrl/' do
186
+ get :show, "/:id"
187
+ end
188
+
189
+ assert_raises Gin::Router::PathArgumentError do
190
+ @router.path_to(MyCtrl, :show)
191
+ end
192
+ end
193
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,40 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-13 00:00:00.000000000 Z
12
+ date: 2013-03-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 1.5.2
21
+ version: '1.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.1'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rack-protection
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
28
44
  - !ruby/object:Gem::Version
29
- version: 1.5.2
45
+ version: '1.0'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: rdoc
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -59,11 +75,16 @@ dependencies:
59
75
  - - ~>
60
76
  - !ruby/object:Gem::Version
61
77
  version: '3.5'
62
- description: Something fun coming soon.
78
+ description: ! 'Gin is a small web framework built from the redistillation of
79
+
80
+ Sinatra and Rails idioms. Specifically, it uses much of Sinatra''s
81
+
82
+ request flow and HTTP helper methods with dedicated controller classes
83
+
84
+ that support Rails-like filters.'
63
85
  email:
64
86
  - yaksnrainbows@gmail.com
65
- executables:
66
- - gin
87
+ executables: []
67
88
  extensions: []
68
89
  extra_rdoc_files:
69
90
  - History.rdoc
@@ -71,15 +92,49 @@ extra_rdoc_files:
71
92
  - README.rdoc
72
93
  files:
73
94
  - .autotest
95
+ - .gitignore
74
96
  - History.rdoc
75
97
  - Manifest.txt
76
98
  - README.rdoc
77
99
  - Rakefile
78
- - bin/gin
79
100
  - lib/gin.rb
80
- - test/gin_test.rb
101
+ - lib/gin/app.rb
102
+ - lib/gin/config.rb
103
+ - lib/gin/controller.rb
104
+ - lib/gin/core_ext/cgi.rb
105
+ - lib/gin/core_ext/gin_class.rb
106
+ - lib/gin/errorable.rb
107
+ - lib/gin/filterable.rb
108
+ - lib/gin/reloadable.rb
109
+ - lib/gin/request.rb
110
+ - lib/gin/response.rb
111
+ - lib/gin/router.rb
112
+ - lib/gin/stream.rb
113
+ - public/400.html
114
+ - public/404.html
115
+ - public/500.html
116
+ - public/error.html
117
+ - public/favicon.ico
118
+ - public/gin.css
119
+ - public/gin_sm.png
120
+ - test/app/app_foo.rb
121
+ - test/app/controllers/app_controller.rb
122
+ - test/app/controllers/foo_controller.rb
123
+ - test/mock_config/backend.yml
124
+ - test/mock_config/memcache.yml
125
+ - test/mock_config/not_a_config.txt
126
+ - test/test_app.rb
127
+ - test/test_config.rb
128
+ - test/test_controller.rb
129
+ - test/test_errorable.rb
130
+ - test/test_filterable.rb
131
+ - test/test_gin.rb
132
+ - test/test_helper.rb
133
+ - test/test_request.rb
134
+ - test/test_response.rb
135
+ - test/test_router.rb
81
136
  - .gemtest
82
- homepage: https://github.com/yaks/gin
137
+ homepage: http://yaks.me/gin
83
138
  licenses: []
84
139
  post_install_message:
85
140
  rdoc_options:
@@ -95,7 +150,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
150
  version: '0'
96
151
  segments:
97
152
  - 0
98
- hash: -587643757332160680
153
+ hash: -1476992371774914405
99
154
  required_rubygems_version: !ruby/object:Gem::Requirement
100
155
  none: false
101
156
  requirements:
@@ -107,6 +162,16 @@ rubyforge_project: gin
107
162
  rubygems_version: 1.8.24
108
163
  signing_key:
109
164
  specification_version: 3
110
- summary: Something fun coming soon.
165
+ summary: Gin is a small web framework built from the redistillation of Sinatra and
166
+ Rails idioms
111
167
  test_files:
112
- - test/gin_test.rb
168
+ - test/test_app.rb
169
+ - test/test_config.rb
170
+ - test/test_controller.rb
171
+ - test/test_errorable.rb
172
+ - test/test_filterable.rb
173
+ - test/test_gin.rb
174
+ - test/test_helper.rb
175
+ - test/test_request.rb
176
+ - test/test_response.rb
177
+ - test/test_router.rb
data/bin/gin DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- abort "you need to write me"
@@ -1,8 +0,0 @@
1
- require "test/unit"
2
- require "gin"
3
-
4
- class TestGin < Test::Unit::TestCase
5
- def test_sanity
6
- flunk "write tests or I will kneecap you"
7
- end
8
- end