thumblemonks-chicago 0.2.2 → 0.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.
data/README.markdown CHANGED
@@ -18,16 +18,20 @@ And you'll get some helpful Sinatra extensions and helpers.
18
18
  If you're Sinatra app is considered modular - as in, you are not using the `Sinatra::Default` app - you will want to add the following in your app:
19
19
 
20
20
  YourApp < Sinatra::Base
21
- register Sinatra::ThumbleMonks::Base # for some DSL helpers
22
- helpers Sinatra::ThumbleMonks::Helpers # for standard helpers
23
- helpers Sinatra::ThumbleMonks::Responders # for JSON assistance
21
+ register Sinatra::Chicago # for some DSL helpers
22
+ helpers Sinatra::Chicago::Helpers # for standard helpers
23
+ helpers Sinatra::Chicago::Responders # for JSON assistance
24
24
  end
25
25
 
26
26
  You don't necessarily need all of them. You just need to "include" the statements that mix-in the functionality you want.
27
27
 
28
28
  ### Sinatra testing
29
29
 
30
- If you're using Shoulda in your tests of your Sinatra app, do this:
30
+ Assuming you have required 'rack/test', like so:
31
+
32
+ require 'rack/test'
33
+
34
+ This is because these macros use last_request defined by the Rack/Test library. If you're using Shoulda in your tests of your Sinatra app, do this:
31
35
 
32
36
  require 'chicago/shoulda'
33
37
 
data/chicago.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "chicago"
3
- s.version = "0.2.2"
3
+ s.version = "0.3"
4
4
  s.date = "2009-05-28"
5
5
  s.summary = "Sinatra runtime and testing extensions used commonly by Thumblemonks"
6
6
  s.email = %w[gus@gusg.us gabriel.gironda@gmail.com]
@@ -1,6 +1,5 @@
1
1
  module Sinatra
2
- module ThumbleMonks
3
- module Base
2
+ module Chicago
4
3
 
5
4
  # Assumes all CSS is SASS and is referenced as being in a directory named stylesheets
6
5
  # If SASS file is not defined, the route will passed on to - theoretically - the real
@@ -23,8 +22,7 @@ module Sinatra
23
22
  end
24
23
  end
25
24
 
26
- end # Base
27
- end # ThumbleMonks
25
+ end # Chicago
28
26
 
29
- register ThumbleMonks::Base
27
+ register Chicago
30
28
  end # Sinatra
@@ -1,5 +1,5 @@
1
1
  module Sinatra
2
- module ThumbleMonks
2
+ module Chicago
3
3
  module Helpers
4
4
  # A basic anchor (link_to) tag
5
5
  #
@@ -71,7 +71,7 @@ module Sinatra
71
71
  options.map {|k,v| "#{k}=\"#{v}\""}.join(' ')
72
72
  end
73
73
  end # Helpers
74
- end # ThumbleMonks
74
+ end # Chicago
75
75
 
76
- helpers ThumbleMonks::Helpers
76
+ helpers Chicago::Helpers
77
77
  end # Sinatra
@@ -1,5 +1,5 @@
1
1
  module Sinatra
2
- module Thumblemonks
2
+ module Chicago
3
3
  module Responders
4
4
 
5
5
  # Returns a JSON response for an object
@@ -9,7 +9,7 @@ module Sinatra
9
9
  end
10
10
 
11
11
  end # Responders
12
- end # Thumblemonks
12
+ end # Chicago
13
13
 
14
- helpers Thumblemonks::Responders
14
+ helpers Chicago::Responders
15
15
  end # Sinatra
@@ -2,8 +2,8 @@ require 'json'
2
2
  require 'ostruct'
3
3
 
4
4
  module ThumbleMonks
5
- module Shoulda
6
- module Sinatra
5
+ module Chicago
6
+ module Shoulda
7
7
 
8
8
  def self.included(klass)
9
9
  klass.extend(Macros)
@@ -52,15 +52,15 @@ module ThumbleMonks
52
52
  end
53
53
 
54
54
  def assert_response(status)
55
- assert_equal status, @response.status
55
+ assert_equal status, last_response.status
56
56
  end
57
57
 
58
58
  def assert_response_body(body)
