jammed 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -0
- data/.rspec +1 -0
- data/.travis.yml +3 -0
- data/Gemfile +10 -0
- data/LICENSE +22 -0
- data/README.md +54 -0
- data/Rakefile +44 -0
- data/examples/basics.rb +60 -0
- data/lib/jammed/base.rb +182 -0
- data/lib/jammed/followers.rb +36 -0
- data/lib/jammed/following.rb +36 -0
- data/lib/jammed/jams.rb +34 -0
- data/lib/jammed/likes.rb +32 -0
- data/lib/jammed/people_search.rb +55 -0
- data/lib/jammed/person.rb +32 -0
- data/lib/jammed/popular_jams.rb +14 -0
- data/lib/jammed/suggested_people.rb +14 -0
- data/lib/jammed/user.rb +158 -0
- data/lib/jammed/version.rb +4 -0
- data/lib/jammed.rb +28 -0
- data/spec/jammed/base_spec.rb +90 -0
- data/spec/jammed/followers_spec.rb +55 -0
- data/spec/jammed/following_spec.rb +55 -0
- data/spec/jammed/jams_spec.rb +53 -0
- data/spec/jammed/likes_spec.rb +51 -0
- data/spec/jammed/people_search_spec.rb +79 -0
- data/spec/jammed/person_spec.rb +38 -0
- data/spec/jammed/popular_jams_spec.rb +23 -0
- data/spec/jammed/suggested_people_spec.rb +18 -0
- data/spec/jammed/user_spec.rb +205 -0
- data/spec/sample_responses/followers.json +1495 -0
- data/spec/sample_responses/followers_affinity.json +1495 -0
- data/spec/sample_responses/followers_date.json +1281 -0
- data/spec/sample_responses/followers_name.json +0 -0
- data/spec/sample_responses/following.json +1495 -0
- data/spec/sample_responses/following_affinity.json +1495 -0
- data/spec/sample_responses/following_date.json +1406 -0
- data/spec/sample_responses/following_name.json +1406 -0
- data/spec/sample_responses/jams.json +620 -0
- data/spec/sample_responses/jams_past.json +602 -0
- data/spec/sample_responses/likes.json +1106 -0
- data/spec/sample_responses/likes_current.json +224 -0
- data/spec/sample_responses/likes_past.json +1106 -0
- data/spec/sample_responses/person.json +44 -0
- data/spec/sample_responses/popular.json +364 -0
- data/spec/sample_responses/search_artist.json +1377 -0
- data/spec/sample_responses/search_name.json +55 -0
- data/spec/sample_responses/search_track.json +1333 -0
- data/spec/sample_responses/suggested_people.json +1427 -0
- data/spec/spec_helper.rb +18 -0
- metadata +189 -0
data/lib/jammed/user.rb
ADDED
@@ -0,0 +1,158 @@
|
|
1
|
+
module Jammed #:nodoc:
|
2
|
+
# Provides User objects for interacting with user-specific data
|
3
|
+
class User
|
4
|
+
|
5
|
+
# Each attr_accessor (except for :username) caches API data on first use in corresponding instance variable
|
6
|
+
attr_accessor :username, :followers, :following, :jams, :likes, :profile
|
7
|
+
|
8
|
+
# Creates a new Jammed::User object and assigns a username to @username
|
9
|
+
#
|
10
|
+
# ==== Attributes
|
11
|
+
#
|
12
|
+
# * +username+ - Username of user to make API calls with
|
13
|
+
#
|
14
|
+
# ==== Examples
|
15
|
+
#
|
16
|
+
# iftfom = Jammed::User.new('IFTFOM', '08972935872035')
|
17
|
+
def initialize(username, api_key)
|
18
|
+
@username = username
|
19
|
+
@api_key = api_key
|
20
|
+
end
|
21
|
+
|
22
|
+
def followers(opts={})
|
23
|
+
@followers ||= Jammed::Followers.followers(@username, @api_key, opts)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Clears cached Followers data with a fresh call to Jammed::Followers
|
27
|
+
#
|
28
|
+
# ==== Attributes
|
29
|
+
#
|
30
|
+
# * +opts+ - Options for ordering Followers data
|
31
|
+
#
|
32
|
+
# ==== Options
|
33
|
+
#
|
34
|
+
# * +:order+ - A symbol determining how the data is orderd like :date, :affinity, or :alpha
|
35
|
+
#
|
36
|
+
# ==== Examples
|
37
|
+
#
|
38
|
+
# user = Jammed::User.new('IFTFOM', '08972935872035')
|
39
|
+
# user.followers #returns all followers of IFTFOM
|
40
|
+
# user.followers(:order => :date) #reutrns IFTFOM's followers ordered by date
|
41
|
+
def followers!(opts={})
|
42
|
+
@followers = Jammed::Followers.followers(@username, @api_key, opts)
|
43
|
+
end
|
44
|
+
|
45
|
+
def following(opts={})
|
46
|
+
@following ||= Jammed::Following.following(@username, @api_key, opts)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Clears cached Following data with a fresh call to Jammed::Following
|
50
|
+
#
|
51
|
+
# ==== Attributes
|
52
|
+
#
|
53
|
+
# * +opts+ - Options for ordering Following data
|
54
|
+
#
|
55
|
+
# ==== Options
|
56
|
+
#
|
57
|
+
# * +:order+ - A symbol determining how the data is orderd like :date, :affinity, or :alpha
|
58
|
+
#
|
59
|
+
# ==== Examples
|
60
|
+
#
|
61
|
+
# user = Jammed::User.new('IFTFOM', '08972935872035')
|
62
|
+
# user.following #returns all followings of IFTFOM
|
63
|
+
# user.following(:order => :date) #returns IFTFOM's followings ordered by date
|
64
|
+
def following!(opts={})
|
65
|
+
@following = Jammed::Following.following(@username, @api_key, opts)
|
66
|
+
end
|
67
|
+
|
68
|
+
def jams(opts={})
|
69
|
+
@jams ||= Jammed::Jams.jams(@username, @api_key, opts)
|
70
|
+
end
|
71
|
+
|
72
|
+
# Clears cached Jams data with a fresh call to Jammed::Jams
|
73
|
+
#
|
74
|
+
# ==== Attributes
|
75
|
+
#
|
76
|
+
# * +opts+ - Options for which data is shown
|
77
|
+
#
|
78
|
+
# ==== Options
|
79
|
+
#
|
80
|
+
# * +:show+ - A symbol determining what data is shown like :past or :current
|
81
|
+
#
|
82
|
+
# ==== Examples
|
83
|
+
#
|
84
|
+
# user = Jammed::User.new('IFTFOM', '08972935872035')
|
85
|
+
# user.jams #returns all jams of IFTFOM
|
86
|
+
# user.jams(:show => :past) #returns IFTFOM's past jams
|
87
|
+
def jams!(opts={})
|
88
|
+
@jams = Jammed::Jams.jams(@username, @api_key, opts)
|
89
|
+
end
|
90
|
+
|
91
|
+
def likes(opts={})
|
92
|
+
@likes ||= Jammed::Likes.likes(@username, @api_key, opts)
|
93
|
+
end
|
94
|
+
|
95
|
+
# Clears cached Likes data with a fresh call to Jammed::Likes
|
96
|
+
#
|
97
|
+
# ==== Attributes
|
98
|
+
#
|
99
|
+
# * +opts+ - Options for which data is shown
|
100
|
+
#
|
101
|
+
# ==== Options
|
102
|
+
#
|
103
|
+
# * +:show+ - A symbol determining what data is shown like :past or :current
|
104
|
+
#
|
105
|
+
# ==== Examples
|
106
|
+
#
|
107
|
+
# user = Jammed::User.new('IFTFOM', '08972935872035')
|
108
|
+
# user.likes #returns all likes of IFTFOM
|
109
|
+
# user.likes(:show => :past) #returns IFTFOM's past likes
|
110
|
+
def likes!(opts={})
|
111
|
+
@likes = Jammed::Likes.likes(@username, @api_key, opts)
|
112
|
+
end
|
113
|
+
|
114
|
+
def profile
|
115
|
+
@profile ||= Jammed::Person.profile(@username, @api_key)
|
116
|
+
end
|
117
|
+
|
118
|
+
# Clears cached Person data with a fresh call to Jammed::Person
|
119
|
+
#
|
120
|
+
# ==== Examples
|
121
|
+
#
|
122
|
+
# user = Jammed::User.new('IFTFOM', '08972935872035')
|
123
|
+
# user.profile #returns entire profile of IFTFOM
|
124
|
+
def profile!
|
125
|
+
@profile = Jammed::Person.profile(@username, @api_key)
|
126
|
+
end
|
127
|
+
|
128
|
+
# Checks user's profile for attribute and returns value if attribute key is found.
|
129
|
+
#
|
130
|
+
# ==== Examples
|
131
|
+
#
|
132
|
+
# user = Jammed::User.new('IFTFOM', '08972935872035')
|
133
|
+
# user.name #returns 'IFTFOM'
|
134
|
+
# user.date_joined #uses js_namify to find 'dateJoined' key and returns date
|
135
|
+
def method_missing(name, *args, &block)
|
136
|
+
n = name.to_s.index('_') != nil ? js_namify(name.to_s) : name.to_s
|
137
|
+
|
138
|
+
profile.has_key?(n) ? profile[n] : super
|
139
|
+
end
|
140
|
+
|
141
|
+
# Converts Ruby styled method names to JavaScript's prefered style. Used by method_missing to generate dynamic attributes methods for user's profile.
|
142
|
+
#
|
143
|
+
# ==== Attributes
|
144
|
+
#
|
145
|
+
# * +name+ - Method name to be converted
|
146
|
+
#
|
147
|
+
# ==== Examples
|
148
|
+
#
|
149
|
+
# js_namify('date_joined') #returns 'dateJoined'
|
150
|
+
def js_namify(name)
|
151
|
+
x = []
|
152
|
+
name.split('_').each_with_index do |e, i|
|
153
|
+
i == 0 ? x << e.downcase : x << e.capitalize
|
154
|
+
end
|
155
|
+
x.join('')
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
data/lib/jammed.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
Dir[File.dirname(__FILE__) + '/jammed/*.rb'].each do |file|
|
3
|
+
require file
|
4
|
+
end
|
5
|
+
|
6
|
+
module Jammed
|
7
|
+
|
8
|
+
class Search #:nodoc:
|
9
|
+
include HTTParty
|
10
|
+
base_uri 'http://api.thisismyjam.com/1'
|
11
|
+
end
|
12
|
+
|
13
|
+
class << self
|
14
|
+
#Creates a Jammed::Base object for interacting with the API
|
15
|
+
#
|
16
|
+
# ==== Attributes
|
17
|
+
#
|
18
|
+
# * +api_key+ - Sets the API key to use for all calls made with object
|
19
|
+
# * +opts+ -Options hash. Does nothing at the moment.
|
20
|
+
#
|
21
|
+
# ==== Examples
|
22
|
+
#
|
23
|
+
# jammed = Jammed.new('987bcab01b929eb2c07877b224215c92')
|
24
|
+
def new(api_key='987bcab01b929eb2c07877b224215c92', opts={})
|
25
|
+
Jammed::Base.new(api_key, opts)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Jammed
|
4
|
+
describe Base do
|
5
|
+
|
6
|
+
let(:api_key) {'987bcab01b929eb2c07877b224215c92'}
|
7
|
+
let(:jammed) {Jammed::Base.new(api_key)}
|
8
|
+
let(:user) {'IFTFOM'}
|
9
|
+
|
10
|
+
describe "#initialize" do
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#followers" do
|
14
|
+
it "calls Jammed::Followers.followers" do
|
15
|
+
Jammed::Followers.should_receive(:followers)
|
16
|
+
jammed.followers(user)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#following" do
|
21
|
+
it "calls Jammed::Following.following" do
|
22
|
+
Jammed::Following.should_receive(:following)
|
23
|
+
jammed.following(user)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#jams" do
|
28
|
+
it "calls Jammed::Jams.jams" do
|
29
|
+
Jammed::Jams.should_receive(:jams)
|
30
|
+
jammed.jams(user)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "#likes" do
|
35
|
+
it "calls Jammed::Like.likes" do
|
36
|
+
Jammed::Likes.should_receive(:likes)
|
37
|
+
jammed.likes(user)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "#popular_jams" do
|
42
|
+
it "calls Jammed::PopularJams.popular_jams" do
|
43
|
+
Jammed::PopularJams.should_receive(:popular_jams)
|
44
|
+
jammed.popular_jams
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "#profile" do
|
49
|
+
it "calls Jammed::Person.profile" do
|
50
|
+
Jammed::Person.should_receive(:profile)
|
51
|
+
jammed.profile(user)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "#search_name" do
|
56
|
+
it "calls Jammed::PeopleSearch.search_name" do
|
57
|
+
Jammed::PeopleSearch.should_receive(:search_name)
|
58
|
+
jammed.search_name(user)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "#search_artist" do
|
63
|
+
it "calls Jammed::PeopleSearch.search_artist" do
|
64
|
+
Jammed::PeopleSearch.should_receive(:search_artist)
|
65
|
+
jammed.search_artist('track')
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "#search_track" do
|
70
|
+
it "calls Jammed::PeopleSearch.search_track" do
|
71
|
+
Jammed::PeopleSearch.should_receive(:search_track)
|
72
|
+
jammed.search_track('artist', 'track')
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#suggested_people" do
|
77
|
+
it "calls Jammed::SuggestedPeople.people" do
|
78
|
+
Jammed::SuggestedPeople.should_receive(:people)
|
79
|
+
jammed.suggested_people
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe "#user" do
|
84
|
+
it "calls Jammed::User.new" do
|
85
|
+
Jammed::User.should_receive(:new).with(user, api_key)
|
86
|
+
jammed.user(user)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Jammed
|
4
|
+
describe Followers do
|
5
|
+
|
6
|
+
let(:api_key) {'987bcab01b929eb2c07877b224215c92'}
|
7
|
+
|
8
|
+
describe ".followers" do
|
9
|
+
before do
|
10
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/followers.json?key=987bcab01b929eb2c07877b224215c92", :followers)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "gets followers from the api" do
|
14
|
+
Jammed::Followers.followers('IFTFOM', api_key).should_not be_nil
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe ".followers(:order => :date)" do
|
19
|
+
before do
|
20
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/followers.json?key=987bcab01b929eb2c07877b224215c92&order=followedDate", :followers_date)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "can order followers by date" do
|
24
|
+
Jammed::Followers.followers('IFTFOM', api_key, :order => :date).should_not be_nil
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe ".followers(:order => :affinity)" do
|
29
|
+
before do
|
30
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/followers.json?key=987bcab01b929eb2c07877b224215c92&order=affinity", :followers_affinity)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "can order followers by likes" do
|
34
|
+
Jammed::Followers.followers('IFTFOM', api_key, :order => :affinity).should_not be_nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe ".followers(:order => :name)" do
|
39
|
+
before do
|
40
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/followers.json?key=987bcab01b929eb2c07877b224215c92&order=name", :followers_name)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "can order followers by name" do
|
44
|
+
Jammed::Followers.followers('IFTFOM', api_key, :order => :name).should_not be_nil
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context ".followers with bad :order value" do
|
49
|
+
it "complains when non-existant :order value given" do
|
50
|
+
message = "Cannot order Followers by bad"
|
51
|
+
Jammed::Followers.followers('IFTFOM', api_key, :order => :bad).should == message
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Jammed
|
4
|
+
describe Following do
|
5
|
+
|
6
|
+
let(:api_key) {'987bcab01b929eb2c07877b224215c92'}
|
7
|
+
|
8
|
+
describe ".following" do
|
9
|
+
before do
|
10
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/following.json?key=987bcab01b929eb2c07877b224215c92", :following)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "gets followings from the api" do
|
14
|
+
Jammed::Following.following('IFTFOM', api_key).should_not be(nil)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe ".following(:order => :date)" do
|
19
|
+
before do
|
20
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/following.json?key=987bcab01b929eb2c07877b224215c92&order=followedDate", :following_date)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "can order followings by date" do
|
24
|
+
Jammed::Following.following('IFTFOM', api_key, :order => :date).should_not be_nil
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe ".following(:order => :affinity)" do
|
29
|
+
before do
|
30
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/following.json?key=987bcab01b929eb2c07877b224215c92&order=affinity", :following_affinity)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "can order followings by likes" do
|
34
|
+
Jammed::Following.following('IFTFOM', api_key, :order => :affinity).should_not be_nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe ".following(:order => :name)" do
|
39
|
+
before do
|
40
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/following.json?key=987bcab01b929eb2c07877b224215c92&order=name", :following_name)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "can order followings by name" do
|
44
|
+
Jammed::Following.following('IFTFOM', api_key, :order => :name).should_not be_nil
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context ".following with bad :order value" do
|
49
|
+
it "complains when non-existant :order value given" do
|
50
|
+
message = "Cannot order Followings by bad"
|
51
|
+
Jammed::Following.following('IFTFOM', api_key, :order => :bad).should == message
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Jammed
|
4
|
+
describe Jams do
|
5
|
+
|
6
|
+
let(:api_key) {'987bcab01b929eb2c07877b224215c92'}
|
7
|
+
|
8
|
+
describe ".jams" do
|
9
|
+
before do
|
10
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/jams.json?key=987bcab01b929eb2c07877b224215c92", :jams)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "gets jams from the api" do
|
14
|
+
Jammed::Jams.jams('IFTFOM', api_key).should_not be(nil)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "gets the current jam and past jams" do
|
18
|
+
Jammed::Jams.jams('IFTFOM', api_key).to_s.should include("\"current\"=>false")
|
19
|
+
Jammed::Jams.jams('IFTFOM', api_key).to_s.should include("\"current\"=>true")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe ".jams(:show => :past)" do
|
24
|
+
before do
|
25
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/jams.json?key=987bcab01b929eb2c07877b224215c92&show=past", :jams_past)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "gets past jams from the api" do
|
29
|
+
Jammed::Jams.jams('IFTFOM', api_key, :show => :past).should_not be(nil)
|
30
|
+
Jammed::Jams.jams('IFTFOM', api_key, :show => :past).to_s.should include("\"current\"=>false")
|
31
|
+
end
|
32
|
+
|
33
|
+
it "doesn't get the current jam" do
|
34
|
+
Jammed::Jams.jams('IFTFOM', api_key, :show => :past).to_s.should_not include("\"current\"=>true")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe ".jams(:show => :current)" do
|
39
|
+
before do
|
40
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/jams.json?key=987bcab01b929eb2c07877b224215c92", :jams)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "gets the current jam from the api" do
|
44
|
+
Jammed::Jams.jams('IFTFOM', api_key, :show => :current).should_not be(nil)
|
45
|
+
Jammed::Jams.jams('IFTFOM', api_key, :show => :current).to_s.should include("\"current\"=>true")
|
46
|
+
end
|
47
|
+
|
48
|
+
it "doesn't get past jams" do
|
49
|
+
Jammed::Jams.jams('IFTFOM', api_key, :show => :current).to_s.should_not include("\"current\"=>false")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Jammed
|
4
|
+
describe Likes do
|
5
|
+
|
6
|
+
let(:api_key) {'987bcab01b929eb2c07877b224215c92'}
|
7
|
+
|
8
|
+
describe ".likes" do
|
9
|
+
before do
|
10
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/likes.json?key=987bcab01b929eb2c07877b224215c92", :likes)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "gets likes from the api" do
|
14
|
+
Jammed::Likes.likes('IFTFOM', api_key).should_not be(nil)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "gets both current and past likes" do
|
18
|
+
Jammed::Likes.likes('IFTFOM', api_key).to_s.should include("\"current\"=>false")
|
19
|
+
Jammed::Likes.likes('IFTFOM', api_key).to_s.should include("\"current\"=>true")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe ".likes(:show => :current)" do
|
24
|
+
before do
|
25
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/likes.json?show=current&key=987bcab01b929eb2c07877b224215c92", :likes_current)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "gets current likes" do
|
29
|
+
Jammed::Likes.likes('IFTFOM', api_key, :show => :current).to_s.should include("\"current\"=>true")
|
30
|
+
end
|
31
|
+
|
32
|
+
it "doesn't get past likes" do
|
33
|
+
Jammed::Likes.likes('IFTFOM', api_key, :show => :current).to_s.should_not include("\"current\"=>false")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe ".likes(:show => :past)" do
|
38
|
+
before do
|
39
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM/likes.json?show=past&key=987bcab01b929eb2c07877b224215c92", :likes_past)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "gets past likes" do
|
43
|
+
Jammed::Likes.likes('IFTFOM', api_key, :show => :past).to_s.should include("\"current\"=>false")
|
44
|
+
end
|
45
|
+
|
46
|
+
it "doesn't get current likes" do
|
47
|
+
Jammed::Likes.likes('IFTFOM', api_key, :show => :past).to_s.should_not include("\"current\"=>true")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Jammed
|
4
|
+
describe PeopleSearch do
|
5
|
+
|
6
|
+
let(:api_key) {'987bcab01b929eb2c07877b224215c92'}
|
7
|
+
|
8
|
+
describe ".search_name" do
|
9
|
+
let(:query) {'institute'}
|
10
|
+
let(:search) { Jammed::PeopleSearch.search_name(query, api_key) }
|
11
|
+
before do
|
12
|
+
serve_response("http://api.thisismyjam.com/1/search/person.json?by=name&q=institute&key=987bcab01b929eb2c07877b224215c92", :search_name)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "returns people from the API" do
|
16
|
+
search.should_not be(nil)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "returns people with the search string in their username, fullname, or Twitter name" do
|
20
|
+
successful_search = false
|
21
|
+
if search.first["fullname"].downcase.include?(query)
|
22
|
+
successful_search = true
|
23
|
+
elsif search.first["name"].downcase.include?(query)
|
24
|
+
successful_search = true
|
25
|
+
elsif search.first["twitterName"].downcase.include?(query)
|
26
|
+
successful_search = true
|
27
|
+
end
|
28
|
+
successful_search.should be true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe ".search_artist" do
|
33
|
+
let(:query) {'beach boys'}
|
34
|
+
let(:search) { Jammed::PeopleSearch.search_artist(query, api_key) }
|
35
|
+
|
36
|
+
before do
|
37
|
+
serve_response("http://api.thisismyjam.com/1/search/person.json?by=artist&q=beach+boys&key=987bcab01b929eb2c07877b224215c92", :search_artist)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "returns people from the API" do
|
41
|
+
search.should_not be(nil)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns people who have posted tracks by the queried artist" do
|
45
|
+
successful_search = false
|
46
|
+
search.first["representativeArtists"].each do |artist|
|
47
|
+
if artist.downcase.include?(query)
|
48
|
+
successful_search = true
|
49
|
+
end
|
50
|
+
successful_search.should be true
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe ".search_track" do
|
56
|
+
let(:query_artist) {'Lana del Rey'}
|
57
|
+
let(:query_track) {'Video games'}
|
58
|
+
let(:search) { Jammed::PeopleSearch.search_track(query_artist, query_track, api_key)}
|
59
|
+
|
60
|
+
before do
|
61
|
+
serve_response("http://api.thisismyjam.com/1/search/person.json?by=track&q=Lana+del+Rey|Video+games&key=987bcab01b929eb2c07877b224215c92", :search_track)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "returns people from the API" do
|
65
|
+
search.should_not be(nil)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "returns people who have posted a particluar track" do
|
69
|
+
successful_search = false
|
70
|
+
search.first["representativeArtists"].each do |artist|
|
71
|
+
if artist.downcase.include?(query_artist.downcase)
|
72
|
+
successful_search = true
|
73
|
+
end
|
74
|
+
successful_search.should be true
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Jammed
|
4
|
+
describe Person do
|
5
|
+
|
6
|
+
let(:api_key) {'987bcab01b929eb2c07877b224215c92'}
|
7
|
+
|
8
|
+
before do
|
9
|
+
serve_response("http://api.thisismyjam.com/1/IFTFOM.json?key=987bcab01b929eb2c07877b224215c92", :person)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe ".profile" do
|
13
|
+
|
14
|
+
it "gets the data from the api" do
|
15
|
+
Jammed::Person.profile('IFTFOM', api_key)["name"].should == "IFTFOM"
|
16
|
+
end
|
17
|
+
|
18
|
+
it "parses the JSON return into a hash" do
|
19
|
+
Jammed::Person.profile('IFTFOM', api_key).should be_an_instance_of Hash
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "dynamic attributes (.method_missing)" do
|
24
|
+
|
25
|
+
it "returns the attribute value if present in profile (name)" do
|
26
|
+
Jammed::Person.name('IFTFOM', api_key).should == "IFTFOM"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "returns the attribute value if present in profile" do
|
30
|
+
Jammed::Person.fullname('IFTFOM', api_key).should match /Institute/
|
31
|
+
end
|
32
|
+
|
33
|
+
it "raises method missing if attribute is not present" do
|
34
|
+
lambda { Jammed::Person.foo_attribute('IFTFOM', api_key) }.should raise_error NoMethodError
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Jammed
|
4
|
+
describe PopularJams do
|
5
|
+
|
6
|
+
let(:api_key) {'987bcab01b929eb2c07877b224215c92'}
|
7
|
+
|
8
|
+
describe ".popular_jams" do
|
9
|
+
|
10
|
+
before do
|
11
|
+
serve_response("http://api.thisismyjam.com/1/popular.json?key=987bcab01b929eb2c07877b224215c92", :popular)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "parses the JSON return into an array of Jams" do
|
15
|
+
Jammed::PopularJams.popular_jams(api_key).should be_an_instance_of Array
|
16
|
+
end
|
17
|
+
|
18
|
+
it "gets popular jams from the api" do
|
19
|
+
Jammed::PopularJams.popular_jams(api_key).should_not be_nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Jammed
|
4
|
+
describe SuggestedPeople do
|
5
|
+
|
6
|
+
let(:api_key) {'987bcab01b929eb2c07877b224215c92'}
|
7
|
+
|
8
|
+
describe ".people" do
|
9
|
+
before do
|
10
|
+
serve_response("http://api.thisismyjam.com/1/suggestedPeople.json?key=987bcab01b929eb2c07877b224215c92", :suggested_people)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "returns people from the API" do
|
14
|
+
Jammed::SuggestedPeople.people(api_key).should_not be_nil
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|