rufus-jig 0.1.23 → 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.
Files changed (65) hide show
  1. data/.rspec +1 -0
  2. data/CHANGELOG.txt +8 -0
  3. data/README.rdoc +41 -11
  4. data/Rakefile +37 -12
  5. data/TODO.txt +6 -3
  6. data/lib/rufus/jig/adapters/em.rb +21 -24
  7. data/lib/rufus/jig/adapters/net.rb +3 -4
  8. data/lib/rufus/jig/adapters/net_persistent.rb +26 -7
  9. data/lib/rufus/jig/adapters/patron.rb +25 -10
  10. data/lib/rufus/jig/couch.rb +199 -36
  11. data/lib/rufus/jig/http.rb +183 -90
  12. data/lib/rufus/jig/path.rb +4 -4
  13. data/lib/rufus/jig/version.rb +1 -1
  14. data/rufus-jig.gemspec +55 -34
  15. data/spec/couch/attachements_spec.rb +113 -0
  16. data/spec/couch/basic_auth_spec.rb +75 -0
  17. data/spec/couch/conditional_spec.rb +178 -0
  18. data/spec/couch/continuous.rb +97 -0
  19. data/spec/couch/couch_spec.rb +64 -0
  20. data/spec/couch/db_spec.rb +366 -0
  21. data/{test → spec/couch}/tweet.png +0 -0
  22. data/spec/couch/views_spec.rb +326 -0
  23. data/spec/couch_url.txt +2 -0
  24. data/spec/jig/basic_auth_spec.rb +51 -0
  25. data/spec/jig/conditional_spec.rb +76 -0
  26. data/spec/jig/delete_spec.rb +32 -0
  27. data/spec/jig/get_spec.rb +116 -0
  28. data/spec/jig/misc_spec.rb +120 -0
  29. data/spec/jig/new_spec.rb +95 -0
  30. data/spec/jig/parse_uri_spec.rb +139 -0
  31. data/spec/jig/post_spec.rb +79 -0
  32. data/spec/jig/prefix_spec.rb +51 -0
  33. data/spec/jig/put_spec.rb +68 -0
  34. data/spec/jig/timeout_spec.rb +94 -0
  35. data/{test → spec}/server.rb +14 -4
  36. data/spec/spec_helper.rb +61 -0
  37. data/spec/support/couch_helper.rb +14 -0
  38. data/spec/support/server_helper.rb +32 -0
  39. metadata +98 -43
  40. data/lib/rufus/jig/adapters/net_response.rb +0 -42
  41. data/test/base.rb +0 -53
  42. data/test/bm/bm0.rb +0 -49
  43. data/test/bm/bm1.rb +0 -43
  44. data/test/conc/put_vs_delete.rb +0 -28
  45. data/test/couch_base.rb +0 -52
  46. data/test/couch_url.txt +0 -1
  47. data/test/ct_0_couch.rb +0 -64
  48. data/test/ct_1_couchdb.rb +0 -204
  49. data/test/ct_2_couchdb_options.rb +0 -50
  50. data/test/ct_3_couchdb_views.rb +0 -106
  51. data/test/ct_4_attachments.rb +0 -126
  52. data/test/ct_5_couchdb_continuous.rb +0 -92
  53. data/test/cut_0_auth_couch.rb +0 -62
  54. data/test/test.rb +0 -28
  55. data/test/to.sh +0 -25
  56. data/test/tt_0_get_timeout.rb +0 -92
  57. data/test/ut_0_http_get.rb +0 -191
  58. data/test/ut_1_http_post.rb +0 -81
  59. data/test/ut_2_http_delete.rb +0 -42
  60. data/test/ut_3_http_put.rb +0 -105
  61. data/test/ut_4_http_prefix.rb +0 -50
  62. data/test/ut_5_http_misc.rb +0 -65
  63. data/test/ut_6_args.rb +0 -98
  64. data/test/ut_7_parse_uri.rb +0 -79
  65. data/test/ut_8_auth.rb +0 -37
@@ -41,7 +41,7 @@ module Rufus::Jig
41
41
  # p Rufus::Jig::Path.add_params('/toto', :q => 'nada', 'x' => 2)