59
- assert_match body, @response.body
59
+ assert_match body, last_response.body
60
60
  end
61
61
 
62
62
  def assert_content_type(expected)
63
- assert_equal expected, @response.headers['Content-type']
63
+ assert_equal expected, last_response.headers['Content-type']
64
64
  end
65
65
 
66
66
  # Usage:
@@ -72,12 +72,12 @@ module ThumbleMonks
72
72
  yield if block_given?
73
73
  assert_response 302
74
74
  action = expected_path.kind_of?(Regexp) ? 'match' : 'equal'
75
- send("assert_#{action}", expected_path, @response.headers["Location"])
75
+ send("assert_#{action}", expected_path, last_response.headers["Location"])
76
76
  end
77
77
  end # Helpers
78
78
 
79
- end # Sinatra
80
- end # Shoulda
79
+ end # Shoulda
80
+ end # Chicago
81
81
  end # ThumbleMonks
82
82
 
83
- Test::Unit::TestCase.instance_eval { include ThumbleMonks::Shoulda::Sinatra }
83
+ Test::Unit::TestCase.instance_eval { include ThumbleMonks::Chicago::Shoulda }
@@ -2,15 +2,24 @@ require File.join(File.dirname(__FILE__), 'test_helper')
2
2
 
3
3
  class ApplicationTest < Test::Unit::TestCase
4
4
 
5
+ def app
6
+ 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
+
5
20
  context "catching all css" do
6
21
  context "with default path" do
7
22
  setup do
8
- mock_app {
9
- catch_all_css
10
- template :foo do
11
- ".bar\n :display none"
12
- end
13
- }
14
23
  get '/stylesheets/foo.css'
15
24
  end
16
25
 
@@ -21,12 +30,6 @@ class ApplicationTest < Test::Unit::TestCase
21
30
 
22
31
  context "with specified path" do
23
32
  setup do
24
- mock_app {
25
- catch_all_css('/css')
26
- template :goo do
27
- ".car\n :display some"
28
- end
29
- }
30
33
  get '/css/goo.css'
31
34
  end
32
35
 
@@ -37,8 +40,7 @@ class ApplicationTest < Test::Unit::TestCase
37
40
 
38
41
  context "with path that's not a defined a sass file" do
39
42
  setup do
40
- mock_app { catch_all_css }
41
- get '/stylesheets/goo.css'
43
+ get '/stylesheets/zoo.css'
42
44
  end
43
45
 
44
46
  should_have_response_status 404
@@ -48,12 +50,6 @@ class ApplicationTest < Test::Unit::TestCase
48
50
 
49
51
  context "getting obvious views" do
50
52
  setup do
51
- mock_app {
52
- get_obvious 'baz'
53
- template :baz do
54
- "Whatever man. That's just like, your opinion."
55
- end
56
- }
57
53
  get '/baz'
58
54
  end
59
55
 
data/test/helpers_test.rb CHANGED
@@ -1,10 +1,16 @@
1
1
  require File.join(File.dirname(__FILE__), 'test_helper')
2
2
 
3
3
  class HelpersTest < Test::Unit::TestCase
4
+ def app
5
+ mock_app {
6
+ helpers Sinatra::Chicago::Helpers
7
+ }
8
+ end
9
+
4
10
  context "including stylesheet" do
5
11
  context "for plain old foo" do
6
12
  setup do
