ramaze 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +26 -6
- data/bin/ramaze +8 -1
- data/doc/AUTHORS +13 -11
- data/doc/CHANGELOG +472 -13
- data/doc/LEGAL +22 -0
- data/doc/README +1 -4
- data/doc/TODO +7 -2
- data/doc/changes.txt +472 -13
- data/doc/changes.xml +472 -13
- data/doc/meta/announcement.txt +21 -23
- data/doc/readme_chunks/appendix.txt +0 -3
- data/doc/readme_chunks/features.txt +1 -1
- data/examples/auth/auth.rb +49 -0
- data/examples/auth/template/layout.haml +20 -0
- data/examples/auth/template/login.haml +16 -0
- data/examples/blog/spec/blog.rb +1 -0
- data/examples/caching.rb +5 -6
- data/examples/css.rb +37 -0
- data/examples/layout.rb +3 -17
- data/examples/simple_auth.rb +23 -0
- data/examples/sourceview/public/images/file.gif +0 -0
- data/examples/sourceview/public/images/folder.gif +0 -0
- data/examples/sourceview/public/images/tv-collapsable-last.gif +0 -0
- data/examples/sourceview/public/images/tv-collapsable.gif +0 -0
- data/examples/sourceview/public/images/tv-expandable-last.gif +0 -0
- data/examples/sourceview/public/images/tv-expandable.gif +0 -0
- data/examples/sourceview/public/images/tv-item-last.gif +0 -0
- data/examples/sourceview/public/images/tv-item.gif +0 -0
- data/examples/sourceview/public/jquery.js +11 -0
- data/examples/sourceview/public/jquery.treeview.css +47 -0
- data/examples/sourceview/public/jquery.treeview.js +223 -0
- data/examples/sourceview/public/sourceview.js +16 -0
- data/examples/sourceview/sourceview.rb +74 -0
- data/examples/sourceview/template/index.haml +43 -0
- data/examples/templates/template/external.nag +28 -0
- data/examples/templates/template/external.xsl +57 -0
- data/examples/templates/template_amrita2.rb +2 -4
- data/examples/templates/template_erubis.rb +1 -1
- data/examples/templates/template_haml.rb +1 -1
- data/examples/templates/template_liquid.rb +2 -4
- data/examples/templates/template_markaby.rb +2 -4
- data/examples/templates/template_nagoro.rb +53 -0
- data/examples/templates/template_remarkably.rb +2 -4
- data/examples/templates/template_xslt.rb +52 -0
- data/examples/whywiki/spec/whywiki.rb +63 -0
- data/examples/whywiki/start.rb +11 -13
- data/examples/whywiki/template/edit.xhtml +3 -3
- data/examples/whywiki/template/show.xhtml +5 -8
- data/examples/wikore/spec/wikore.rb +115 -0
- data/examples/wikore/src/controller.rb +81 -0
- data/examples/wikore/src/model.rb +51 -0
- data/examples/wikore/start.rb +6 -0
- data/examples/wikore/template/index.xhtml +8 -0
- data/examples/wiktacular/spec/wiktacular.rb +1 -0
- data/examples/wiktacular/src/controller.rb +1 -1
- data/lib/ramaze.rb +6 -3
- data/lib/ramaze/action.rb +2 -13
- data/lib/ramaze/action/render.rb +36 -18
- data/lib/ramaze/adapter.rb +1 -1
- data/lib/ramaze/adapter/cgi.rb +0 -3
- data/lib/ramaze/adapter/evented_mongrel.rb +7 -0
- data/lib/ramaze/adapter/mongrel.rb +4 -13
- data/lib/ramaze/adapter/swiftiplied_mongrel.rb +7 -0
- data/lib/ramaze/cache.rb +12 -7
- data/lib/ramaze/contrib.rb +22 -0
- data/lib/ramaze/contrib/auto_params.rb +128 -0
- data/lib/ramaze/contrib/auto_params/get_args.rb +56 -0
- data/lib/ramaze/contrib/gzip_filter.rb +57 -0
- data/lib/ramaze/contrib/route.rb +40 -0
- data/lib/ramaze/contrib/sequel/fill.rb +12 -0
- data/lib/ramaze/controller.rb +17 -6
- data/lib/ramaze/controller/resolve.rb +51 -14
- data/lib/ramaze/dispatcher.rb +15 -13
- data/lib/ramaze/dispatcher/action.rb +4 -3
- data/lib/ramaze/dispatcher/directory.rb +3 -3
- data/lib/ramaze/dispatcher/error.rb +1 -1
- data/lib/ramaze/dispatcher/file.rb +17 -6
- data/lib/ramaze/error.rb +3 -0
- data/lib/ramaze/gestalt.rb +28 -8
- data/lib/ramaze/global.rb +26 -6
- data/lib/ramaze/global/globalstruct.rb +31 -6
- data/lib/ramaze/helper.rb +2 -1
- data/lib/ramaze/helper/aspect.rb +2 -2
- data/lib/ramaze/helper/auth.rb +6 -9
- data/lib/ramaze/helper/cache.rb +89 -9
- data/lib/ramaze/helper/cgi.rb +2 -2
- data/lib/ramaze/helper/formatting.rb +44 -0
- data/lib/ramaze/helper/link.rb +7 -5
- data/lib/ramaze/helper/partial.rb +6 -4
- data/lib/ramaze/helper/redirect.rb +24 -9
- data/lib/ramaze/helper/stack.rb +6 -1
- data/lib/ramaze/inform/growl.rb +1 -1
- data/lib/ramaze/inform/informer.rb +2 -1
- data/lib/ramaze/inform/informing.rb +6 -0
- data/lib/ramaze/inform/syslog.rb +1 -0
- data/lib/ramaze/snippets/array/put_within.rb +24 -0
- data/lib/ramaze/snippets/dictionary.rb +499 -0
- data/lib/ramaze/snippets/numeric/filesize_format.rb +19 -0
- data/lib/ramaze/snippets/ordered_set.rb +31 -0
- data/lib/ramaze/snippets/string/DIVIDE.rb +1 -1
- data/lib/ramaze/snippets/string/snake_case.rb +1 -1
- data/lib/ramaze/snippets/struct/values_at.rb +5 -1
- data/lib/ramaze/snippets/thread/into.rb +25 -0
- data/lib/ramaze/sourcereload.rb +39 -19
- data/lib/ramaze/spec/helper.rb +4 -1
- data/lib/ramaze/spec/helper/{context.rb → browser.rb} +3 -0
- data/lib/ramaze/spec/helper/layout.rb +3 -0
- data/lib/ramaze/spec/helper/minimal.rb +3 -0
- data/lib/ramaze/spec/helper/mock_http.rb +8 -5
- data/lib/ramaze/spec/helper/requester.rb +4 -1
- data/lib/ramaze/spec/helper/wrap.rb +15 -7
- data/lib/ramaze/template.rb +5 -1
- data/lib/ramaze/template/ezamar/engine.rb +2 -3
- data/lib/ramaze/template/ezamar/morpher.rb +26 -45
- data/lib/ramaze/template/nagoro.rb +53 -0
- data/lib/ramaze/template/none.rb +14 -0
- data/lib/ramaze/template/xslt.rb +96 -0
- data/lib/ramaze/tool.rb +0 -1
- data/lib/ramaze/tool/localize.rb +7 -2
- data/lib/ramaze/trinity/request.rb +1 -0
- data/lib/ramaze/trinity/session.rb +3 -3
- data/lib/ramaze/version.rb +2 -2
- data/rake_tasks/conf.rake +1 -2
- data/rake_tasks/{maintaince.rake → maintenance.rake} +25 -17
- data/spec/contrib/auto_params.rb +97 -0
- data/spec/contrib/route.rb +60 -0
- data/spec/contrib/sequel/fill.rb +46 -0
- data/spec/examples/caching.rb +1 -2
- data/spec/examples/css.rb +12 -0
- data/spec/examples/element.rb +0 -1
- data/spec/examples/hello.rb +0 -1
- data/spec/examples/simple.rb +0 -1
- data/spec/helper.rb +3 -2
- data/spec/ramaze/action/cache.rb +24 -7
- data/spec/ramaze/action/layout.rb +19 -11
- data/spec/ramaze/action/template/sub/sub_wrapper.xhtml +1 -0
- data/spec/ramaze/controller.rb +11 -0
- data/spec/ramaze/controller/template_resolving.rb +28 -27
- data/spec/ramaze/dispatcher.rb +32 -0
- data/spec/ramaze/dispatcher/directory.rb +2 -1
- data/spec/ramaze/element.rb +1 -1
- data/spec/ramaze/gestalt.rb +28 -0
- data/spec/ramaze/helper/aspect.rb +14 -3
- data/spec/ramaze/helper/cache.rb +78 -13
- data/spec/ramaze/helper/formatting.rb +20 -0
- data/spec/ramaze/helper/link.rb +2 -0
- data/spec/ramaze/helper/partial.rb +12 -1
- data/spec/ramaze/helper/redirect.rb +44 -8
- data/spec/ramaze/helper/stack.rb +3 -3
- data/spec/ramaze/helper/template/loop.xhtml +3 -0
- data/spec/ramaze/helper/template/num.xhtml +1 -0
- data/spec/ramaze/helper/template/recursive.xhtml +8 -0
- data/spec/ramaze/morpher.rb +25 -6
- data/spec/ramaze/params.rb +6 -2
- data/spec/ramaze/request.rb +5 -2
- data/spec/ramaze/session.rb +19 -0
- data/spec/ramaze/template.rb +2 -2
- data/spec/ramaze/template/amrita2.rb +2 -2
- data/spec/ramaze/template/erubis.rb +2 -2
- data/spec/ramaze/template/ezamar.rb +6 -3
- data/spec/ramaze/template/haml.rb +3 -3
- data/spec/ramaze/template/liquid.rb +1 -1
- data/spec/ramaze/template/markaby.rb +1 -1
- data/spec/ramaze/template/nagoro.rb +65 -0
- data/spec/ramaze/template/nagoro/another/long/action.nag +1 -0
- data/spec/ramaze/template/nagoro/combined.nag +1 -0
- data/spec/ramaze/template/nagoro/file_only.nag +1 -0
- data/spec/ramaze/template/nagoro/index.nag +1 -0
- data/spec/ramaze/template/nagoro/nested.nag +1 -0
- data/spec/ramaze/template/nagoro/some__long__action.nag +1 -0
- data/spec/ramaze/template/nagoro/sum.nag +1 -0
- data/spec/ramaze/template/remarkably.rb +1 -1
- data/spec/ramaze/template/sass.rb +1 -1
- data/spec/ramaze/template/xslt.rb +93 -0
- data/spec/ramaze/template/xslt/concat_words.xsl +16 -0
- data/spec/ramaze/template/xslt/index.xsl +14 -0
- data/spec/ramaze/template/xslt/products.xsl +32 -0
- data/spec/ramaze/template/xslt/ruby_version.xsl +14 -0
- data/spec/snippets/array/put_within.rb +32 -0
- data/spec/snippets/numeric/filesize_format.rb +12 -0
- data/spec/snippets/ordered_set.rb +56 -0
- data/spec/snippets/ramaze/caller_lines.rb +6 -3
- data/spec/snippets/string/snake_case.rb +3 -0
- metadata +118 -22
- data/doc/README.html +0 -737
- data/examples/fcgi.rb +0 -13
- data/lib/ramaze/snippets/numeric/human_readable_filesize_format.rb +0 -33
- data/lib/ramaze/tool/tidy.rb +0 -104
- data/spec/ramaze/controller/template/edit.xhtml +0 -1
- data/spec/ramaze/controller/template/edit/content.xhtml +0 -1
- data/spec/ramaze/tidy.rb +0 -12
- data/spec/snippets/numeric/human_readable_filesize_format.rb +0 -11
data/spec/ramaze/helper/cache.rb
CHANGED
@@ -4,10 +4,10 @@
|
|
4
4
|
require 'spec/helper'
|
5
5
|
|
6
6
|
class TCCacheHelperController < Ramaze::Controller
|
7
|
-
map
|
8
|
-
helper :cache
|
7
|
+
map :/
|
9
8
|
|
10
|
-
|
9
|
+
helper :cache
|
10
|
+
cache :cached_action
|
11
11
|
|
12
12
|
def index
|
13
13
|
self.class.name
|
@@ -36,35 +36,100 @@ class TCCacheHelperController < Ramaze::Controller
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
class TCCacheHelperTTLController < Ramaze::Controller
|
40
|
+
map '/ttl'
|
41
|
+
|
42
|
+
helper :cache
|
43
|
+
cache :index, :ttl => 1
|
44
|
+
|
45
|
+
def cached_list
|
46
|
+
actions_cached.inspect
|
47
|
+
end
|
48
|
+
|
49
|
+
def index
|
50
|
+
rand
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
class TCCacheHelperKeyController < Ramaze::Controller
|
55
|
+
map '/key'
|
56
|
+
|
57
|
+
helper :cache
|
58
|
+
cache :name, :key => lambda{ request['name'] }
|
59
|
+
|
60
|
+
def cached_list
|
61
|
+
actions_cached.inspect
|
62
|
+
end
|
63
|
+
|
64
|
+
def name
|
65
|
+
"hi #{request['name']} #{rand}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
class TCCacheHelperOldController < Ramaze::Controller
|
70
|
+
map '/old'
|
71
|
+
|
72
|
+
helper :cache
|
73
|
+
trait :actions_cached => [:index, :action]
|
74
|
+
|
75
|
+
def index
|
76
|
+
rand
|
77
|
+
end
|
78
|
+
|
79
|
+
def action with, param
|
80
|
+
with + param + rand.to_s
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
39
84
|
describe "CacheHelper" do
|
40
85
|
ramaze
|
41
86
|
|
87
|
+
def req(path='/', *args) get(path, *args).body end
|
88
|
+
|
42
89
|
it "testrun" do
|
43
|
-
|
90
|
+
req.should == 'TCCacheHelperController'
|
44
91
|
end
|
45
92
|
|
46
|
-
def cached_value() get('/cached_value').body end
|
47
|
-
def uncache_value() get('/uncache_value').body end
|
48
|
-
def cached_action() get('/cached_action').body end
|
49
|
-
def uncache_actions() get('/uncache_actions').body end
|
50
|
-
|
51
93
|
it "cached value" do
|
52
94
|
3.times do
|
53
|
-
lambda{ cached_value }.should_not change{ cached_value }
|
95
|
+
lambda{ req('/cached_value') }.should_not change{ req('/cached_value') }
|
54
96
|
end
|
55
97
|
|
56
98
|
3.times do
|
57
|
-
lambda{ uncache_value }.should change{ cached_value }
|
99
|
+
lambda{ req('/uncache_value') }.should change{ req('/cached_value') }
|
58
100
|
end
|
59
101
|
end
|
60
102
|
|
61
103
|
it "cached action" do
|
62
104
|
3.times do
|
63
|
-
lambda{ cached_action }.should_not change{ cached_action }
|
105
|
+
lambda{ req('/cached_action') }.should_not change{ req('/cached_action') }
|
64
106
|
end
|
65
107
|
|
66
108
|
3.times do
|
67
|
-
lambda{ uncache_actions }.should change{ cached_action }
|
109
|
+
lambda{ req('/uncache_actions') }.should change{ req('/cached_action') }
|
68
110
|
end
|
69
111
|
end
|
112
|
+
|
113
|
+
it "should support options" do
|
114
|
+
req('/ttl/cached_list').should == { :index => { :ttl => 1 } }.inspect
|
115
|
+
req('/key/cached_list').should =~ /^\{:name=>\{:key=>/
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should expire cache after time-to-live" do
|
119
|
+
orig_value = get('/ttl').body
|
120
|
+
req('/ttl').should == orig_value
|
121
|
+
sleep 1
|
122
|
+
req('/ttl').should_not == orig_value
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should cache using key lambda if provided" do
|
126
|
+
lambda{ req('/key/name', {:name=>'Aman'}) }.should_not change{ req('/key/name', {:name=>'Aman'}) }
|
127
|
+
req('/key/name', {:name=>'Bob'}).should =~ /^hi Bob/
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should remain backwards compatible" do
|
131
|
+
lambda{ req('/old') }.should_not change{ req('/old') }
|
132
|
+
lambda{ req('/old/action/one/two') }.should_not change{ req('/old/action/one/two') }
|
133
|
+
req('/old/action/two/three').should =~ /^twothree/
|
134
|
+
end
|
70
135
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec/helper'
|
2
|
+
require 'ramaze/helper/formatting'
|
3
|
+
|
4
|
+
describe 'FormattingHelper' do
|
5
|
+
include Ramaze::FormattingHelper
|
6
|
+
|
7
|
+
it 'should format numbers' do
|
8
|
+
number_format(2_123_456).should == '2,123,456'
|
9
|
+
number_format(1234.567).should == '1,234.567'
|
10
|
+
number_format(123456.789, '.').should == '123.456,789'
|
11
|
+
number_format(123456.789123, '.').should == '123.456,789123'
|
12
|
+
number_format(132123456.789123, '.').should == '132.123.456,789123'
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should return difference in time as a string' do
|
16
|
+
time_diff(Time.now-29).should == 'less than a minute'
|
17
|
+
time_diff(Time.now-60).should == '1 minute'
|
18
|
+
time_diff(Time.now, Time.now+29, true).should == 'half a minute'
|
19
|
+
end
|
20
|
+
end
|
data/spec/ramaze/helper/link.rb
CHANGED
@@ -14,6 +14,8 @@ describe "A" do
|
|
14
14
|
it 'should build links' do
|
15
15
|
A('title', :href => '/').should == %(<a href="/">title</a>)
|
16
16
|
A('title', :href => '/foo').should == %(<a href="/foo">title</a>)
|
17
|
+
A('title', :href => '/foo?x=y').should == %{<a href="/foo?x=y">title</a>}
|
18
|
+
A('/foo?x=y').should == %{<a href="/foo?x=y">/foo?x=y</a>}
|
17
19
|
|
18
20
|
a = A('title', :href => '/foo', :class => :none)
|
19
21
|
a.should =~ /class="none"/
|
@@ -6,7 +6,6 @@ require 'spec/helper'
|
|
6
6
|
class TCPartialHelperController < Ramaze::Controller
|
7
7
|
map '/'
|
8
8
|
helper :partial
|
9
|
-
template_root(__DIR__/:template)
|
10
9
|
|
11
10
|
def index
|
12
11
|
'<html><head><title>#{render_partial("/title")}</title></head></html>'
|
@@ -21,6 +20,10 @@ class TCPartialHelperController < Ramaze::Controller
|
|
21
20
|
'From Action | ' +
|
22
21
|
render_template("partial.xhtml")
|
23
22
|
end
|
23
|
+
|
24
|
+
def recursive
|
25
|
+
@n = 1
|
26
|
+
end
|
24
27
|
end
|
25
28
|
|
26
29
|
describe "PartialHelper" do
|
@@ -35,4 +38,12 @@ describe "PartialHelper" do
|
|
35
38
|
it 'should be able to render a template in the current scope' do
|
36
39
|
get('/composed').body.should == 'From Action | From Partial there'
|
37
40
|
end
|
41
|
+
|
42
|
+
it 'should render_template in a loop' do
|
43
|
+
get('/loop').body.gsub(/\s/,'').should == '12345'
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should work recursively' do
|
47
|
+
get('/recursive').body.gsub(/\s/,'').should == '{1{2{3{44}4}3}2}'
|
48
|
+
end
|
38
49
|
end
|
@@ -5,7 +5,6 @@ require 'spec/helper'
|
|
5
5
|
|
6
6
|
class TCRedirectHelperController < Ramaze::Controller
|
7
7
|
map :/
|
8
|
-
helper :redirect
|
9
8
|
|
10
9
|
def index
|
11
10
|
self.class.name
|
@@ -36,10 +35,27 @@ class TCRedirectHelperController < Ramaze::Controller
|
|
36
35
|
catch(:redirect){ double_redirection }
|
37
36
|
'bar'
|
38
37
|
end
|
38
|
+
|
39
|
+
def redirect_method
|
40
|
+
redirect Rs(:noop)
|
41
|
+
end
|
42
|
+
|
43
|
+
def absolute_uri_redirect
|
44
|
+
redirect 'http://localhost:7007/noop'
|
45
|
+
end
|
46
|
+
|
47
|
+
def loop
|
48
|
+
respond 'no loop'
|
49
|
+
'loop'
|
50
|
+
end
|
51
|
+
|
52
|
+
def respond_with_status
|
53
|
+
respond 'not found', 404
|
54
|
+
end
|
39
55
|
end
|
40
56
|
|
41
57
|
describe "RedirectHelper" do
|
42
|
-
ramaze(:adapter => :
|
58
|
+
ramaze(:adapter => :mongrel)
|
43
59
|
|
44
60
|
b = Browser.new
|
45
61
|
|
@@ -47,21 +63,41 @@ describe "RedirectHelper" do
|
|
47
63
|
b.get('/').should == "TCRedirectHelperController"
|
48
64
|
end
|
49
65
|
|
50
|
-
it "
|
66
|
+
it "should do redirection" do
|
51
67
|
b.story do
|
52
|
-
get('/redirection').should
|
68
|
+
get('/redirection').should == "TCRedirectHelperController"
|
53
69
|
get('/double_redirection').should == "TCRedirectHelperController"
|
54
|
-
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should be possible to catch a redirect' do
|
74
|
+
b.story do
|
75
|
+
get('/no_actual_redirect').should == 'foo'
|
55
76
|
get('/no_actual_double_redirect').should == 'bar'
|
56
77
|
end
|
57
78
|
end
|
58
79
|
|
59
|
-
it "redirect to referer" do
|
80
|
+
it "should redirect to referer" do
|
60
81
|
b.story do
|
61
|
-
get('/').should
|
82
|
+
get('/').should == "TCRedirectHelperController"
|
62
83
|
get('/redirect_referer_action').should == 'TCRedirectHelperController'
|
63
|
-
get('/noop').should
|
84
|
+
get('/noop').should == 'noop'
|
64
85
|
get('/redirect_referer_action').should == 'noop'
|
65
86
|
end
|
66
87
|
end
|
88
|
+
|
89
|
+
it "should work with R()" do
|
90
|
+
b.get('/redirect_method').should == 'noop'
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should work with absolute uris" do
|
94
|
+
b.get('/absolute_uri_redirect').should == 'noop'
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'should allow respond() that ignores return values and templates' do
|
98
|
+
get('/loop').body.should == 'no loop'
|
99
|
+
page = get('/respond_with_status')
|
100
|
+
page.status.should == 404
|
101
|
+
page.body.should == 'not found'
|
102
|
+
end
|
67
103
|
end
|
data/spec/ramaze/helper/stack.rb
CHANGED
@@ -56,15 +56,15 @@ describe "StackHelper" do
|
|
56
56
|
it "indirect login" do
|
57
57
|
browser do
|
58
58
|
get('/foo').should == 'logged in'
|
59
|
-
get('/
|
60
|
-
eget('/').should == {:logged_in => true
|
59
|
+
get('/secure').should == 'secret content'
|
60
|
+
eget('/').should == {:logged_in => true}
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
64
|
it "indirect login with params" do
|
65
65
|
browser do
|
66
66
|
eget('/bar', 'x' => 'y').should == {'x' => 'y'}
|
67
|
-
eget('/').should == {:logged_in => true
|
67
|
+
eget('/').should == {:logged_in => true}
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
#{@n}
|
data/spec/ramaze/morpher.rb
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
require 'spec/helper'
|
5
5
|
|
6
6
|
testcase_requires 'hpricot'
|
7
|
+
require 'ramaze/template/ezamar/morpher'
|
7
8
|
|
8
9
|
class TCMorpherController < Ramaze::Controller
|
9
10
|
map '/'
|
@@ -48,6 +49,20 @@ class TCMorpherController < Ramaze::Controller
|
|
48
49
|
<div each="@elem">#{_e}</div>
|
49
50
|
}
|
50
51
|
end
|
52
|
+
|
53
|
+
def complex_one
|
54
|
+
%q{
|
55
|
+
<html>
|
56
|
+
<head>
|
57
|
+
<title>test morph</title>
|
58
|
+
</head>
|
59
|
+
<body>
|
60
|
+
<a if="1" href="foo">foo</a>
|
61
|
+
<a unless="1" href="bar">bar</a>
|
62
|
+
</body>
|
63
|
+
</html>
|
64
|
+
}
|
65
|
+
end
|
51
66
|
end
|
52
67
|
|
53
68
|
describe "Morpher" do
|
@@ -62,32 +77,36 @@ describe "Morpher" do
|
|
62
77
|
get(*url).body.split("\n").join.strip
|
63
78
|
end
|
64
79
|
|
65
|
-
it "testrun" do
|
80
|
+
it "should do a testrun" do
|
66
81
|
clean_get('/').should == 'TCMorpherController'
|
67
82
|
end
|
68
83
|
|
69
|
-
it "if" do
|
84
|
+
it "should morph if" do
|
70
85
|
clean_get('/simple_if').should == '<p>orig</p>'
|
71
86
|
clean_get('/simple_if/bar').should == '<p>bar</p>'
|
72
87
|
end
|
73
88
|
|
74
|
-
it "unless" do
|
89
|
+
it "should morph unless" do
|
75
90
|
clean_get('/simple_unless').should == '<p>orig</p>'
|
76
91
|
clean_get('/simple_unless/bar').should == '<p>bar</p>'
|
77
92
|
end
|
78
93
|
|
79
|
-
it "for" do
|
94
|
+
it "should morph for" do
|
80
95
|
clean_get('/simple_for').should == "<div>0</div><div>1</div>"
|
81
96
|
clean_get('/simple_for/3').should == "<div>0</div><div>1</div><div>2</div><div>3</div>"
|
82
97
|
end
|
83
98
|
|
84
|
-
it "times" do
|
99
|
+
it "should morph times" do
|
85
100
|
clean_get('/simple_times').should == "<div>0</div>"
|
86
101
|
clean_get('/simple_times/3').should == "<div>0</div><div>1</div><div>2</div>"
|
87
102
|
end
|
88
103
|
|
89
|
-
it "each" do
|
104
|
+
it "should morph each" do
|
90
105
|
clean_get('/simple_each').should == ''
|
91
106
|
clean_get('/simple_each/1/2/3').should == "<div>1</div><div>2</div><div>3</div>"
|
92
107
|
end
|
108
|
+
|
109
|
+
it 'should morph a more complex document' do
|
110
|
+
clean_get('/complex_one').should == '<html> <head> <title>test morph</title> </head> <body> <a href="foo">foo</a> </body></html>'
|
111
|
+
end
|
93
112
|
end
|
data/spec/ramaze/params.rb
CHANGED
@@ -55,7 +55,7 @@ class TCParamsController3 < Ramaze::Controller
|
|
55
55
|
map '/ma'
|
56
56
|
|
57
57
|
def index(*args)
|
58
|
-
request.params['foo'].
|
58
|
+
request.params['foo'].to_s.dump
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -141,6 +141,10 @@ describe "Simple Parameters" do
|
|
141
141
|
end
|
142
142
|
|
143
143
|
it 'params should have no content without params' do
|
144
|
-
get('/ma').body.should == '
|
144
|
+
get('/ma').body.should == '""'
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'should have a parameter via QUERY_PARAMS' do
|
148
|
+
get('/ma', 'foo' => 'bar').body.should == '"bar"'
|
145
149
|
end
|
146
150
|
end
|
data/spec/ramaze/request.rb
CHANGED
@@ -20,6 +20,9 @@ class TCRequestController < Ramaze::Controller
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def put_inspect(file)
|
23
|
+
# referencing request.rack_params breaks this test
|
24
|
+
# request.params is hacked to return {} on PUT requests
|
25
|
+
request.params
|
23
26
|
request.body.read.inspect
|
24
27
|
end
|
25
28
|
|
@@ -66,7 +69,7 @@ describe "Request" do
|
|
66
69
|
end
|
67
70
|
|
68
71
|
describe "PUT" do
|
69
|
-
it "put a
|
72
|
+
it "put a resource" do
|
70
73
|
image = 'favicon.ico'
|
71
74
|
image_path = File.join('spec', 'ramaze', 'public', image)
|
72
75
|
address = "/put_inspect/#{image}"
|
@@ -79,7 +82,7 @@ describe "Request" do
|
|
79
82
|
end
|
80
83
|
|
81
84
|
describe "DELETE" do
|
82
|
-
it "delete a
|
85
|
+
it "delete a resource" do
|
83
86
|
delete('/is_delete').body.should == 'true'
|
84
87
|
end
|
85
88
|
end
|
data/spec/ramaze/session.rb
CHANGED
@@ -17,6 +17,14 @@ class TCSessionController < Ramaze::Controller
|
|
17
17
|
session.merge! request.params
|
18
18
|
index
|
19
19
|
end
|
20
|
+
|
21
|
+
def test_set(n)
|
22
|
+
session[:n] = n
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_result
|
26
|
+
session[:n]
|
27
|
+
end
|
20
28
|
end
|
21
29
|
|
22
30
|
describe "Session" do
|
@@ -67,6 +75,17 @@ describe "Session" do
|
|
67
75
|
it "snooping a bit around" do
|
68
76
|
b.cookie.split('=').size.should == 3
|
69
77
|
end
|
78
|
+
|
79
|
+
it 'should not hit IP_COUNT_LIMIT for the same session/ip' do
|
80
|
+
class Ramaze::Session
|
81
|
+
remove_const :IP_COUNT_LIMIT
|
82
|
+
const_set(:IP_COUNT_LIMIT, 2)
|
83
|
+
end
|
84
|
+
(0..Ramaze::Session::IP_COUNT_LIMIT * 2).each do |n|
|
85
|
+
b.get("/test_set/#{n}")
|
86
|
+
b.get("/test_result").should == n.to_s
|
87
|
+
end
|
88
|
+
end
|
70
89
|
end
|
71
90
|
end
|
72
91
|
end
|