tumblr-ruby 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,154 @@
1
+ require "spec_helper"
2
+
3
+ describe Tumblr::Client::User do
4
+
5
+ let (:client) do
6
+ Tumblr::Client.new do |client|
7
+ client.consumer_key = CONSUMER_KEY
8
+ client.consumer_secret = CONSUMER_SECRET
9
+ client.oauth_token = OAUTH_TOKEN
10
+ client.oauth_token_secret = OAUTH_TOKEN_SECRET
11
+ end
12
+ end
13
+
14
+ describe "#user_info" do
15
+
16
+ before do
17
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/user\/info*/).to_return(:status => 200, :body => fixture('user_info.json'), :headers => {"Content-Type" => "application/json"})
18
+ end
19
+
20
+ context "making request" do
21
+ it "should make request to correct url" do
22
+ client.stubs(:get).returns('')
23
+ client.expects(:get).with{ |arg| arg =~ /\/user\/info/}.returns('')
24
+ client.user_info
25
+ end
26
+ end
27
+
28
+ context "required params present" do
29
+ subject { client.user_info}
30
+ it { should_not be_nil }
31
+ its("response.user.name"){should eq("derekg")}
32
+ end
33
+ end
34
+
35
+ describe "#dashboard" do
36
+
37
+ before do
38
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/user\/dashboard*/).to_return(:status => 200, :body => fixture('dashboard.json'), :headers => {"Content-Type" => "application/json"})
39
+ end
40
+
41
+ context "making request" do
42
+ it "should make request to correct url" do
43
+ client.stubs(:get).returns('')
44
+ client.expects(:get).with{ |arg| arg =~ /\/user\/dashboard/}.returns('')
45
+ client.dashboard
46
+ end
47
+ end
48
+
49
+ context "required params present" do
50
+ subject { client.dashboard}
51
+ it { should_not be_nil }
52
+ its("response.posts.size"){should eq(2)}
53
+ its("response.posts.first.blog_name"){should eq("blog1")}
54
+ its("response.posts.last.blog_name"){should eq("blog2")}
55
+ end
56
+ end
57
+
58
+ describe "#likes" do
59
+
60
+ before do
61
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/user\/likes*/).to_return(:status => 200, :body => fixture('likes.json'), :headers => {"Content-Type" => "application/json"})
62
+ end
63
+
64
+ context "making request" do
65
+ it "should make request to correct url" do
66
+ client.stubs(:get).returns('')
67
+ client.expects(:get).with{ |arg| arg =~ /\/user\/likes/}.returns('')
68
+ client.likes
69
+ end
70
+ end
71
+
72
+ context "required params present" do
73
+ subject { client.likes}
74
+ it { should_not be_nil }
75
+ its("response.liked_post.size"){should eq(2)}
76
+ its("response.liked_count"){should eq(2)}
77
+ its("response.liked_post.first.blog_name"){should eq("blog1")}
78
+ its("response.liked_post.last.blog_name"){should eq("blog2")}
79
+ end
80
+ end
81
+
82
+ describe "#following" do
83
+
84
+ before do
85
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/user\/following*/).to_return(:status => 200, :body => fixture('following.json'), :headers => {"Content-Type" => "application/json"})
86
+ end
87
+
88
+ context "making request" do
89
+ it "should make request to correct url" do
90
+ client.stubs(:get).returns('')
91
+ client.expects(:get).with{ |arg| arg =~ /\/user\/following/}.returns('')
92
+ client.following
93
+ end
94
+ end
95
+
96
+ context "required params present" do
97
+ subject { client.following}
98
+ it { should_not be_nil }
99
+ its("response.blogs.size"){should eq(2)}
100
+ its("response.total_blogs"){should eq(2)}
101
+ its("response.blogs.first.name"){should eq("david")}
102
+ its("response.blogs.last.name"){should eq("matthew")}
103
+ end
104
+ end
105
+
106
+ describe "#follow" do
107
+
108
+ context "making request" do
109
+ it "should make request to correct url" do
110
+ client.stubs(:post).returns('')
111
+ client.expects(:post).with{ |arg| arg =~ /\/user\/follow/}.returns('')
112
+ client.follow('test.tumblr.com')
113
+ end
114
+ end
115
+
116
+ end
117
+
118
+ describe "#unfollow" do
119
+
120
+ context "making request" do
121
+ it "should make request to correct url" do
122
+ client.stubs(:post).returns('')
123
+ client.expects(:post).with{ |arg| arg =~ /\/user\/unfollow/}.returns('')
124
+ client.unfollow('test.tumblr.com')
125
+ end
126
+ end
127
+
128
+ end
129
+
130
+ describe "#like" do
131
+
132
+ context "making request" do
133
+ it "should make request to correct url" do
134
+ client.stubs(:post).returns('')
135
+ client.expects(:post).with{ |arg| arg =~ /\/user\/like/}.returns('')
136
+ client.like('1234567', 'abcdf')
137
+ end
138
+ end
139
+
140
+ end
141
+
142
+ describe "#unlike" do
143
+
144
+ context "making request" do
145
+ it "should make request to correct url" do
146
+ client.stubs(:post).returns('')
147
+ client.expects(:post).with{ |arg| arg =~ /\/user\/unlike/}.returns('')
148
+ client.unlike('1234567', 'abcdf')
149
+ end
150
+ end
151
+
152
+ end
153
+ end
154
+
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tumblr::Client do
4
+ context "creating new client" do
5
+ subject do
6
+ Tumblr::Client.new do |client|
7
+ client.consumer_key = CONSUMER_KEY
8
+ client.consumer_secret = CONSUMER_SECRET
9
+ client.oauth_token = OAUTH_TOKEN
10
+ client.oauth_token_secret = OAUTH_TOKEN_SECRET
11
+ end
12
+ end
13
+ it {should_not be_nil}
14
+ its(:consumer_key){ should == CONSUMER_KEY }
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tumblr::Connection do
4
+ let(:client) { Tumblr::Client.new }
5
+
6
+ describe "#connection" do
7
+ subject { client.send(:connection) }
8
+ it { should be_an_instance_of(OAuth::AccessToken)}
9
+ its('consumer.options.values') { should include(Tumblr::API_ENDPOINT) }
10
+ end
11
+ end
@@ -0,0 +1,111 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tumblr::Request do
4
+
5
+ let(:client) { Tumblr::Client.new }
6
+
7
+ describe "#get" do
8
+
9
+ it "should call make_request " do
10
+ client.stubs(:make_request).returns('')
11
+ client.expects(:make_request).with(:get,'/blog/test.tumblr.com/info').returns('')
12
+ client.get('/blog/test.tumblr.com/info')
13
+ end
14
+ end
15
+
16
+ describe "#post" do
17
+
18
+ it "should call make_request " do
19
+ client.stubs(:make_request).returns('')
20
+ client.expects(:make_request).with(:post,'/blog/test.tumblr.com/info').returns('')
21
+ client.post('/blog/test.tumblr.com/info')
22
+ end
23
+ end
24
+
25
+ describe "#put" do
26
+
27
+ it "should call make_request " do
28
+ client.stubs(:make_request).returns('')
29
+ client.expects(:make_request).with(:put,'/blog/test.tumblr.com/info').returns('')
30
+ client.put('/blog/test.tumblr.com/info')
31
+ end
32
+ end
33
+
34
+ describe "#delete" do
35
+
36
+ it "should call make_request " do
37
+ client.stubs(:make_request).returns('')
38
+ client.expects(:make_request).with(:delete,'/blog/test.tumblr.com/info').returns('')
39
+ client.delete('/blog/test.tumblr.com/info')
40
+ end
41
+ end
42
+
43
+ describe "#make_request" do
44
+
45
+ context "error code was returned" do
46
+
47
+ context "400" do
48
+
49
+ before do
50
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 400, :body => '', :headers => {})
51
+ end
52
+ subject { client }
53
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::BadRequestError)}
54
+ end
55
+
56
+ context "401" do
57
+
58
+ before do
59
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 401, :body => '', :headers => {})
60
+ end
61
+ subject { client }
62
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::UnauthorizedError)}
63
+ end
64
+
65
+ context "403" do
66
+
67
+ before do
68
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 403, :body => '', :headers => {})
69
+ end
70
+ subject { client }
71
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::ForbiddenError)}
72
+ end
73
+
74
+ context "404" do
75
+
76
+ before do
77
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 404, :body => '', :headers => {})
78
+ end
79
+ subject { client }
80
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::NotFoundError)}
81
+ end
82
+
83
+ context "500" do
84
+
85
+ before do
86
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 500, :body => '', :headers => {})
87
+ end
88
+ subject { client }
89
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::InternalServerError)}
90
+ end
91
+
92
+ context "502" do
93
+
94
+ before do
95
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 502, :body => '', :headers => {})
96
+ end
97
+ subject { client }
98
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::BadGatewayError)}
99
+ end
100
+
101
+ context "503" do
102
+
103
+ before do
104
+ stub_request(:get, /http:\/\/api\.tumblr\.com\/v2\/blog\/test\.tumblr\.com\/info*/).to_return(:status => 503, :body => '', :headers => {})
105
+ end
106
+ subject { client }
107
+ it { expect{client.get("/#{Tumblr::API_VERSION}/blog/test.tumblr.com/info")}.to raise_error(Tumblr::Error::ServiceUnavailableError)}
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,100 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "tumblr"
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Max Golovnia"]
12
+ s.date = "2012-01-18"
13
+ s.description = "A Ruby wrapper for Tumblr REST API"
14
+ s.email = "mgolovnia@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ "Gemfile",
22
+ "Gemfile.lock",
23
+ "LICENSE.txt",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "lib/tumblr.rb",
28
+ "lib/tumblr/client.rb",
29
+ "lib/tumblr/client/blog.rb",
30
+ "lib/tumblr/client/user.rb",
31
+ "lib/tumblr/connection.rb",
32
+ "lib/tumblr/error.rb",
33
+ "lib/tumblr/request.rb",
34
+ "spec/fixtures/avatar.json",
35
+ "spec/fixtures/blog_info.json",
36
+ "spec/fixtures/dashboard.json",
37
+ "spec/fixtures/followers.json",
38
+ "spec/fixtures/following.json",
39
+ "spec/fixtures/image.jpg",
40
+ "spec/fixtures/likes.json",
41
+ "spec/fixtures/posts.json",
42
+ "spec/fixtures/test.avi",
43
+ "spec/fixtures/test.mp4",
44
+ "spec/fixtures/user_info.json",
45
+ "spec/spec_helper.rb",
46
+ "spec/tumblr/client/blog_spec.rb",
47
+ "spec/tumblr/client/user_spec.rb",
48
+ "spec/tumblr/client_spec.rb",
49
+ "spec/tumblr/connection_spec.rb",
50
+ "spec/tumblr/request_spec.rb"
51
+ ]
52
+ s.homepage = "http://github.com/mgolovnia/tumblr"
53
+ s.licenses = ["MIT"]
54
+ s.require_paths = ["lib"]
55
+ s.rubygems_version = "1.8.10"
56
+ s.summary = "A Ruby wrapper for Tumblr REST API"
57
+
58
+ if s.respond_to? :specification_version then
59
+ s.specification_version = 3
60
+
61
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
62
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
63
+ s.add_runtime_dependency(%q<oauth>, [">= 0"])
64
+ s.add_runtime_dependency(%q<hashie>, [">= 0"])
65
+ s.add_runtime_dependency(%q<rack>, [">= 0"])
66
+ s.add_development_dependency(%q<webmock>, [">= 0"])
67
+ s.add_development_dependency(%q<rspec>, [">= 0"])
68
+ s.add_development_dependency(%q<mocha>, [">= 0"])
69
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
70
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
71
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
72
+ s.add_development_dependency(%q<rcov>, [">= 0"])
73
+ else
74
+ s.add_dependency(%q<activesupport>, [">= 0"])
75
+ s.add_dependency(%q<oauth>, [">= 0"])
76
+ s.add_dependency(%q<hashie>, [">= 0"])
77
+ s.add_dependency(%q<rack>, [">= 0"])
78
+ s.add_dependency(%q<webmock>, [">= 0"])
79
+ s.add_dependency(%q<rspec>, [">= 0"])
80
+ s.add_dependency(%q<mocha>, [">= 0"])
81
+ s.add_dependency(%q<shoulda>, [">= 0"])
82
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
83
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
84
+ s.add_dependency(%q<rcov>, [">= 0"])
85
+ end
86
+ else
87
+ s.add_dependency(%q<activesupport>, [">= 0"])
88
+ s.add_dependency(%q<oauth>, [">= 0"])
89
+ s.add_dependency(%q<hashie>, [">= 0"])
90
+ s.add_dependency(%q<rack>, [">= 0"])
91
+ s.add_dependency(%q<webmock>, [">= 0"])
92
+ s.add_dependency(%q<rspec>, [">= 0"])
93
+ s.add_dependency(%q<mocha>, [">= 0"])
94
+ s.add_dependency(%q<shoulda>, [">= 0"])
95
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
96
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
97
+ s.add_dependency(%q<rcov>, [">= 0"])
98
+ end
99
+ end
100
+
metadata ADDED
@@ -0,0 +1,203 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tumblr-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Max Golovnia
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-18 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: &84594210 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *84594210
25
+ - !ruby/object:Gem::Dependency
26
+ name: oauth
27
+ requirement: &84572340 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *84572340
36
+ - !ruby/object:Gem::Dependency
37
+ name: hashie
38
+ requirement: &84568720 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *84568720
47
+ - !ruby/object:Gem::Dependency
48
+ name: rack
49
+ requirement: &84556030 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *84556030
58
+ - !ruby/object:Gem::Dependency
59
+ name: webmock
60
+ requirement: &84555520 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *84555520
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: &84554880 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *84554880
80
+ - !ruby/object:Gem::Dependency
81
+ name: mocha
82
+ requirement: &84553960 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *84553960
91
+ - !ruby/object:Gem::Dependency
92
+ name: shoulda
93
+ requirement: &84553350 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *84553350
102
+ - !ruby/object:Gem::Dependency
103
+ name: bundler
104
+ requirement: &84552690 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0.0
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *84552690
113
+ - !ruby/object:Gem::Dependency
114
+ name: jeweler
115
+ requirement: &84552250 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ version: 1.6.4
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *84552250
124
+ - !ruby/object:Gem::Dependency
125
+ name: rcov
126
+ requirement: &84551740 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: *84551740
135
+ description: A Ruby wrapper for Tumblr API
136
+ email: mgolovnia@gmail.com
137
+ executables: []
138
+ extensions: []
139
+ extra_rdoc_files:
140
+ - LICENSE.txt
141
+ - README.rdoc
142
+ files:
143
+ - .document
144
+ - Gemfile
145
+ - Gemfile.lock
146
+ - LICENSE.txt
147
+ - README.rdoc
148
+ - Rakefile
149
+ - VERSION
150
+ - lib/tumblr.rb
151
+ - lib/tumblr/client.rb
152
+ - lib/tumblr/client/blog.rb
153
+ - lib/tumblr/client/user.rb
154
+ - lib/tumblr/connection.rb
155
+ - lib/tumblr/error.rb
156
+ - lib/tumblr/request.rb
157
+ - spec/fixtures/avatar.json
158
+ - spec/fixtures/blog_info.json
159
+ - spec/fixtures/dashboard.json
160
+ - spec/fixtures/followers.json
161
+ - spec/fixtures/following.json
162
+ - spec/fixtures/image.jpg
163
+ - spec/fixtures/likes.json
164
+ - spec/fixtures/posts.json
165
+ - spec/fixtures/test.avi
166
+ - spec/fixtures/test.mp4
167
+ - spec/fixtures/user_info.json
168
+ - spec/spec_helper.rb
169
+ - spec/tumblr/client/blog_spec.rb
170
+ - spec/tumblr/client/user_spec.rb
171
+ - spec/tumblr/client_spec.rb
172
+ - spec/tumblr/connection_spec.rb
173
+ - spec/tumblr/request_spec.rb
174
+ - tumblr.gemspec
175
+ homepage: http://github.com/mgolovnia/tumblr
176
+ licenses:
177
+ - MIT
178
+ post_install_message:
179
+ rdoc_options: []
180
+ require_paths:
181
+ - lib
182
+ required_ruby_version: !ruby/object:Gem::Requirement
183
+ none: false
184
+ requirements:
185
+ - - ! '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ segments:
189
+ - 0
190
+ hash: 37141661
191
+ required_rubygems_version: !ruby/object:Gem::Requirement
192
+ none: false
193
+ requirements:
194
+ - - ! '>='
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ requirements: []
198
+ rubyforge_project:
199
+ rubygems_version: 1.8.10
200
+ signing_key:
201
+ specification_version: 3
202
+ summary: A Ruby wrapper for Tumblr API
203
+ test_files: []