chicago 0.3.10 → 0.3.11

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -10,15 +10,7 @@ task(:set_test_env) { ENV['RACK_ENV'] ||= 'test' }
10
10
  desc "Run all tests"
11
11
  Rake::TestTask.new("test") do |t|
12
12
  t.libs.concat ['./lib', './test']
13
- t.test_files = FileList['test/riot_tests/*_test.rb']
14
- t.verbose = true
15
- end
16
-
17
- task "test:shoulda" => [:set_test_env]
18
- desc "Run all Shoulda based tests"
19
- Rake::TestTask.new("test:shoulda") do |t|
20
- t.libs.concat ['./lib', './test']
21
- t.test_files = FileList['test/shoulda_tests/*_test.rb']
13
+ t.test_files = FileList['test/*_test.rb']
22
14
  t.verbose = true
23
15
  end
24
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.10
1
+ 0.3.11
data/chicago.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{chicago}
8
- s.version = "0.3.10"
8
+ s.version = "0.3.11"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin 'Gus' Knowlden"]
12
- s.date = %q{2010-05-10}
12
+ s.date = %q{2010-05-12}
13
13
  s.description = %q{Sinatra runtime and testing extensions used commonly by Thumblemonks. For example, :json_response, which turns an object into JSON and sets the content-type appropriately.}
14
14
  s.email = %q{gus@gusg.us}
15
15
  s.extra_rdoc_files = [
@@ -28,17 +28,11 @@ Gem::Specification.new do |s|
28
28
  "lib/chicago/responders.rb",
29
29
  "lib/chicago/riot.rb",
30
30
  "lib/chicago/riot/macros.rb",
31
- "lib/chicago/shoulda.rb",
32
- "lib/chicago/shoulda/sinatra.rb",
33
- "test/riot_tests/application_test.rb",
34
- "test/riot_tests/helpers_test.rb",
35
- "test/riot_tests/responders_test.rb",
36
- "test/riot_tests/riot_macros_test.rb",
37
- "test/riot_tests/test_helper.rb",
38
- "test/shoulda_tests/application_test.rb",
39
- "test/shoulda_tests/helpers_test.rb",
40
- "test/shoulda_tests/responders_test.rb",
41
- "test/shoulda_tests/test_helper.rb"
31
+ "test/application_test.rb",
32
+ "test/helpers_test.rb",
33
+ "test/responders_test.rb",
34
+ "test/riot_macros_test.rb",
35
+ "test/teststrap.rb"
42
36
  ]