42
42
  # # => "/toto?q=nada&x=2"
43
43
  #
44
- def self.add_params (path, h)
44
+ def self.add_params(path, h)
45
45
 
46
46
  params = h.collect { |k, v| "#{k}=#{v}" }.join('&')
47
47
 
@@ -55,7 +55,7 @@ module Rufus::Jig
55
55
  # p Rufus::Jig::Path.join('division', 'customer', :restricted => true)
56
56
  # # => '/division/customer?restricted=true'
57
57
  #
58
- def self.join (*elts)
58
+ def self.join(*elts)
59
59
 
60
60
  elts, params = if elts.last.is_a?(Hash)
61
61
  [ elts[0..-2], elts.last ]
@@ -79,14 +79,14 @@ module Rufus::Jig
79
79
 
80
80
  # Makes sure there is a forward slash in the given string.
81
81
  #
82
- def self.to_path (s)
82
+ def self.to_path(s)
83
83
 
84
84
  s.match(/^\//) ? s : "/#{s}"
85
85
  end
86
86
 
87
87
  # Removes any forward slashes at the beginning of the given string.
88
88
  #
89
- def self.to_name (s)
89
+ def self.to_name(s)
90
90
 
91
91
  if m = s.match(/^\/+(.+)$/)
92
92
  m[1]
@@ -1,7 +1,7 @@
1
1
 
2
2
  module Rufus
3
3
  module Jig
4
- VERSION = '0.1.23'
4
+ VERSION = '1.0.0'
5
5
  end
6
6
  end
7
7
 
@@ -5,17 +5,17 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rufus-jig}
8
- s.version = "0.1.23"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["John Mettraux", "Kenneth Kalmer"]
12
- s.date = %q{2010-10-01}
12
+ s.date = %q{2010-12-08}
13
13
  s.description = %q{
14
14
  Json Interwebs Get.
15
15
 
16
16
  An HTTP client, greedy with JSON content, GETting conditionally.
17
17
 
18
- Uses Patron and Yajl-ruby whenever possible.
18
+ Uses Yajl-ruby whenever possible.
19
19
  }
20
20
  s.email = %q{jmettraux@gmail.com}
21
21
  s.extra_rdoc_files = [
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
24
24
  ]
25
25
  s.files = [
26
26
  ".gitignore",
27
+ ".rspec",
27
28
  "CHANGELOG.txt",
28
29
  "CREDITS.txt",
29
30
  "LICENSE.txt",
@@ -35,59 +36,77 @@ Gem::Specification.new do |s|
35
36
  "lib/rufus/jig/adapters/em.rb",
36
37
  "lib/rufus/jig/adapters/net.rb",
37
38
  "lib/rufus/jig/adapters/net_persistent.rb",
38
- "lib/rufus/jig/adapters/net_response.rb",
39
39
  "lib/rufus/jig/adapters/patron.rb",
40
40
  "lib/rufus/jig/couch.rb",
41
41
  "lib/rufus/jig/http.rb",
42
42
  "lib/rufus/jig/path.rb",
43
43
  "lib/rufus/jig/version.rb",
44
44
  "rufus-jig.gemspec",
45
- "test/base.rb",
46
- "test/bm/bm0.rb",
47
- "test/bm/bm1.rb",
48
- "test/conc/put_vs_delete.rb",
49
- "test/couch_base.rb",
50
- "test/couch_url.txt",
51
- "test/ct_0_couch.rb",
52
- "test/ct_1_couchdb.rb",
53
- "test/ct_2_couchdb_options.rb",
54
- "test/ct_3_couchdb_views.rb",
55
- "test/ct_4_attachments.rb",
56
- "test/ct_5_couchdb_continuous.rb",
57
- "test/cut_0_auth_couch.rb",
58
- "test/server.rb",
59
- "test/test.rb",
60
- "test/to.sh",
61
- "test/tt_0_get_timeout.rb",
62
- "test/tweet.png",
63
- "test/ut_0_http_get.rb",
64
- "test/ut_1_http_post.rb",
65
- "test/ut_2_http_delete.rb",
66
- "test/ut_3_http_put.rb",
67
- "test/ut_4_http_prefix.rb",
68
- "test/ut_5_http_misc.rb",
69
- "test/ut_6_args.rb",
70
- "test/ut_7_parse_uri.rb",
71
- "test/ut_8_auth.rb"
45
+ "spec/couch/attachements_spec.rb",
46
+ "spec/couch/basic_auth_spec.rb",
47
+ "spec/couch/conditional_spec.rb",
48
+ "spec/couch/continuous.rb",
49
+ "spec/couch/couch_spec.rb",
50
+ "spec/couch/db_spec.rb",
51
+ "spec/couch/tweet.png",
52
+ "spec/couch/views_spec.rb",
53
+ "spec/couch_url.txt",
54
+ "spec/jig/basic_auth_spec.rb",
55
+ "spec/jig/conditional_spec.rb",
56
+ "spec/jig/delete_spec.rb",
57
+ "spec/jig/get_spec.rb",
58
+ "spec/jig/misc_spec.rb",
59
+ "spec/jig/new_spec.rb",
60
+ "spec/jig/parse_uri_spec.rb",
61
+ "spec/jig/post_spec.rb",
62
+ "spec/jig/prefix_spec.rb",
63
+ "spec/jig/put_spec.rb",
64
+ "spec/jig/timeout_spec.rb",
65
+ "spec/server.rb",
66
+ "spec/spec_helper.rb",
67
+ "spec/support/couch_helper.rb",
68
+ "spec/support/server_helper.rb"
72
69
  ]
