thumblemonks-chicago 0.1.1 → 0.1.2
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 +21 -2
- data/chicago.gemspec +2 -1
- data/lib/chicago/helpers.rb +6 -0
- data/lib/chicago/shoulda/sinatra.rb +15 -0
- data/test/helpers_test.rb +49 -0
- data/test/responders_test.rb +1 -1
- data/test/test_helper.rb +3 -0
- metadata +2 -1
data/README.markdown
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
# Chicago
|
2
2
|
|
3
|
-
|
3
|
+
It's my kind of town!
|
4
|
+
- Sinatra
|
4
5
|
|
5
|
-
|
6
|
+
Yeah, we're real clever. We're also from ["The city in mid-west best city in the whole wide wide world"](http://www.azlyrics.com/lyrics/lupefiasco/gogogadgetflow.html) ... which makes us double the clever.
|
7
|
+
|
8
|
+
## What what?
|
9
|
+
|
10
|
+
### Sinatra runtime app
|
11
|
+
|
12
|
+
In your Sinatra app, do this:
|
13
|
+
|
14
|
+
require 'chicago'
|
15
|
+
|
16
|
+
And you'll get some helpful Sinatra extensions and helpers.
|
17
|
+
|
18
|
+
### Sinatra testing
|
19
|
+
|
20
|
+
If you're using Shoulda in your tests of your Sinatra app, do this:
|
21
|
+
|
22
|
+
require 'chicago/shoulda'
|
23
|
+
|
24
|
+
... and you'll get a bunch of cool Shoulda macros for testing specific Sinatra stuff.
|
data/chicago.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "chicago"
|
3
|
-
s.version = "0.1.
|
3
|
+
s.version = "0.1.2"
|
4
4
|
s.date = "2008-12-05"
|
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]
|
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.test_files = %w[
|
31
31
|
test/application_test.rb
|
32
32
|
test/responders_test.rb
|
33
|
+
test/helpers_test.rb
|
33
34
|
test/test_helper.rb
|
34
35
|
]
|
35
36
|
end
|
data/lib/chicago/helpers.rb
CHANGED
@@ -13,6 +13,12 @@ module Thumblemonks
|
|
13
13
|
options_str = hash_to_attributes(defaults.merge(options))
|
14
14
|
%Q[<link #{options_str}/>]
|
15
15
|
end
|
16
|
+
|
17
|
+
def javascript_include(name, options={})
|
18
|
+
defaults = {:src => "/javascripts/#{name}.js", :type => "text/javascript"}
|
19
|
+
options_str = hash_to_attributes(defaults.merge(options))
|
20
|
+
%Q[<script #{options_str}></script>]
|
21
|
+
end
|
16
22
|
private
|
17
23
|
def hash_to_attributes(options)
|
18
24
|
options.map {|k,v| "#{k}=\"#{v}\""}.join(' ')
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'json'
|
2
|
+
require 'ostruct'
|
2
3
|
|
3
4
|
module Thumblemonks
|
4
5
|
module Shoulda
|
@@ -30,6 +31,20 @@ module Thumblemonks
|
|
30
31
|
assert_response_body json
|
31
32
|
end
|
32
33
|
end
|
34
|
+
|
35
|
+
# Will invoke a helper method in the EventContext and set the result of
|
36
|
+
# output to @response.body.
|
37
|
+
#
|
38
|
+
# NOTE: This will probably break right now if you need access to specific
|
39
|
+
# event context methods or Sinatra.app options in your helper.
|
40
|
+
def should_invoke_helper(name, *args, &assert_block)
|
41
|
+
should "invoke helper #{name} with #{args.inspect}" do
|
42
|
+
@response = OpenStruct.new(:body => nil)
|
43
|
+
event_context = ::Sinatra::EventContext.new(nil, @response, nil)
|
44
|
+
@response.body = event_context.send(name, *args)
|
45
|
+
self.instance_eval(&assert_block)
|
46
|
+
end
|
47
|
+
end
|
33
48
|
end # Macros
|
34
49
|
|
35
50
|
module Helpers
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
2
|
+
|
3
|
+
class HelpersTest < Test::Unit::TestCase
|
4
|
+
context "including stylesheets" do
|
5
|
+
should_invoke_helper(:stylesheet_include, 'foo') do
|
6
|
+
assert_match %r[^<link( \w+=".+"){4}/>$], @response.body
|
7
|
+
assert_match %r[href="/stylesheets/foo\.css"], @response.body
|
8
|
+
assert_match %r[media="screen"], @response.body
|
9
|
+
assert_match %r[rel="stylesheet"], @response.body
|
10
|
+
assert_match %r[type="text/css"], @response.body
|
11
|
+
end
|
12
|
+
|
13
|
+
should_invoke_helper(:stylesheet_include, 'bar', :media => 'print', :baz => 'boo') do
|
14
|
+
assert_match %r[^<link( \w+=".+"){5}/>$], @response.body
|
15
|
+
assert_match %r[href="/stylesheets/bar\.css"], @response.body
|
16
|
+
assert_match %r[media="print"], @response.body
|
17
|
+
assert_match %r[rel="stylesheet"], @response.body
|
18
|
+
assert_match %r[type="text/css"], @response.body
|
19
|
+
assert_match %r[baz="boo"], @response.body
|
20
|
+
end
|
21
|
+
end # including stylesheets
|
22
|
+
|
23
|
+
context "including javascript" do
|
24
|
+
should_invoke_helper(:javascript_include, 'foo') do
|
25
|
+
assert_match %r[^<script( \w+=".+"){2}></script>$], @response.body
|
26
|
+
assert_match %r[src="/javascripts/foo\.js"], @response.body
|
27
|
+
assert_match %r[type="text/javascript"], @response.body
|
28
|
+
end
|
29
|
+
|
30
|
+
should_invoke_helper(:javascript_include, 'foo', :type => "text/blarg", :gus => "nice") do
|
31
|
+
assert_match %r[^<script( \w+=".+"){3}></script>$], @response.body
|
32
|
+
assert_match %r[src="/javascripts/foo\.js"], @response.body
|
33
|
+
assert_match %r[type="text/blarg"], @response.body
|
34
|
+
assert_match %r[gus="nice"], @response.body
|
35
|
+
end
|
36
|
+
end # including javascript
|
37
|
+
|
38
|
+
context "using an anchor" do
|
39
|
+
should_invoke_helper(:anchor, 'foo', '/bar') do
|
40
|
+
assert_equal %Q[<a href="/bar">foo</a>], @response.body
|
41
|
+
end
|
42
|
+
|
43
|
+
should_invoke_helper(:anchor, 'foo bear', '/bar/ler', :title => "gus is nice") do
|
44
|
+
assert_match %r[^<a( \w+=".+"){2}>foo bear</a>$], @response.body
|
45
|
+
assert_match %r[href="/bar/ler"], @response.body
|
46
|
+
assert_match %r[title="gus is nice"], @response.body
|
47
|
+
end
|
48
|
+
end # using an anchor
|
49
|
+
end
|
data/test/responders_test.rb
CHANGED
data/test/test_helper.rb
CHANGED
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.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Knowlden
|
@@ -67,4 +67,5 @@ summary: Sinatra runtime and testing extensions used commonly by Thumblemonks
|
|
67
67
|
test_files:
|
68
68
|
- test/application_test.rb
|
69
69
|
- test/responders_test.rb
|
70
|
+
- test/helpers_test.rb
|
70
71
|
- test/test_helper.rb
|