7
- mock_app {
13
+ extend_mock_app {
8
14
  template(:foo) { "= stylesheet_include('foo')" }
9
15
  get('/foo') { haml :foo }
10
16
  }
@@ -20,7 +26,7 @@ class HelpersTest < Test::Unit::TestCase
20
26
 
21
27
  context "for bar with options" do
22
28
  setup do
23
- mock_app {
29
+ extend_mock_app {
24
30
  template(:foo) { "= stylesheet_include('bar', :media => 'print', :baz => 'boo')" }
25
31
  get('/foo') { haml :foo }
26
32
  }
@@ -37,7 +43,7 @@ class HelpersTest < Test::Unit::TestCase
37
43
 
38
44
  context "with a specific href" do
39
45
  setup do
40
- mock_app {
46
+ extend_mock_app {
41
47
  template(:foo) { "= stylesheet_include('http://example.com')" }
42
48
  get('/foo') { haml :foo }
43
49
  }
@@ -50,7 +56,7 @@ class HelpersTest < Test::Unit::TestCase
50
56
  context "including javascript" do
51
57
  context "for plain old foo" do
52
58
  setup do
53
- mock_app {
59
+ extend_mock_app {
54
60
  template(:foo) { "= javascript_include('foo')" }
55
61
  get('/foo') { haml :foo }
56
62
  }
@@ -64,7 +70,7 @@ class HelpersTest < Test::Unit::TestCase
64
70
 
65
71
  context "for foo with options" do
66
72
  setup do
67
- mock_app {
73
+ extend_mock_app {
68
74
  template(:foo) { "= javascript_include('foo', :type => 'text/blarg', :gus => 'nice')" }
69
75
  get('/foo') { haml :foo }
70
76
  }
@@ -79,7 +85,7 @@ class HelpersTest < Test::Unit::TestCase
79
85
 
80
86
  context "with a specific src" do
81
87
  setup do
82
- mock_app {
88
+ extend_mock_app {
83
89
  template(:foo) { "= javascript_include('http://example.com')" }
84
90
  get('/foo') { haml :foo }
85
91
  }
@@ -92,7 +98,7 @@ class HelpersTest < Test::Unit::TestCase
92
98
  context "using an anchor" do
93
99
  context "for plain old foo" do
94
100
  setup do
95
- mock_app {
101
+ extend_mock_app {
96
102
  template(:foo) { "= anchor('foo', '/bar')" }
97
103
  get('/foo') { haml :foo }
98
104
  }
@@ -104,7 +110,7 @@ class HelpersTest < Test::Unit::TestCase
104
110
 
105
111
  context "with options" do
106
112
  setup do
107
- mock_app {
113
+ extend_mock_app {
108
114
  template(:foo) { "= anchor('foo bear', '/bar/ler', :title => 'gus is nice')" }
109
115
  get('/foo') { haml :foo }
110
116
  }
@@ -2,14 +2,18 @@ require File.join(File.dirname(__FILE__), 'test_helper')
2
2
 
3
3
  class RespondersTest < Test::Unit::TestCase
4
4
 
5
+ def app
6
+ mock_app {
7
+ helpers Sinatra::Chicago::Responders
8
+ get "/json_bait" do
9
+ status(201)
10
+ json_response({:foo => "bar"})
11
+ end
12
+ }
13
+ end
14
+
5
15
  context "json response" do
6
16
  setup do
7
- mock_app {
8
- get "/json_bait" do
9
- status(201)
10
- json_response({:foo => "bar"})
11
- end
12
- }
13
17
  get "/json_bait"
14
18
  end
15
19
 
data/test/test_helper.rb CHANGED
@@ -1,25 +1,21 @@
1
- require 'rubygems'
2
-
3
- require 'haml'
4
- require 'sass'
5
- require 'sinatra'
6
- require 'test/unit'
7
- require 'sinatra/test'
8
-
9
- require 'shoulda'
10
-
11
- require 'chicago'
12
- require 'chicago/shoulda'
1
+ %w[ rubygems haml sass chicago test/unit rack/test shoulda chicago/shoulda ].each do |lib|
2
+ require lib
3
+ end
13
4
 
14
- module Sinatra::Test
5
+ module Rack::Test::Methods
15
6
  # Sets up a Sinatra::Base subclass defined with the block
16
7
  # given. Used in setup or individual spec methods to establish
17
8
  # the application.
18
- def mock_app(base=Sinatra::Default, &block)
9
+ def mock_app(base=Sinatra::Base, &block)
19
10
  @app = Sinatra.new(base, &block)
20
11
  end
12
+
13
+ def extend_mock_app(&block)
14
+ @_rack_test_session ||= Rack::Test::Session.new(app)
15
+ @app.instance_eval(&block)
16
+ end
21
17
  end
22
18
 
23
19
  class Test::Unit::TestCase
24
- include Sinatra::Test
20
+ include Rack::Test::Methods
25
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thumblemonks-chicago
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: "0.3"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Knowlden