43
37
  s.homepage = %q{http://github.com/thumblemonks/chicago}
44
38
  s.rdoc_options = ["--charset=UTF-8"]
@@ -46,15 +40,11 @@ Gem::Specification.new do |s|
46
40
  s.rubygems_version = %q{1.3.6}
47
41
  s.summary = %q{Sinatra runtime and testing extensions used commonly by Thumblemonks}
48
42
  s.test_files = [
49
- "test/riot_tests/application_test.rb",
50
- "test/riot_tests/helpers_test.rb",
51
- "test/riot_tests/responders_test.rb",
52
- "test/riot_tests/riot_macros_test.rb",
53
- "test/riot_tests/test_helper.rb",
54
- "test/shoulda_tests/application_test.rb",
55
- "test/shoulda_tests/helpers_test.rb",
56
- "test/shoulda_tests/responders_test.rb",
57
- "test/shoulda_tests/test_helper.rb"
43
+ "test/application_test.rb",
44
+ "test/helpers_test.rb",
45
+ "test/responders_test.rb",
46
+ "test/riot_macros_test.rb",
47
+ "test/teststrap.rb"
58
48
  ]
59
49
 
60
50
  if s.respond_to? :specification_version then
@@ -25,19 +25,21 @@ module Chicago
25
25
  end.matches(expected_path)
26
26
  end
27
27
 
28
- def asserts_json_response(*args)
29
- content_type = args.length > 1 ? args.shift : 'application/json'
30
- json = args.shift
31
- asserts_content_type content_type
28
+ # Usage:
29
+ # asserts_json_response({"foo" => "bar"})
30
+ # asserts_json_response('{"foo":"bar"}')
31
+ # asserts_json_response("text/javascript;charset=utf-8", {"foo" => "bar"})
32
+ # asserts_json_response { {"foo" => @some_value} }
33
+ # asserts_json_response("text/javascript;charset=utf-8") { {"foo" => @some_value} }
34
+ def asserts_json_response(*args, &block)
35
+ json = block_given? ? instance_eval(&block) : args.pop
32
36
 
33
37
  json = json.to_json unless json.instance_of?(String)
34
- json
35
-
36
38
  asserts("response body has JSON") do
37
39
  last_response.body
38
40
  end.equals(json)
39
- # Calling situation is kind of yucky, but maybe not. The maybe not is because of how explicit it is
40
- # to say "situation" (gus)
41
+
42
+ asserts_content_type(args.empty? ? 'application/json' : args.shift)
41
43
  end
42
44
 
43
45
  # Usage:
@@ -1,4 +1,4 @@
1
- require 'riot_tests/test_helper'
1
+ require 'teststrap'
2
2
 
3
3
  context "Application Test:" do
4
4
 
@@ -1,4 +1,4 @@
1
- require 'riot_tests/test_helper'
1
+ require 'teststrap'
2
2
 
3
3
  context "Helpers Test:" do
4
4
  setup do
@@ -1,4 +1,4 @@
1
- require 'riot_tests/test_helper'
1
+ require 'teststrap'
2
2
 
3
3
  context "Responders Test:" do
4
4
  setup do
@@ -0,0 +1,42 @@
1
+ require 'teststrap'
2
+
3
+ context "Riot Macros Test:" do
4
+ setup do
5
+ mock_app {
6
+ helpers Sinatra::Chicago::Responders
7
+ get("/redirector") { redirect '/foo/bar' }
8
+
9
+ get("/basic-json") do
10
+ content_type 'application/json'
11
+ {:foo => "bar"}.to_json
12
+ end
13
+
14
+ get("/json-with-content-type") do
15
+ content_type 'text/javascript', :charset => "utf-8"
16
+ {:foo => "bar"}.to_json
17
+ end
18
+ }
19
+ end
20
+
21
+ context "asserts redirected to" do
22
+ setup { get('/redirector') }
23
+ asserts_redirected_to('/foo/bar')
24
+ end # asserts redirected to
25
+
26
+ context "json response" do
27
+ context "basic" do
28
+ setup { get('/basic-json') }
29
+ asserts_json_response({:foo => "bar"})
30
+ end # basic
31
+
32
+ context "with special content-type" do
33
+ setup { get('/json-with-content-type') }
34
+ asserts_json_response("text/javascript;charset=utf-8", {:foo => "bar"})
35
+ end # with special content-type
36
+
37
+ context "with content expectation provided as block" do
38
+ setup { get('/json-with-content-type') }
39
+ asserts_json_response("text/javascript;charset=utf-8") { {:foo => "bar"} }
40
+ end # with special content-type
41
+ end # json response
42
+ end
File without changes
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 10
9
- version: 0.3.10
8
+ - 11
9
+ version: 0.3.11
10
10
  platform: ruby
11
11
  authors:
12
12
  - Justin 'Gus' Knowlden
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-10 00:00:00 -05:00
17
+ date: 2010-05-12 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -62,17 +62,11 @@ files:
62
62
  - lib/chicago/responders.rb
63
63
  - lib/chicago/riot.rb
64
64
  - lib/chicago/riot/macros.rb
65
- - lib/chicago/shoulda.rb
66
- - lib/chicago/shoulda/sinatra.rb
67
- - test/riot_tests/application_test.rb
68
- - test/riot_tests/helpers_test.rb
69
- - test/riot_tests/responders_test.rb
70
- - test/riot_tests/riot_macros_test.rb
71
- - test/riot_tests/test_helper.rb
72
- - test/shoulda_tests/application_test.rb
73
- - test/shoulda_tests/helpers_test.rb
74
- - test/shoulda_tests/responders_test.rb
75
- - test/shoulda_tests/test_helper.rb
65
+ - test/application_test.rb
66
+ - test/helpers_test.rb
67
+ - test/responders_test.rb
68
+ - test/riot_macros_test.rb
69
+ - test/teststrap.rb
76
70
  has_rdoc: true
77
71
  homepage: http://github.com/thumblemonks/chicago
78
72
  licenses: []
@@ -104,12 +98,8 @@ signing_key:
104
98
  specification_version: 3
105
99
  summary: Sinatra runtime and testing extensions used commonly by Thumblemonks
106
100
  test_files:
107
- - test/riot_tests/application_test.rb
108
- - test/riot_tests/helpers_test.rb
109
- - test/riot_tests/responders_test.rb
110
- - test/riot_tests/riot_macros_test.rb
111
- - test/riot_tests/test_helper.rb
112
- - test/shoulda_tests/application_test.rb
113
- - test/shoulda_tests/helpers_test.rb
114
- - test/shoulda_tests/responders_test.rb
115
- - test/shoulda_tests/test_helper.rb
101
+ - test/application_test.rb
102
+ - test/helpers_test.rb
103
+ - test/responders_test.rb
104
+ - test/riot_macros_test.rb
105
+ - test/teststrap.rb
@@ -1 +0,0 @@
1
- require 'chicago/shoulda/sinatra'
@@ -1,83 +0,0 @@
1
- require 'json'
2
- require 'ostruct'
3
-
4
- module ThumbleMonks
5
- module Chicago
6
- module Shoulda
7
-
8
- def self.included(klass)
9
- klass.extend(Macros)
10
- klass.send(:include, Helpers)
11
- end
12
-
13
- module Macros
14
- def should_have_response_status(expected)
15
- should("have response status") { assert_response expected }
16
- end
17
-
18
- def should_have_response_body(expected)
19
- name = expected.is_a?(String) ? expected[0...15] : expected.to_s
20
- should("have response body like #{name}") { assert_response_body expected }
21
- end
22
-
23
- def should_have_content_type(expected)
24
- should("have content_type") { assert_content_type expected }
25
- end
26
-
27
- def should_have_json_response(json={}, &block)
28
- should_have_content_type 'application/json'
29
- should "have JSON response in the body" do
30
- json = self.instance_eval(&block) if block_given?
31
- json = json.to_json unless json.instance_of?(String) || json.instance_of?(Regexp)
32
- assert_response_body json
33
- end
34
- end
35
-
36
- # Checks to see if there is a redirect in play and the path the redirect goes to
37
- #
38
- # Example:
39
- # should_be_redirected_to { "/users/@user.id" }
40
- # should_be_redirected_to "/home"
41
- def should_be_redirected_to(expected_path=nil, &block)
42
- should "be redirected to #{expected_path || 'a url'}" do
43
- expected_path = self.instance_eval(&block) if block_given?
44
- assert_redirected_to expected_path
45
- end
46
- end
47
- end # Macros
48
-
49
- module Helpers
50
- def deny(check, message=nil)
51
- assert(!check, message)
52
- end
53
-
54
- def assert_response(status)
55
- assert_equal status, last_response.status
56
- end
57
-
58
- def assert_response_body(body)
59
- assert_match body, last_response.body
60
- end
61
-
62
- def assert_content_type(expected)
63
- assert_equal expected, last_response.headers['Content-type']
64
- end
65
-
66
- # Usage:
67
- #
68
- # assert_redirected_to '/foo/bar'
69
- # or
70
- # assert_redirected_to %r[foo.bar]
71
- def assert_redirected_to(expected_path)
72
- yield if block_given?
73
- assert_response 302
74
- action = expected_path.kind_of?(Regexp) ? 'match' : 'equal'
75
- send("assert_#{action}", expected_path, last_response.headers["Location"])
76
- end
77
- end # Helpers
78
-
79
- end # Shoulda
80
- end # Chicago
81
- end # ThumbleMonks
82
-
83
- Test::Unit::TestCase.instance_eval { include ThumbleMonks::Chicago::Shoulda }
@@ -1,35 +0,0 @@
1
- require 'riot_tests/test_helper'
2
-
3
- context "Riot Macros Test:" do
4
- setup do
5
- mock_app {
6
- helpers Sinatra::Chicago::Responders
7
- get("/redirector") { redirect '/foo/bar' }
8
-
9
- get("/basic-json") do
10
- content_type 'application/json'
11
- {:foo => "bar"}.to_json
12
- end
13
-
14
- get("/json-with-content-type") do
15
- content_type 'text/javascript', :charset => "utf-8"
16
- {:foo => "bar"}.to_json
17
- end
18
- }
19
- end
20
-
21
- context "asserts redirected to" do
22
- setup { get('/redirector') }
23
- asserts_redirected_to('/foo/bar')
24
- end # asserts redirected to
25
-
26
- context "basic json response" do
27
- setup { get('/basic-json') }
28
- asserts_json_response({:foo => "bar"})
29
- end # asserts redirected to
30
-
31
- context "json response with special content-type" do
32
- setup { get('/json-with-content-type') }
33
- asserts_json_response("text/javascript;charset=utf-8", {:foo => "bar"})
34
- end # asserts redirected to
35
- end
@@ -1,48 +0,0 @@
1
- require 'shoulda_tests/test_helper'
2
-
3
- class ApplicationTest < Test::Unit::TestCase
4
-
5
- def app
6
- @app = mock_app {
7
- register Sinatra::Chicago
8
-
9
- template(:foo) { ".bar\n :display none" }
10
- template(:goo) { ".car\n :display some" }
11
- template(:baz) { "Whatever man. That's just like, your opinion." }
12
-
13
- catch_all_css
14
- catch_all_css('/css')
15
-
16
- get_obvious 'baz'
17
- }
18
- end
19
-
20
- # TODO: change to namespace
21
- context "catching all css" do
22
- context "with default path" do
23
- setup { get '/stylesheets/foo.css' }
24
- should_have_response_status 200
25
- should_have_content_type 'text/css'
26
- should_have_response_body %r[.bar \{\s+display: none; \}\s]
27
- end
28
-
29
- context "with specified path" do
30
- setup { get '/css/goo.css' }
31
- should_have_response_status 200
32
- should_have_content_type 'text/css'
33
- should_have_response_body %r[.car \{\s+display: some; \}\s]
34
- end
35
-
36
- context "with path that's not a defined a sass file" do
37
- setup { get '/stylesheets/zoo.css' }
38
- should_have_response_status 404
39
- should_have_content_type 'text/css'
40
- end
41
- end # catching all css
42
-
43
- context "getting obvious views" do
44
- setup { get '/baz' }
45
- should_have_response_body "Whatever man. That's just like, your opinion."
46
- end # getting obvious views
47
-
48
- end
@@ -1,125 +0,0 @@
1
- require 'shoulda_tests/test_helper'
2
-
3
- class HelpersTest < Test::Unit::TestCase
4
- def app
5
- @app = mock_app {
6
- helpers Sinatra::Chicago::Helpers
7
- }
8
- end
9
-
10
- context "including stylesheet" do
11
- context "for plain old foo" do
12
- setup do
13
- extend_mock_app {
14
- template(:foo) { "= stylesheet_include('foo')" }
15
- get('/foo') { haml :foo }
16
- }
17
- get '/foo'
18
- end
19
-
20
- should_have_response_body %r[^<link( \w+=".+"){4}/>$]
21
- should_have_response_body %r[href="/stylesheets/foo\.css"]
22
- should_have_response_body %r[media="screen"]
23
- should_have_response_body %r[rel="stylesheet"]
24
- should_have_response_body %r[type="text/css"]
25
- end # for plain old foo
26
-
27
- context "for bar with options" do
28
- setup do
29
- extend_mock_app {
30
- template(:foo) { "= stylesheet_include('bar', :media => 'print', :baz => 'boo')" }
31
- get('/foo') { haml :foo }
32
- }
33
- get '/foo'
34
- end
35
-
36
- should_have_response_body %r[^<link( \w+=".+"){5}/>$]
37
- should_have_response_body %r[href="/stylesheets/bar\.css"]
38
- should_have_response_body %r[media="print"]
39
- should_have_response_body %r[rel="stylesheet"]
40
- should_have_response_body %r[type="text/css"]
41
- should_have_response_body %r[baz="boo"]
42
- end # for bar with options
43
-
44
- context "with a specific href" do
45
- setup do
46
- extend_mock_app {
47
- template(:foo) { "= stylesheet_include('http://example.com')" }
48
- get('/foo') { haml :foo }
49
- }
50
- get '/foo'
51
- end
52
- should_have_response_body %r[href="http://example.com"]
53
- end # with a specific href
54
- end # including stylesheets
55
-
56
- context "including javascript" do
57
- context "for plain old foo" do
58
- setup do
59
- extend_mock_app {
60
- template(:foo) { "= javascript_include('foo')" }
61
- get('/foo') { haml :foo }
62
- }
63
- get '/foo'
64
- end
65
-
66
- should_have_response_body %r[^<script( \w+=".+"){2}></script>$]
67
- should_have_response_body %r[src="/javascripts/foo\.js"]
68
- should_have_response_body %r[type="text/javascript"]
69
- end # for plain old foo
70
-
71
- context "for foo with options" do
72
- setup do
73
- extend_mock_app {
74
- template(:foo) { "= javascript_include('foo', :type => 'text/blarg', :gus => 'nice')" }
75
- get('/foo') { haml :foo }
76
- }
77
- get '/foo'
78
- end
79
-
80
- should_have_response_body %r[^<script( \w+=".+"){3}></script>$]
81
- should_have_response_body %r[src="/javascripts/foo\.js"]
82
- should_have_response_body %r[type="text/blarg"]
83
- should_have_response_body %r[gus="nice"]
84
- end # for foo with options
85
-
86
- context "with a specific src" do
87
- setup do
88
- extend_mock_app {
89
- template(:foo) { "= javascript_include('http://example.com')" }
90
- get('/foo') { haml :foo }
91
- }
92
- get '/foo'
93
- end
94
- should_have_response_body %r[src="http://example.com"]
95
- end # with a specific src
96
- end # including javascript
97
-
98
- context "using an anchor" do
99
- context "for plain old foo" do
100
- setup do
101
- extend_mock_app {
102
- template(:foo) { "= anchor('foo', '/bar')" }
103
- get('/foo') { haml :foo }
104
- }
105
- get '/foo'
106
- end
107
-
108
- should_have_response_body %Q[<a href="/bar">foo</a>]
109
- end # for plain old foo
110
-
111
- context "with options" do
112
- setup do
113
- extend_mock_app {
114
- template(:foo) { "= anchor('foo bear', '/bar/ler', :title => 'gus is nice')" }
115
- get('/foo') { haml :foo }
116
- }
117
- get '/foo'
118
- end
119
-
120
- should_have_response_body %r[^<a( \w+=".+"){2}>foo bear</a>$]
121
- should_have_response_body %r[href="/bar/ler"]
122
- should_have_response_body %r[title="gus is nice"]
123
- end # with options
124
- end # using an anchor
125
- end
@@ -1,28 +0,0 @@
1
- require 'shoulda_tests/test_helper'
2
-
3
- class RespondersTest < Test::Unit::TestCase
4
- def app
5
- @app = mock_app {
6
- helpers Sinatra::Chicago::Responders
7
- get "/json_bait" do
8
- status(201)
9
- json_response({:foo => "bar"})
10
- end
11
-
12
- get "/no_bait" do
13
- status(200)
14
- json_response(nil)
15
- end
16
- }
17
- end
18
-
19
- context "json response" do
20
- setup { get "/json_bait" }
21
- should_have_json_response({:foo => :bar})
22
- end # json response
23
-
24
- context "json response with null data" do
25
- setup { get "/no_bait" }
26
- should_have_json_response(/^$/)
27
- end # json response
28
- end
@@ -1,19 +0,0 @@
1
- %w[ rubygems test/unit shoulda haml sass chicago rack/test chicago/shoulda ].each do |lib|
2
- require lib
3
- end
4
-
5
- class Test::Unit::TestCase
6
- include Rack::Test::Methods
7
-
8
- # Sets up a Sinatra::Base subclass defined with the block
9
- # given. Used in setup or individual spec methods to establish
10
- # the application.
11
- def mock_app(base=Sinatra::Base, &block)
12
- @app = Sinatra.new(base, &block)
13
- end
14
-
15
- def extend_mock_app(&block)
16
- @_rack_test_session ||= Rack::Test::Session.new(app)
17
- @app.instance_eval(&block)
18
- end
19
- end