espn 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +91 -6
- data/lib/espn.rb +5 -0
- data/lib/espn/arguments.rb +41 -0
- data/lib/espn/client.rb +29 -5
- data/lib/espn/client/athletes.rb +39 -21
- data/lib/espn/client/audio.rb +20 -19
- data/lib/espn/client/headlines.rb +58 -27
- data/lib/espn/client/medals.rb +8 -0
- data/lib/espn/client/notes.rb +31 -21
- data/lib/espn/client/now.rb +11 -8
- data/lib/espn/client/scores.rb +33 -21
- data/lib/espn/client/sports.rb +20 -14
- data/lib/espn/client/standings.rb +20 -16
- data/lib/espn/client/teams.rb +39 -21
- data/lib/espn/client/video.rb +14 -17
- data/lib/espn/configuration.rb +29 -12
- data/lib/espn/error.rb +15 -3
- data/lib/espn/helpers.rb +39 -0
- data/lib/espn/mapper.rb +142 -0
- data/lib/espn/request.rb +86 -7
- data/lib/espn/version.rb +1 -1
- data/lib/faraday/response/raise_espn_error.rb +33 -11
- data/spec/espn/arguments_spec.rb +76 -0
- data/spec/espn/client/athletes_spec.rb +38 -47
- data/spec/espn/client/audio_spec.rb +30 -29
- data/spec/espn/client/headlines_spec.rb +80 -35
- data/spec/espn/client/medals_spec.rb +1 -1
- data/spec/espn/client/notes_spec.rb +39 -45
- data/spec/espn/client/now_spec.rb +1 -2
- data/spec/espn/client/scores_spec.rb +56 -39
- data/spec/espn/client/sports_spec.rb +56 -18
- data/spec/espn/client/standings_spec.rb +42 -19
- data/spec/espn/client/teams_spec.rb +61 -43
- data/spec/espn/client/video_spec.rb +9 -13
- data/spec/espn/helpers_spec.rb +31 -0
- data/spec/espn/mapper_spec.rb +136 -0
- data/spec/espn/request_spec.rb +65 -0
- data/spec/espn_spec.rb +11 -2
- data/spec/faraday/response/raise_espn_error_spec.rb +80 -0
- data/spec/responses/athletes.json +51 -0
- data/spec/responses/audio.json +101 -0
- data/spec/responses/headlines.json +174 -0
- data/spec/responses/medals.json +273 -0
- data/spec/responses/notes.json +100 -0
- data/spec/responses/now.json +44 -0
- data/spec/responses/scores.json +209 -0
- data/spec/responses/sports.json +164 -0
- data/spec/responses/standings.json +2689 -0
- data/spec/responses/teams.json +51 -0
- data/spec/responses/videos.json +28 -0
- data/spec/spec_helper.rb +11 -2
- metadata +37 -3
- data/lib/espn/connection.rb +0 -32
@@ -3,71 +3,62 @@ require 'spec_helper'
|
|
3
3
|
describe ESPN::Client::Athletes do
|
4
4
|
before do
|
5
5
|
@client = ESPN::Client.new
|
6
|
+
stub_get 'athletes.json'
|
6
7
|
end
|
7
8
|
|
8
|
-
describe '#
|
9
|
+
describe '#athlete' do
|
10
|
+
it 'should return an athlete' do
|
11
|
+
@client.athlete(1, :mlb).fullName.should eq('Chase Utley')
|
12
|
+
end
|
9
13
|
|
10
|
-
it '
|
11
|
-
|
12
|
-
|
13
|
-
assert_requested :get, espn_url('sports/athletes')
|
14
|
+
it 'should get an athlete for the given league' do
|
15
|
+
@client.athlete(1, :mlb)
|
16
|
+
assert_requested :get, espn_url('sports/baseball/mlb/athletes/1')
|
14
17
|
end
|
15
18
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
assert_requested :get, espn_url('sports/baseball/athletes')
|
21
|
-
end
|
19
|
+
it 'should accept a league in the opts hash' do
|
20
|
+
@client.athlete(1, league: 'mlb')
|
21
|
+
assert_requested :get, espn_url('sports/baseball/mlb/athletes/1')
|
22
|
+
end
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
@client.athletes(sport: 'baseball', athlete_id: 5)
|
27
|
-
assert_requested :get, espn_url('sports/baseball/athletes/5')
|
28
|
-
end
|
24
|
+
context 'when league is not passed' do
|
25
|
+
it 'should raise an argument error' do
|
26
|
+
expect { @client.athlete(1) }.to raise_error(ArgumentError)
|
29
27
|
end
|
30
28
|
end
|
31
29
|
|
32
|
-
context '
|
33
|
-
it 'should
|
34
|
-
|
35
|
-
@client.athletes(sport: 'baseball', league: 'mlb')
|
36
|
-
assert_requested :get, espn_url('sports/baseball/mlb/athletes')
|
30
|
+
context 'when invalid league is passed' do
|
31
|
+
it 'should raise an argument error' do
|
32
|
+
expect { @client.athlete(1, :foobar) }.to raise_error(ArgumentError)
|
37
33
|
end
|
34
|
+
end
|
35
|
+
end
|
38
36
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
@client.athletes(sport: 'baseball', league: 'mlb', athlete_id: 1)
|
43
|
-
assert_requested :get, espn_url('sports/baseball/mlb/athletes/1')
|
44
|
-
end
|
45
|
-
end
|
37
|
+
describe '#athletes' do
|
38
|
+
it 'should return an array of athletes' do
|
39
|
+
@client.athletes(:mlb).first.fullName.should eq('Chase Utley')
|
46
40
|
end
|
47
41
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
@client.athletes(athlete_id: 5)
|
52
|
-
assert_requested :get, espn_url('sports/athletes/5')
|
53
|
-
end
|
42
|
+
it 'should get athletes for the given league' do
|
43
|
+
@client.athletes(:nba)
|
44
|
+
assert_requested :get, espn_url('sports/basketball/nba/athletes')
|
54
45
|
end
|
55
46
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
assert_requested :get, espn_url('sports/athletes')
|
61
|
-
end
|
47
|
+
it 'should accept a league in the opts hash' do
|
48
|
+
@client.athletes(league: 'mlb')
|
49
|
+
assert_requested :get, espn_url('sports/baseball/mlb/athletes')
|
50
|
+
end
|
62
51
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
@client.athletes(league: 'mlb', athlete_id: 2)
|
67
|
-
assert_requested :get, espn_url('sports/athletes/2')
|
68
|
-
end
|
52
|
+
context 'when league is not passed' do
|
53
|
+
it 'should raise an argument error' do
|
54
|
+
expect { @client.athletes }.to raise_error(ArgumentError)
|
69
55
|
end
|
70
56
|
end
|
71
57
|
|
58
|
+
context 'when invalid league is passed' do
|
59
|
+
it 'should raise an argument error' do
|
60
|
+
expect { @client.athletes(:foobar) }.to raise_error(ArgumentError)
|
61
|
+
end
|
62
|
+
end
|
72
63
|
end
|
73
64
|
end
|
@@ -3,44 +3,45 @@ require 'spec_helper'
|
|
3
3
|
describe ESPN::Client::Audio do
|
4
4
|
before do
|
5
5
|
@client = ESPN::Client.new
|
6
|
+
stub_get 'audio.json'
|
6
7
|
end
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
9
|
+
describe '#audio' do
|
10
|
+
it 'should return an array of podcast recordings' do
|
11
|
+
@client.audio.first.categories.first.respond_to?(:podcast).should be_true
|
12
|
+
end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
stub_get('audio/podcasts/recordings')
|
18
|
-
@client.audio(method: 'podcast_recordings')
|
19
|
-
assert_requested :get, espn_url('audio/podcasts/recordings')
|
20
|
-
end
|
14
|
+
it 'should get all podcasts by default' do
|
15
|
+
@client.audio
|
16
|
+
assert_requested :get, espn_url('audio/podcasts')
|
21
17
|
end
|
22
18
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
19
|
+
context 'with a method param' do
|
20
|
+
it 'should include the method in the request' do
|
21
|
+
@client.audio(method: 'recordings')
|
22
|
+
assert_requested :get, espn_url('audio/recordings')
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'if method is podcast_recordings' do
|
26
|
+
it 'should convert to podcasts/recordings' do
|
27
|
+
@client.audio(method: 'podcast_recordings')
|
28
|
+
assert_requested :get, espn_url('audio/podcasts/recordings')
|
29
|
+
end
|
30
|
+
end
|
27
31
|
end
|
28
|
-
end
|
29
32
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
33
|
+
context 'with a podcast_id param' do
|
34
|
+
it 'should include the podcast_id in the param' do
|
35
|
+
@client.audio(podcast_id: 1)
|
36
|
+
assert_requested :get, espn_url('audio/podcasts/1')
|
37
|
+
end
|
35
38
|
end
|
36
|
-
end
|
37
39
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
40
|
+
context 'with a recording_id param' do
|
41
|
+
it 'should include the recording_id in the param' do
|
42
|
+
@client.audio(recording_id: 2)
|
43
|
+
assert_requested :get, espn_url('audio/podcasts/2')
|
44
|
+
end
|
43
45
|
end
|
44
46
|
end
|
45
|
-
|
46
47
|
end
|
@@ -3,60 +3,105 @@ require 'spec_helper'
|
|
3
3
|
describe ESPN::Client::Headlines do
|
4
4
|
before do
|
5
5
|
@client = ESPN::Client.new
|
6
|
+
stub_get 'headlines.json'
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#headline' do
|
10
|
+
it 'should include the id in the request' do
|
11
|
+
@client.headline(5)
|
12
|
+
assert_requested :get, espn_url('sports/news/5')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should not return an array' do
|
16
|
+
@client.headline(5).should_not be_a(Array)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should return the headline' do
|
20
|
+
@client.headline(5).type.should eq('HeadlineNews')
|
21
|
+
end
|
6
22
|
end
|
7
23
|
|
8
24
|
describe '#headlines' do
|
25
|
+
it 'should return an array of headlines' do
|
26
|
+
@client.headlines.first.type.should eq('HeadlineNews')
|
27
|
+
end
|
28
|
+
|
9
29
|
it 'should get headlines for sports by default' do
|
10
|
-
stub_get('sports/news')
|
11
30
|
@client.headlines
|
12
31
|
assert_requested :get, espn_url('sports/news')
|
13
32
|
end
|
14
33
|
|
15
|
-
context '
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
34
|
+
context 'when passing values as args' do
|
35
|
+
context 'when passing the sport' do
|
36
|
+
it 'should request headlines for that sport' do
|
37
|
+
@client.headlines('horse-racing')
|
38
|
+
assert_requested :get, espn_url('sports/horse-racing/news')
|
39
|
+
end
|
20
40
|
end
|
21
|
-
end
|
22
41
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
42
|
+
context 'when passing the league' do
|
43
|
+
it 'should request headlines for that league' do
|
44
|
+
@client.headlines(:mlb)
|
45
|
+
assert_requested :get, espn_url('sports/baseball/mlb/news')
|
46
|
+
end
|
28
47
|
end
|
29
|
-
end
|
30
48
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
49
|
+
context 'when passing the league and sport' do
|
50
|
+
it 'should request headlines for that sport and league' do
|
51
|
+
@client.headlines('horse-racing', 'mlb')
|
52
|
+
assert_requested :get, espn_url('sports/horse-racing/mlb/news')
|
53
|
+
end
|
36
54
|
end
|
37
|
-
end
|
38
55
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
56
|
+
context 'when passing sport in the opts hash' do
|
57
|
+
it 'should override the symbol with the opts' do
|
58
|
+
@client.headlines(:basketball, sport: 'baseball')
|
59
|
+
assert_requested :get, espn_url('sports/baseball/news')
|
60
|
+
end
|
44
61
|
end
|
45
|
-
end
|
46
62
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
63
|
+
context 'when passing league in the opts hash' do
|
64
|
+
it 'should override the symbol with the opts' do
|
65
|
+
@client.headlines('wnba', league: 'mlb')
|
66
|
+
assert_requested :get, espn_url('sports/basketball/mlb/news')
|
67
|
+
end
|
52
68
|
end
|
53
69
|
end
|
54
70
|
|
55
|
-
context '
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
71
|
+
context 'when passing values in the opts hash' do
|
72
|
+
context 'with a section param' do
|
73
|
+
it 'should get headlines for that section' do
|
74
|
+
@client.headlines(section: 'cities')
|
75
|
+
assert_requested :get, espn_url('cities/news')
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context 'with a sport param' do
|
80
|
+
it 'should get headlines for that sport' do
|
81
|
+
@client.headlines(sport: 'baseball')
|
82
|
+
assert_requested :get, espn_url('sports/baseball/news')
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'with a sport and league param' do
|
87
|
+
it 'should get headlines for that sport and league' do
|
88
|
+
@client.headlines(sport: 'baseball', league: 'mlb')
|
89
|
+
assert_requested :get, espn_url('sports/baseball/mlb/news')
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
context 'with a league param but no sport param' do
|
94
|
+
it 'should get headlines for that league mapped to a sport' do
|
95
|
+
@client.headlines(league: 'mlb')
|
96
|
+
assert_requested :get, espn_url('sports/baseball/mlb/news')
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context 'with a method param' do
|
101
|
+
it 'should get headlines for that method' do
|
102
|
+
@client.headlines(method: 'top')
|
103
|
+
assert_requested :get, espn_url('sports/news/headlines/top')
|
104
|
+
end
|
60
105
|
end
|
61
106
|
end
|
62
107
|
end
|
@@ -3,10 +3,10 @@ require 'spec_helper'
|
|
3
3
|
describe ESPN::Client::Medals do
|
4
4
|
before do
|
5
5
|
@client = ESPN::Client.new
|
6
|
+
stub_get 'medals.json'
|
6
7
|
end
|
7
8
|
|
8
9
|
it 'should get all medals' do
|
9
|
-
stub_get('sports/olympics/medals')
|
10
10
|
@client.medals
|
11
11
|
assert_requested :get, espn_url('sports/olympics/medals')
|
12
12
|
end
|
@@ -3,71 +3,65 @@ require 'spec_helper'
|
|
3
3
|
describe ESPN::Client::Notes do
|
4
4
|
before do
|
5
5
|
@client = ESPN::Client.new
|
6
|
+
stub_get 'notes.json'
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#note' do
|
10
|
+
it 'should return a note' do
|
11
|
+
@client.note(1).headline.should eq('Cowboys Stink')
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should include the id in the request' do
|
15
|
+
@client.note(1)
|
16
|
+
assert_requested :get, espn_url('sports/news/notes/1')
|
17
|
+
end
|
6
18
|
end
|
7
19
|
|
8
20
|
describe '#notes' do
|
21
|
+
it 'should return an array of notes' do
|
22
|
+
@client.notes.first.respond_to?(:headline).should be_true
|
23
|
+
end
|
9
24
|
|
10
|
-
it 'gets all notes' do
|
11
|
-
stub_get('sports/news/notes')
|
25
|
+
it 'gets all notes by default' do
|
12
26
|
@client.notes
|
13
27
|
assert_requested :get, espn_url('sports/news/notes')
|
14
28
|
end
|
15
29
|
|
16
|
-
context '
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
context 'with a note_id param' do
|
24
|
-
it 'should include the sport and note_id params in the request' do
|
25
|
-
stub_get('sports/baseball/news/notes/5')
|
26
|
-
@client.notes(sport: 'baseball', note_id: 5)
|
27
|
-
assert_requested :get, espn_url('sports/baseball/news/notes/5')
|
30
|
+
context 'when passing values as args' do
|
31
|
+
context 'when passing the sport' do
|
32
|
+
it 'should request notes for that sport' do
|
33
|
+
@client.notes(:football)
|
34
|
+
assert_requested :get, espn_url('sports/football/news/notes')
|
28
35
|
end
|
29
36
|
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'with a sport and a league param' do
|
33
|
-
it 'should include the sport and league params in the request' do
|
34
|
-
stub_get('sports/baseball/mlb/news/notes')
|
35
|
-
@client.notes(sport: 'baseball', league: 'mlb')
|
36
|
-
assert_requested :get, espn_url('sports/baseball/mlb/news/notes')
|
37
|
-
end
|
38
37
|
|
39
|
-
context '
|
40
|
-
it 'should
|
41
|
-
|
42
|
-
|
43
|
-
assert_requested :get, espn_url('sports/baseball/mlb/news/notes/1')
|
38
|
+
context 'when passing the league' do
|
39
|
+
it 'should request notes for the league' do
|
40
|
+
@client.notes(:nfl)
|
41
|
+
assert_requested :get, espn_url('sports/football/nfl/news/notes')
|
44
42
|
end
|
45
43
|
end
|
46
|
-
end
|
47
44
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
45
|
+
context 'when passing the league and sport' do
|
46
|
+
it 'should request notes for that league and sport' do
|
47
|
+
@client.notes(:baseball, 'mlb')
|
48
|
+
assert_requested :get, espn_url('sports/baseball/mlb/news/notes')
|
49
|
+
end
|
53
50
|
end
|
54
|
-
end
|
55
51
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
52
|
+
context 'when passing sport in the opts hash' do
|
53
|
+
it 'should override the symbol with the opts' do
|
54
|
+
@client.notes(:basketball, sport: 'baseball')
|
55
|
+
assert_requested :get, espn_url('sports/baseball/news/notes')
|
56
|
+
end
|
61
57
|
end
|
62
58
|
|
63
|
-
context '
|
64
|
-
it 'should
|
65
|
-
|
66
|
-
|
67
|
-
assert_requested :get, espn_url('sports/news/notes/2')
|
59
|
+
context 'when passing league in the opts hash' do
|
60
|
+
it 'should override the symbol with the opts' do
|
61
|
+
@client.notes('wnba', league: 'mlb')
|
62
|
+
assert_requested :get, espn_url('sports/basketball/mlb/news/notes')
|
68
63
|
end
|
69
64
|
end
|
70
65
|
end
|
71
|
-
|
72
66
|
end
|
73
67
|
end
|
@@ -3,17 +3,16 @@ require 'spec_helper'
|
|
3
3
|
describe ESPN::Client::Now do
|
4
4
|
before do
|
5
5
|
@client = ESPN::Client.new
|
6
|
+
stub_get 'now.json'
|
6
7
|
end
|
7
8
|
|
8
9
|
it 'gets all latest content' do
|
9
|
-
stub_get('now')
|
10
10
|
@client.now
|
11
11
|
assert_requested :get, espn_url('now')
|
12
12
|
end
|
13
13
|
|
14
14
|
context 'with a method param' do
|
15
15
|
it 'should include the method in the request' do
|
16
|
-
stub_get('now/popular')
|
17
16
|
@client.now(method: 'popular')
|
18
17
|
assert_requested :get, espn_url('now/popular')
|
19
18
|
end
|