73
70
  s.homepage = %q{http://github.com/jmettraux/rufus-jig/}
74
71
  s.rdoc_options = ["--charset=UTF-8"]
75
72
  s.require_paths = ["lib"]
76
73
  s.rubyforge_project = %q{rufus}
77
- s.rubygems_version = %q{1.3.6}
74
+ s.rubygems_version = %q{1.3.7}
78
75
  s.summary = %q{An HTTP client, greedy with JSON content, GETting conditionally.}
79
76
  s.test_files = [
80
- "test/test.rb"
77
+ "spec/couch/attachements_spec.rb",
78
+ "spec/couch/basic_auth_spec.rb",
79
+ "spec/couch/conditional_spec.rb",
80
+ "spec/couch/continuous.rb",
81
+ "spec/couch/couch_spec.rb",
82
+ "spec/couch/db_spec.rb",
83
+ "spec/couch/views_spec.rb",
84
+ "spec/jig/basic_auth_spec.rb",
85
+ "spec/jig/conditional_spec.rb",
86
+ "spec/jig/delete_spec.rb",
87
+ "spec/jig/get_spec.rb",
88
+ "spec/jig/misc_spec.rb",
89
+ "spec/jig/new_spec.rb",
90
+ "spec/jig/parse_uri_spec.rb",
91
+ "spec/jig/post_spec.rb",
92
+ "spec/jig/prefix_spec.rb",
93
+ "spec/jig/put_spec.rb",
94
+ "spec/jig/timeout_spec.rb",
95
+ "spec/server.rb",
96
+ "spec/spec_helper.rb",
97
+ "spec/support/couch_helper.rb",
98
+ "spec/support/server_helper.rb"
81
99
  ]
82
100
 
83
101
  if s.respond_to? :specification_version then
84
102
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
85
103
  s.specification_version = 3
86
104
 
87
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
105
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
88
106
  s.add_runtime_dependency(%q<rufus-lru>, [">= 0"])
89
107
  s.add_runtime_dependency(%q<rufus-json>, [">= 0.2.5"])
90
108
  s.add_development_dependency(%q<rake>, [">= 0"])
109
+ s.add_development_dependency(%q<rspec>, ["~> 2.2.0"])
91
110
  s.add_development_dependency(%q<yard>, [">= 0"])
92
111
  s.add_development_dependency(%q<jeweler>, [">= 0"])
93
112
  s.add_development_dependency(%q<patron>, [">= 0"])
@@ -97,6 +116,7 @@ Gem::Specification.new do |s|
97
116
  s.add_dependency(%q<rufus-lru>, [">= 0"])
98
117
  s.add_dependency(%q<rufus-json>, [">= 0.2.5"])
99
118
  s.add_dependency(%q<rake>, [">= 0"])
119
+ s.add_dependency(%q<rspec>, ["~> 2.2.0"])
100
120
  s.add_dependency(%q<yard>, [">= 0"])
101
121
  s.add_dependency(%q<jeweler>, [">= 0"])
102
122
  s.add_dependency(%q<patron>, [">= 0"])
@@ -107,6 +127,7 @@ Gem::Specification.new do |s|
107
127
  s.add_dependency(%q<rufus-lru>, [">= 0"])
108
128
  s.add_dependency(%q<rufus-json>, [">= 0.2.5"])
109
129
  s.add_dependency(%q<rake>, [">= 0"])
130
+ s.add_dependency(%q<rspec>, ["~> 2.2.0"])
110
131
  s.add_dependency(%q<yard>, [">= 0"])
111
132
  s.add_dependency(%q<jeweler>, [">= 0"])
112
133
  s.add_dependency(%q<patron>, [">= 0"])
@@ -0,0 +1,113 @@
1
+
2
+ #
3
+ # specifying rufus-jig
4
+ #
5
+ # Tue Nov 30 09:12:59 JST 2010
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
9
+
10
+
11
+ describe Rufus::Jig::Couch do
12
+
13
+ context 'with attachments' do
14
+
15
+ before(:each) do
16
+
17
+ h = Rufus::Jig::Http.new(couch_url)
18
+ begin
19
+ h.delete('/rufus_jig_test')
20
+ rescue Exception => e
21
+ #p e
22
+ end
23
+
24
+ h.put('/rufus_jig_test', '')
25
+ h.close
26
+
27
+ @c = Rufus::Jig::Couch.new(couch_url, 'rufus_jig_test')
28
+
29
+ @c.put('_id' => 'thedoc', 'function' => 'recipient for attachements')
30
+ @d = @c.get('thedoc')
31
+ end
32
+
33
+ after(:each) do
34
+
35
+ @c.close
36
+ end
37
+
38
+ describe '#attach' do
39
+
40
+ it 'attaches' do
41
+
42
+ @c.attach(
43
+ 'thedoc', @d['_rev'], 'message', 'this is a message',
44
+ :content_type => 'text/plain')
45
+
46
+ @c.get('thedoc/message').should == 'this is a message'
47
+ end
48
+
49
+ it 'attaches with the right content-type' do
50
+
51
+ @c.attach(
52
+ 'thedoc', @d['_rev'], 'message', 'this is a message',
53
+ :content_type => 'text/plain')
54
+
55
+ r = @c.get('thedoc/message', :raw => true)
56
+ r.status.should == 200
57
+ r.headers['Content-Type'].should == 'text/plain'
58
+ end
59
+
60
+ it 'returns the couch response' do
61
+
62
+ r = @c.attach(
63
+ 'thedoc', @d['_rev'], 'message', 'this is a message',
64
+ :content_type => 'text/plain')
65
+
66
+ r.keys.sort.should == %w[ id ok rev ]
67
+ end
68
+
69
+ it 'raises if it failed' do
70
+
71
+ lambda {
72
+ @c.attach(
73
+ 'thedoc', '999-123e', 'message', 'this is a message',
74
+ :content_type => 'text/plain')
75
+ }.should raise_error
76
+ end
77
+ end
78
+
79
+ describe '#detach' do
80
+
81
+ before(:each) do
82
+
83
+ r = @c.attach(
84
+ 'thedoc', @d['_rev'],
85
+ 'image', File.read(File.join(File.dirname(__FILE__), 'tweet.png')),
86
+ :content_type => 'image/png')
87
+ @d['_rev'] = r['rev']
88
+ end
89
+
90
+ it 'detaches' do
91
+
92
+ @c.detach('thedoc', @d['_rev'], 'image')
93
+
94
+ @c.get('thedoc/image').should == nil
95
+ end
96
+
97
+ it 'returns the couch response' do
98
+
99
+ r = @c.detach('thedoc', @d['_rev'], 'image')
100
+
101
+ r.keys.sort.should == %w[ id ok rev ]
102
+ end
103
+
104
+ it 'raises if it failed' do
105
+
106
+ lambda {
107
+ @c.detach('thedoc', '999-12340e', 'image')
108
+ }.should raise_error
109
+ end
110
+ end
111
+ end
112
+ end
113
+
@@ -0,0 +1,75 @@
1
+
2
+ #
3
+ # specifying rufus-jig
4
+ #
5
+ # Wed Dec 1 15:16:31 JST 2010
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
9
+
10
+
11
+ describe Rufus::Jig::Couch do
12
+
13
+ after(:each) do
14
+
15
+ @c.close
16
+ end
17
+
18
+ context 'HTTP basic authorization' do
19
+
20
+ context 'without authorization' do
21
+
22
+ before(:each) do
23
+
24
+ @c = Rufus::Jig::Couch.new('127.0.0.1', 4567, 'tcouch')
25
+ end
26
+
27
+ it 'gets denied' do
28
+
29
+ lambda {
30
+ @c.get('.')
31
+ }.should raise_error(Rufus::Jig::HttpError)
32
+ end
33
+
34
+ it 'cannot do #on_change' do
35
+
36
+ lambda {
37
+ @c.on_change do |id, deleted, doc|
38
+ end
39
+ }.should raise_error(Rufus::Jig::HttpError)
40
+ end
41
+ end
42
+
43
+ context 'with authorization' do
44
+
45
+ before(:each) do
46
+
47
+ @c = Rufus::Jig::Couch.new(
48
+ '127.0.0.1', 4567, 'tcouch', :basic_auth => %w[ admin nimda ])
49
+ end
50
+
51
+ it 'gets through' do
52
+
53
+ @c.get('.').should == { 'id' => 'nada' }
54
+ end
55
+
56
+ it 'can do #on_change' do
57
+
58
+ res = nil
59
+
60
+ t = Thread.new {
61
+ @c.on_change do |id, deleted, doc|
62
+ res = [ id, deleted, doc ]
63
+ end
64
+ }
65
+
66
+ sleep 0.200
67
+
68
+ t.kill
69
+
70
+ res.should == [ 'x', false, { 'hello' => 'world' } ]
71
+ end
72
+ end
73
+ end
74
+ end
75
+
@@ -0,0 +1,178 @@
1
+
2
+ #
3
+ # specifying rufus-jig
4
+ #
5
+ # Mon Dec 6 20:16:11 JST 2010
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
9
+
10
+
11
+ describe Rufus::Jig::Couch do
12
+
13
+ context 'with conditional GET (and POST)' do
14
+
15
+ before(:each) do
16
+
17
+ h = Rufus::Jig::Http.new(couch_url)
18
+
19
+ begin
20
+ h.delete('/rufus_jig_test')
21
+ rescue Exception => e
22
+ #p e
23
+ end
24
+
25
+ h.put('/rufus_jig_test', '')
26
+
27
+ h.put('/rufus_jig_test/d0', '{"_id":"d0","type":"door"}')
28
+ h.put('/rufus_jig_test/d1', '{"_id":"d1","type":"window"}')
29
+ h.put('/rufus_jig_test/d2', '{"_id":"d2","type":"window"}')
30
+ h.put('/rufus_jig_test/d3', '{"_id":"d3","type":"wall"}')
31
+ h.put('/rufus_jig_test/d4', '{"_id":"d4","type":"roof"}')
32
+
33
+ h.put(
34
+ '/rufus_jig_test/_design/my_test',
35
+ {
36
+ '_id' => '_design/my_test',
37
+ 'views' => {
38
+ 'my_view' => {
39
+ 'map' => "function(doc) { emit(doc['type'], null); }"
40
+ }
41
+ }
42
+ },
43
+ :content_type => :json)
44
+
45
+ h.close
46
+
47
+ @c = Rufus::Jig::Couch.new(couch_url, 'rufus_jig_test')
48
+ end
49
+
50
+ after(:each) do
51
+
52
+ @c.close
53
+ end
54
+
55
+ describe '#get' do
56
+
57
+ it 'caches _all_docs' do
58
+
59
+ @c.get('_all_docs')
60
+ s0 = @c.http.last_response.status
61
+ @c.get('_all_docs')
62
+ s1 = @c.http.last_response.status
63
+
64
+ s0.should == 200
65
+ s1.should == 304
66
+ end
67
+ end
68
+
69
+ describe '#post with :keys' do
70
+
71
+ it "doesn't cache by default" do
72
+
73
+ @c.post('_all_docs', { 'keys' => %w[ d0 d2 ] })
74
+ s0 = @c.http.last_response.status
75
+ @c.post('_all_docs', { 'keys' => %w[ d0 d2 ] })
76
+ s1 = @c.http.last_response.status
77
+
78
+ s0.should == 200
79
+ s1.should == 200
80
+ end
81
+
82
+ it 'caches _all_docs when :cache => true' do
83
+
84
+ @c.post('_all_docs', { 'keys' => %w[ d1 d2 ] }, :cache => true)
85
+ s0 = @c.http.last_response.status
86
+ @c.post('_all_docs', { 'keys' => %w[ d1 d2 ] }, :cache => true)
87
+ s1 = @c.http.last_response.status
88
+
89
+ s0.should == 200
90
+ s1.should == 304
91
+ end
92
+
93
+ it 'caches _all_docs too much when :cache => true' do
94
+
95
+ @c.post('_all_docs', { 'keys' => %w[ d1 d2 ] }, :cache => true)
96
+ s0 = @c.http.last_response.status
97
+ @c.post('_all_docs', { 'keys' => %w[ d0 d2 ] }, :cache => true)
98
+ s1 = @c.http.last_response.status
99
+
100
+ s0.should == 200
101
+ s1.should == 304
102
+ end
103
+
104
+ it 'caches _all_docs when :cache => :with_body' do
105
+
106
+ @c.post('_all_docs', { 'keys' => %w[ d2 d3 ] }, :cache => :with_body)
107
+ s0 = @c.http.last_response.status
108
+ @c.post('_all_docs', { 'keys' => %w[ d2 d3 ] }, :cache => :with_body)
109
+ s1 = @c.http.last_response.status
110
+
111
+ s0.should == 200
112
+ s1.should == 304
113
+ end
114
+
115
+ it "doesn't cache _all_docs too much when :cache => :with_body" do
116
+
117
+ @c.post('_all_docs', { 'keys' => %w[ d2 d3 ] }, :cache => :with_body)
118
+ s0 = @c.http.last_response.status
119
+ @c.post('_all_docs', { 'keys' => %w[ d0 d3 ] }, :cache => :with_body)
120
+ s1 = @c.http.last_response.status
121
+
122
+ s0.should == 200
123
+ s1.should == 200
124
+ end
125
+ end
126
+
127
+ describe '#query' do
128
+
129
+ it 'caches as expected with :keys' do
130
+
131
+ @c.query('my_test:my_view', :keys => %w[ door window ])
132
+ s0 = @c.http.last_response.status
133
+ @c.query('my_test:my_view', :keys => %w[ door window ])
134
+ s1 = @c.http.last_response.status
135
+
136
+ s0.should == 200
137
+ s1.should == 304
138
+ end
139
+
140
+ it 'does not cache when the :keys are different' do
141
+
142
+ @c.query('my_test:my_view', :keys => %w[ door window ])
143
+ s0 = @c.http.last_response.status
144
+ @c.query('my_test:my_view', :keys => %w[ door wall ])
145
+ s1 = @c.http.last_response.status
146
+
147
+ s0.should == 200
148
+ s1.should == 200
149
+ end
150
+ end
151
+
152
+ describe '#all' do
153
+
154
+ it 'caches as expected with :keys' do
155
+
156
+ @c.all(:keys => %w[ d0 d3 ])
157
+ s0 = @c.http.last_response.status
158
+ @c.all(:keys => %w[ d0 d3 ])
159
+ s1 = @c.http.last_response.status
160
+
161
+ s0.should == 200
162
+ s1.should == 304
163
+ end
164
+
165
+ it 'does not cache when the :keys are different' do
166
+
167
+ @c.all(:keys => %w[ d0 d3 ])
168
+ s0 = @c.http.last_response.status
169
+ @c.all(:keys => %w[ d1 d3 ])
170
+ s1 = @c.http.last_response.status
171
+
172
+ s0.should == 200
173
+ s1.should == 200
174
+ end
175
+ end
176
+ end
177
+ end
178
+