croudia 0.0.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/README.md +31 -14
- data/Rakefile +11 -11
- data/croudia.gemspec +10 -8
- data/lib/croudia/api/favorites.rb +43 -0
- data/lib/croudia/api/oauth.rb +32 -0
- data/lib/croudia/api/statuses.rb +55 -0
- data/lib/croudia/api/timelines.rb +57 -0
- data/lib/croudia/base.rb +44 -0
- data/lib/croudia/client.rb +64 -0
- data/lib/croudia/configurable.rb +39 -0
- data/lib/croudia/creatable.rb +9 -0
- data/lib/croudia/default.rb +63 -0
- data/lib/croudia/ext/openssl.rb +19 -0
- data/lib/croudia/identity.rb +22 -39
- data/lib/croudia/status.rb +26 -0
- data/lib/croudia/user.rb +12 -43
- data/lib/croudia/version.rb +1 -1
- data/lib/croudia.rb +21 -12
- data/spec/croudia/api/favorites_spec.rb +35 -0
- data/spec/croudia/api/oauth_spec.rb +53 -0
- data/spec/croudia/api/statuses_spec.rb +73 -0
- data/spec/croudia/api/timelines_spec.rb +93 -0
- data/spec/croudia/base_spec.rb +27 -0
- data/spec/croudia/client_spec.rb +115 -0
- data/spec/croudia/identity_spec.rb +29 -65
- data/spec/croudia/status_spec.rb +30 -0
- data/spec/croudia/user_spec.rb +30 -43
- data/spec/croudia_spec.rb +48 -49
- data/spec/fixtures/access_token.json +6 -0
- data/spec/fixtures/status.json +1 -0
- data/spec/fixtures/timeline.json +1 -0
- data/spec/helper.rb +49 -32
- metadata +80 -84
- data/lib/croudia/api.rb +0 -5
- data/lib/croudia/error.rb +0 -5
- data/lib/croudia/scraper/friendships.rb +0 -72
- data/lib/croudia/scraper/login.rb +0 -42
- data/lib/croudia/scraper/parser/users.rb +0 -59
- data/lib/croudia/scraper/parser/voices.rb +0 -32
- data/lib/croudia/scraper/parser.rb +0 -13
- data/lib/croudia/scraper/users.rb +0 -20
- data/lib/croudia/scraper/voices.rb +0 -59
- data/lib/croudia/scraper.rb +0 -63
- data/lib/croudia/voice.rb +0 -21
- data/spec/croudia/api_spec.rb +0 -7
- data/spec/croudia/error_spec.rb +0 -13
- data/spec/croudia/scraper/friendships_spec.rb +0 -115
- data/spec/croudia/scraper/login_spec.rb +0 -137
- data/spec/croudia/scraper/parser/users_spec.rb +0 -292
- data/spec/croudia/scraper/parser/voices_spec.rb +0 -119
- data/spec/croudia/scraper/users_spec.rb +0 -78
- data/spec/croudia/scraper/voices_spec.rb +0 -178
- data/spec/croudia/scraper_spec.rb +0 -120
- data/spec/croudia/version_spec.rb +0 -7
- data/spec/croudia/voice_spec.rb +0 -16
- data/spec/fixtures/follow_request.html +0 -69
- data/spec/fixtures/follower_wktk.html +0 -89
- data/spec/fixtures/following_wktk.html +0 -89
- data/spec/fixtures/user_wktk1.html +0 -72
- data/spec/fixtures/user_wktk2.html +0 -75
- data/spec/fixtures/user_wktk3.html +0 -83
- data/spec/fixtures/voices_reply_list.html +0 -55
- data/spec/fixtures/voices_timeline.html +0 -60
- data/spec/fixtures/voices_written.html +0 -20
data/lib/croudia/user.rb
CHANGED
@@ -1,43 +1,12 @@
|
|
1
|
-
require 'croudia/
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
alias profile_image avatar
|
14
|
-
alias description self_introduction
|
15
|
-
alias voice_count voices_count
|
16
|
-
alias statuses_count voices_count
|
17
|
-
alias status_count voices_count
|
18
|
-
alias updates_count voices_count
|
19
|
-
alias update_count voices_count
|
20
|
-
alias followings_count following_count
|
21
|
-
alias friends_count following_count
|
22
|
-
alias friend_count following_count
|
23
|
-
alias follower_count followers_count
|
24
|
-
alias location position
|
25
|
-
alias url user_url
|
26
|
-
alias favorited_count favodia
|
27
|
-
alias favourited_count favodia
|
28
|
-
alias spreaded_count spreadia
|
29
|
-
alias following? following
|
30
|
-
alias followed_by? followed_by
|
31
|
-
|
32
|
-
def initialize(*args)
|
33
|
-
super
|
34
|
-
@id = username
|
35
|
-
@spreadia = spreadia.to_i if spreadia
|
36
|
-
@favodia = favodia.to_i if favodia
|
37
|
-
end
|
38
|
-
|
39
|
-
def to_s
|
40
|
-
username
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
1
|
+
require 'croudia/creatable'
|
2
|
+
require 'croudia/identity'
|
3
|
+
|
4
|
+
module Croudia
|
5
|
+
class User < Croudia::Identity
|
6
|
+
include Croudia::Creatable
|
7
|
+
|
8
|
+
attr_reader :description, :favorites_count, :follow_request_sent,
|
9
|
+
:followers_count, :fruends_count, :location, :name, :profile_image_url_https,
|
10
|
+
:screen_name, :statuses_count, :url
|
11
|
+
end
|
12
|
+
end
|
data/lib/croudia/version.rb
CHANGED
data/lib/croudia.rb
CHANGED
@@ -1,23 +1,32 @@
|
|
1
|
-
require 'croudia/
|
1
|
+
require 'croudia/client'
|
2
|
+
require 'croudia/configurable'
|
3
|
+
require 'croudia/version'
|
2
4
|
|
3
5
|
module Croudia
|
4
6
|
class << self
|
5
|
-
|
7
|
+
include Croudia::Configurable
|
8
|
+
|
9
|
+
# Delegate to a Croudia::Client
|
6
10
|
#
|
7
|
-
# @return [Croudia::
|
8
|
-
def
|
9
|
-
|
11
|
+
# @return [Croudia::Client]
|
12
|
+
def client
|
13
|
+
if !@client || @client.hash != options.hash
|
14
|
+
@client = Croudia::Client.new
|
15
|
+
end
|
16
|
+
@client
|
10
17
|
end
|
11
|
-
alias new scraper
|
12
|
-
alias client scraper
|
13
18
|
|
14
|
-
def
|
15
|
-
|
16
|
-
scraper.send(name, *args, &block)
|
19
|
+
def respond_to?(*args)
|
20
|
+
super || client.respond_to?(*args)
|
17
21
|
end
|
18
22
|
|
19
|
-
|
20
|
-
|
23
|
+
private
|
24
|
+
|
25
|
+
def method_missing(name, *args, &block)
|
26
|
+
return super unless client.respond_to?(name)
|
27
|
+
client.send(name, *args, &block)
|
21
28
|
end
|
22
29
|
end
|
23
30
|
end
|
31
|
+
|
32
|
+
Croudia.setup
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Croudia::API::Favorites do
|
4
|
+
before do
|
5
|
+
@client = Croudia::Client.new
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '#favorite' do
|
9
|
+
before do
|
10
|
+
stub_post('/favorites/create/1234.json').to_return(
|
11
|
+
body: fixture(:status),
|
12
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'requests the correct resource' do
|
17
|
+
@client.favorite(1234)
|
18
|
+
expect(a_post('/favorites/create/1234.json')).to have_been_made
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#unfavorite' do
|
23
|
+
before do
|
24
|
+
stub_delete('/favorites/destroy/1234.json').to_return(
|
25
|
+
body: fixture(:status),
|
26
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'requests the correct resource' do
|
31
|
+
@client.unfavorite(1234)
|
32
|
+
expect(a_delete('/favorites/destroy/1234.json')).to have_been_made
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
require 'helper'
|
3
|
+
require 'uri'
|
4
|
+
|
5
|
+
describe Croudia::API::OAuth do
|
6
|
+
before do
|
7
|
+
options = { client_id: 'cid-value', client_secret: 'cs-value' }
|
8
|
+
@client = Croudia::Client.new(options)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#authorize_url' do
|
12
|
+
it 'returns the correct url' do
|
13
|
+
uri = URI.parse(@client.authorize_url)
|
14
|
+
expect(uri.path).to eq '/oauth/authorize'
|
15
|
+
expect(CGI.parse(uri.query)).to eq({
|
16
|
+
'response_type' => ['code'],
|
17
|
+
'client_id' => ['cid-value'],
|
18
|
+
})
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'does not include the client_secret in URL' do
|
22
|
+
url = @client.authorize_url
|
23
|
+
expect(url).not_to include('cs-value')
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'includes argument hash to the URL' do
|
27
|
+
url = @client.authorize_url(hoge: 'fuga', foo: :bar)
|
28
|
+
query = CGI.parse(URI.parse(url).query)
|
29
|
+
expect(query['hoge']).to include('fuga')
|
30
|
+
expect(query['foo']).to include('bar')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#get_access_token' do
|
35
|
+
before do
|
36
|
+
stub_post('/oauth/token').to_return(
|
37
|
+
body: fixture(:access_token),
|
38
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'requests the correct resource' do
|
43
|
+
@client.get_access_token(code: 'code-value')
|
44
|
+
expect(a_post('/oauth/token').with(
|
45
|
+
body: {
|
46
|
+
code: 'code-value',
|
47
|
+
grant_type: 'authorization_code',
|
48
|
+
client_id: 'cid-value',
|
49
|
+
client_secret: 'cs-value',
|
50
|
+
})).to have_been_made
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Croudia::API::Statuses do
|
4
|
+
before do
|
5
|
+
@client = Croudia::Client.new
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '#update' do
|
9
|
+
before do
|
10
|
+
stub_post('/statuses/update.json').with(
|
11
|
+
body: {
|
12
|
+
status: 'Hello',
|
13
|
+
in_reply_to_status_id: '1234',
|
14
|
+
}
|
15
|
+
).to_return(
|
16
|
+
body: fixture(:status),
|
17
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'when text is passed as a string' do
|
22
|
+
it 'requests the correct resource' do
|
23
|
+
@client.update('Hello', in_reply_to_status_id: 1234)
|
24
|
+
expect(a_post('/statuses/update.json').with(
|
25
|
+
body: {
|
26
|
+
status: 'Hello',
|
27
|
+
in_reply_to_status_id: '1234',
|
28
|
+
}
|
29
|
+
)).to have_been_made
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when text is passed as a value of hash' do
|
34
|
+
it 'requests the correct resource' do
|
35
|
+
@client.update(status: 'Hello', in_reply_to_status_id: 1234)
|
36
|
+
expect(a_post('/statuses/update.json').with(
|
37
|
+
body: {
|
38
|
+
status: 'Hello',
|
39
|
+
in_reply_to_status_id: '1234',
|
40
|
+
}
|
41
|
+
)).to have_been_made
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#destroy_status' do
|
47
|
+
before do
|
48
|
+
stub_post('/statuses/destroy/1234.json').to_return(
|
49
|
+
body: fixture(:status),
|
50
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
51
|
+
)
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'requests the correct resource' do
|
55
|
+
@client.destroy_status(1234)
|
56
|
+
expect(a_post('/statuses/destroy/1234.json')).to have_been_made
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe '#status' do
|
61
|
+
before do
|
62
|
+
stub_get('/statuses/show/1234.json').to_return(
|
63
|
+
body: fixture(:status),
|
64
|
+
header: { content_type: 'application/json; charset=utf-8' }
|
65
|
+
)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'requests the correct resource' do
|
69
|
+
@client.status(1234)
|
70
|
+
expect(a_get('/statuses/show/1234.json')).to have_been_made
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Croudia::API::Timelines do
|
4
|
+
before do
|
5
|
+
@client = Croudia::Client.new
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '#public_timeline' do
|
9
|
+
before do
|
10
|
+
stub_get('/statuses/public_timeline.json').to_return(
|
11
|
+
body: fixture(:timeline),
|
12
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'requests the correct resource' do
|
17
|
+
@client.public_timeline
|
18
|
+
expect(a_get('/statuses/public_timeline.json')).to have_been_made
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#home_timeline' do
|
23
|
+
before do
|
24
|
+
stub_get('/statuses/home_timeline.json').to_return(
|
25
|
+
body: fixture(:timeline),
|
26
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'requests the correct resource' do
|
31
|
+
@client.home_timeline
|
32
|
+
expect(a_get('/statuses/home_timeline.json')).to have_been_made
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#user_timeline' do
|
37
|
+
context 'without a screen_name' do
|
38
|
+
it 'is not supported' do
|
39
|
+
expect { @client.user_timeline }.to raise_error ArgumentError
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'with a screen_name (string)' do
|
44
|
+
before do
|
45
|
+
stub_get('/statuses/user_timeline.json').with(
|
46
|
+
query: { screen_name: 'wktk' }
|
47
|
+
).to_return(
|
48
|
+
body: fixture(:timeline),
|
49
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'requests the correct resource with the screen_name passed' do
|
54
|
+
@client.user_timeline('wktk')
|
55
|
+
expect(a_get('/statuses/user_timeline.json').with(
|
56
|
+
query: { screen_name: 'wktk' }
|
57
|
+
)).to have_been_made
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'with a user_id (integer)' do
|
62
|
+
before do
|
63
|
+
stub_get('/statuses/user_timeline.json').with(
|
64
|
+
query: { user_id: 1234 }
|
65
|
+
).to_return(
|
66
|
+
body: fixture(:timeline),
|
67
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
68
|
+
)
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'requests the correct resource with the user_id passed' do
|
72
|
+
@client.user_timeline(1234)
|
73
|
+
expect(a_get('/statuses/user_timeline.json').with(
|
74
|
+
query: { user_id: 1234 }
|
75
|
+
)).to have_been_made
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe '#mentions' do
|
81
|
+
before do
|
82
|
+
stub_get('/statuses/mentions.json').to_return(
|
83
|
+
body: fixture(:timeline),
|
84
|
+
headers: { content_type: 'application/json; charset=utf-8' }
|
85
|
+
)
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'requests the correct resource' do
|
89
|
+
@client.mentions
|
90
|
+
expect(a_get('/statuses/mentions.json')).to have_been_made
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Croudia::Base do
|
4
|
+
before do
|
5
|
+
@base = Croudia::Base.new(id: 1)
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '#[]' do
|
9
|
+
it 'calls methods using [] with symbol' do
|
10
|
+
expect(@base[:object_id]).to be_an Integer
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'calls methods using [] with string' do
|
14
|
+
expect(@base['object_id']).to be_an Integer
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'returns nil for missing method' do
|
18
|
+
expect(@base[:a_missing_method_hoge]).to be_nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#attrs' do
|
23
|
+
it 'returns a hash of attributes' do
|
24
|
+
expect(@base.attrs).to eq({id: 1})
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Croudia::Client do
|
4
|
+
context 'with module counfiguration' do
|
5
|
+
before do
|
6
|
+
Croudia.configure do |config|
|
7
|
+
Croudia::Configurable.keys.each do |key|
|
8
|
+
config.send("#{key}=", key)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
after do
|
14
|
+
Croudia.reset!
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'inherits the module configuration' do
|
18
|
+
client = Croudia::Client.new
|
19
|
+
Croudia::Configurable.keys.each do |key|
|
20
|
+
expect(client.instance_variable_get(:"@#{key}")).to eq key
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'with class configuration' do
|
26
|
+
before do
|
27
|
+
@configuration = {
|
28
|
+
connection_options: { timeout: 10 },
|
29
|
+
client_id: 'CK',
|
30
|
+
client_secret: 'CS',
|
31
|
+
endpoint: 'http://twitter.com',
|
32
|
+
middleware: Proc.new { },
|
33
|
+
access_token: 'AT',
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'during initialization' do
|
38
|
+
it 'overrides the modue configuration' do
|
39
|
+
client = Croudia::Client.new(@configuration)
|
40
|
+
Croudia::Configurable.keys.each do |key|
|
41
|
+
expect(client.instance_variable_get(:"@#{key}")).to eq @configuration[key]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'after initialization' do
|
47
|
+
it 'overrides the module configuration after initialization' do
|
48
|
+
client = Croudia::Client.new
|
49
|
+
client.configure do |config|
|
50
|
+
@configuration.each do |key, value|
|
51
|
+
config.send("#{key}=", value)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
Croudia::Configurable.keys.each do |key|
|
55
|
+
expect(client.instance_variable_get(:"@#{key}")).to eq @configuration[key]
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#delete' do
|
62
|
+
before do
|
63
|
+
stub_delete('/delete').with(query: { deleted: 'object' })
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'allows custom delete requests' do
|
67
|
+
Croudia::Client.new.delete('/delete', { deleted: 'object' })
|
68
|
+
expect(a_delete('/delete').with(
|
69
|
+
query: { deleted: 'object' }
|
70
|
+
)).to have_been_made
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe '#get' do
|
75
|
+
before do
|
76
|
+
stub_get('/get').with(query: { hoge: 'fuga' })
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'allows custom get requests' do
|
80
|
+
Croudia::Client.new.get('/get', { hoge: 'fuga' })
|
81
|
+
expect(a_get('/get').with(
|
82
|
+
query: { hoge: 'fuga'}
|
83
|
+
)).to have_been_made
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe '#post' do
|
88
|
+
before do
|
89
|
+
stub_post('/post').with(body: { posted: 'object' })
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'allows custom post requests' do
|
93
|
+
Croudia::Client.new.post('/post', { posted: 'object' })
|
94
|
+
expect(a_post('/post').with(
|
95
|
+
body: { posted: 'object' }
|
96
|
+
)).to have_been_made
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe '#put' do
|
101
|
+
before do
|
102
|
+
stub_put('/put').with(body: { updated: 'object'})
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'allows custom delete requests' do
|
106
|
+
Croudia::Client.new.put('/put', { updated: 'object' })
|
107
|
+
expect(a_put('/put').with(
|
108
|
+
body: { updated: 'object' }
|
109
|
+
)).to have_been_made
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe '#request' do
|
114
|
+
end
|
115
|
+
end
|
@@ -1,65 +1,29 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
describe Croudia::Identity do
|
4
|
-
describe '#initialize' do
|
5
|
-
it '
|
6
|
-
Croudia::Identity.new
|
7
|
-
end
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
it '
|
18
|
-
Croudia::Identity.new(:
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
it 'returns
|
24
|
-
|
25
|
-
|
26
|
-
(
|
27
|
-
end
|
28
|
-
|
29
|
-
|
30
|
-
obj1 = Croudia::Identity.new(:id => '1', :username => 'wktk')
|
31
|
-
obj2 = Croudia::Identity.new(:id => '2', :username => 'wktk')
|
32
|
-
(obj1 == obj2).should be_false
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'returns false when classes do not match' do
|
36
|
-
obj1 = Croudia::Identity.new(:id => '1')
|
37
|
-
obj2 = { :id => '1' }
|
38
|
-
(obj1 == obj2).should be_false
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe '#[]' do
|
43
|
-
it 'returns the same name instance variable' do
|
44
|
-
Croudia::Identity.new(:foo => 'bar')[:foo].should eq 'bar'
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe '#id' do
|
49
|
-
it 'returns @id, not object_id' do
|
50
|
-
identity = Croudia::Identity.new(:id => '1')
|
51
|
-
identity.id.should_not eq identity.object_id
|
52
|
-
identity.id.should eq identity.instance_variable_get('@id')
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe '#method_missing' do
|
57
|
-
it 'returns the same name instance variable if set' do
|
58
|
-
Croudia::Identity.new(:foo => 'bar').foo.should eq 'bar'
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'returns nil if not set' do
|
62
|
-
Croudia::Identity.new(:foo => 'bar').bar.should be_nil
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Croudia::Identity do
|
4
|
+
describe '#initialize' do
|
5
|
+
it 'raises ArguentError if :id attr is missing' do
|
6
|
+
expect { Croudia::Identity.new }.to raise_error ArgumentError
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#==' do
|
11
|
+
it 'returns true when objects IDs are the same' do
|
12
|
+
one = Croudia::Identity.new(id: 1, text: 'hoge')
|
13
|
+
two = Croudia::Identity.new(id: 1, text: 'fuga')
|
14
|
+
expect(one == two).to be_true
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'returns false when objects IDs are different' do
|
18
|
+
one = Croudia::Identity.new(id: 1)
|
19
|
+
two = Croudia::Identity.new(id: 2)
|
20
|
+
expect(one == two).to be_false
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'returns false when classes are different' do
|
24
|
+
one = Croudia::Identity.new(id: 1)
|
25
|
+
two = Croudia::Base.new(id: 1)
|
26
|
+
expect(one == two).to be_false
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Croudia::Status do
|
4
|
+
describe '#==' do
|
5
|
+
it 'returns true when objects IDs are the same' do
|
6
|
+
status = Croudia::Status.new(id: 1, text: 'hoge')
|
7
|
+
other = Croudia::Status.new(id: 1, text: 'fuga')
|
8
|
+
expect(status == other).to be_true
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns false when objects IDs are different' do
|
12
|
+
status = Croudia::Status.new(id: 1)
|
13
|
+
other = Croudia::Status.new(id: 2)
|
14
|
+
expect(status == other).to be_false
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'returns false when classes are different' do
|
18
|
+
status = Croudia::Status.new(id: 1)
|
19
|
+
other = Croudia::Identity.new(id: 1)
|
20
|
+
expect(status == other).to be_false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#created_at' do
|
25
|
+
it 'returns a Time' do
|
26
|
+
status = Croudia::Status.new(id: 3, created_at: 'Mon, 08 Jul 2013 01:23:45 +0900')
|
27
|
+
expect(status.created_at).to be_a Time
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|