lol_api 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.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/.guardfile +11 -0
- data/.travis.yml +6 -0
- data/Gemfile +10 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +10 -0
- data/lib/lol_api/client.rb +105 -0
- data/lib/lol_api/configuration.rb +15 -0
- data/lib/lol_api/connection.rb +32 -0
- data/lib/lol_api/types/champion.rb +95 -0
- data/lib/lol_api/types/dtos/image.rb +33 -0
- data/lib/lol_api/types/dtos/info.rb +25 -0
- data/lib/lol_api/types/dtos/participant.rb +419 -0
- data/lib/lol_api/types/dtos/participant_identity.rb +19 -0
- data/lib/lol_api/types/dtos/passive.rb +27 -0
- data/lib/lol_api/types/dtos/player.rb +22 -0
- data/lib/lol_api/types/dtos/recommended.rb +38 -0
- data/lib/lol_api/types/dtos/skin.rb +20 -0
- data/lib/lol_api/types/dtos/spell.rb +98 -0
- data/lib/lol_api/types/dtos/stat.rb +19 -0
- data/lib/lol_api/types/dtos/team.rb +57 -0
- data/lib/lol_api/types/dtos/timeline.rb +180 -0
- data/lib/lol_api/types/history_match.rb +61 -0
- data/lib/lol_api/types/item.rb +126 -0
- data/lib/lol_api/types/mastery.rb +39 -0
- data/lib/lol_api/types/match.rb +43 -0
- data/lib/lol_api/types/summoner.rb +26 -0
- data/lib/lol_api/types/summoner_masteries.rb +66 -0
- data/lib/lol_api/types/summoner_runes.rb +69 -0
- data/lib/lol_api/utils/inspectable.rb +10 -0
- data/lib/lol_api/version.rb +3 -0
- data/lib/lol_api.rb +12 -0
- data/lol_api.gemspec +29 -0
- data/spec/champion_spec.rb +48 -0
- data/spec/client_spec.rb +67 -0
- data/spec/delegation_spec.rb +5 -0
- data/spec/factories.rb +43 -0
- data/spec/fixtures/champion.json +843 -0
- data/spec/fixtures/history.json +127 -0
- data/spec/fixtures/item.json +62 -0
- data/spec/fixtures/mastery.json +25 -0
- data/spec/fixtures/match.json +12167 -0
- data/spec/fixtures/match_details.json +13548 -0
- data/spec/fixtures/summoner.json +7 -0
- data/spec/fixtures/summoner_masteries.json +143 -0
- data/spec/fixtures/summoner_runes.json +132 -0
- data/spec/history_spec.rb +280 -0
- data/spec/item_spec.rb +96 -0
- data/spec/mastery_spec.rb +27 -0
- data/spec/match_details_spec.rb +72 -0
- data/spec/participant_spec.rb +153 -0
- data/spec/participant_timeline_spec.rb +80 -0
- data/spec/spec_helper.rb +22 -0
- data/spec/summoner_spec.rb +120 -0
- data/spec/team_spec.rb +38 -0
- data/spec/timeline_spec.rb +101 -0
- metadata +236 -0
@@ -0,0 +1,180 @@
|
|
1
|
+
module LolApi
|
2
|
+
class Timeline
|
3
|
+
attr_reader :raw_timeline
|
4
|
+
|
5
|
+
def initialize(raw_timeline)
|
6
|
+
@raw_timeline = raw_timeline
|
7
|
+
end
|
8
|
+
|
9
|
+
def interval
|
10
|
+
@raw_timeline['frameInterval']
|
11
|
+
end
|
12
|
+
|
13
|
+
def frames
|
14
|
+
if frames = @raw_timeline['frames']
|
15
|
+
frames.map { |x| Frame.new(x) }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class Frame
|
21
|
+
attr_reader :raw_frame
|
22
|
+
|
23
|
+
def initialize(raw_frame)
|
24
|
+
@raw_frame = raw_frame
|
25
|
+
end
|
26
|
+
|
27
|
+
def events
|
28
|
+
if events = @raw_frame['events']
|
29
|
+
events.map { |x| Event.new(x) }
|
30
|
+
else
|
31
|
+
[]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def participant_frames
|
36
|
+
if frames = @raw_frame['participantFrames']
|
37
|
+
frames.map{|x| ParticipantFrame.new(x[1])}
|
38
|
+
else
|
39
|
+
[]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def timestamp
|
44
|
+
@raw_frame['timestamp']
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
class Event
|
49
|
+
attr_reader :raw_event
|
50
|
+
|
51
|
+
def initialize(raw_event)
|
52
|
+
@raw_event = raw_event
|
53
|
+
end
|
54
|
+
|
55
|
+
def assisting_participant_ids
|
56
|
+
raw_event['assistingParticipantId']
|
57
|
+
end
|
58
|
+
|
59
|
+
def building_type
|
60
|
+
raw_event['buildingType']
|
61
|
+
end
|
62
|
+
|
63
|
+
def creator_id
|
64
|
+
raw_event['creatorId']
|
65
|
+
end
|
66
|
+
|
67
|
+
def event_type
|
68
|
+
raw_event['eventType']
|
69
|
+
end
|
70
|
+
|
71
|
+
def item_after
|
72
|
+
raw_event['itemAfter']
|
73
|
+
end
|
74
|
+
|
75
|
+
def item_before
|
76
|
+
raw_event['itemBefore']
|
77
|
+
end
|
78
|
+
|
79
|
+
def item_id
|
80
|
+
raw_event['itemId']
|
81
|
+
end
|
82
|
+
|
83
|
+
def killer_id
|
84
|
+
raw_event['killerId']
|
85
|
+
end
|
86
|
+
|
87
|
+
def lane_type
|
88
|
+
raw_event['laneType']
|
89
|
+
end
|
90
|
+
|
91
|
+
def level_up_type
|
92
|
+
raw_event['levelUpType']
|
93
|
+
end
|
94
|
+
|
95
|
+
def monster_type
|
96
|
+
raw_event['monsterType']
|
97
|
+
end
|
98
|
+
|
99
|
+
def participant_id
|
100
|
+
raw_event['participantId']
|
101
|
+
end
|
102
|
+
|
103
|
+
def position
|
104
|
+
raw_event['position']
|
105
|
+
end
|
106
|
+
|
107
|
+
def skill_slot
|
108
|
+
raw_event['skillSlot']
|
109
|
+
end
|
110
|
+
|
111
|
+
def team_id
|
112
|
+
raw_event['teamId']
|
113
|
+
end
|
114
|
+
|
115
|
+
def timestamp
|
116
|
+
raw_event['timestamp']
|
117
|
+
end
|
118
|
+
|
119
|
+
def tower_type
|
120
|
+
raw_event['towerType']
|
121
|
+
end
|
122
|
+
|
123
|
+
def victim_id
|
124
|
+
raw_event['victimId']
|
125
|
+
end
|
126
|
+
|
127
|
+
def ward_type
|
128
|
+
raw_event['wardType']
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
class ParticipantFrame
|
133
|
+
attr_reader :raw_frame
|
134
|
+
|
135
|
+
def initialize(raw_frame)
|
136
|
+
@raw_frame = raw_frame
|
137
|
+
end
|
138
|
+
|
139
|
+
def current_gold
|
140
|
+
@raw_frame['currentGold']
|
141
|
+
end
|
142
|
+
|
143
|
+
def jungle_minions_killed
|
144
|
+
@raw_frame['jungleMinionsKilled']
|
145
|
+
end
|
146
|
+
|
147
|
+
def level
|
148
|
+
@raw_frame['level']
|
149
|
+
end
|
150
|
+
|
151
|
+
def minions_killed
|
152
|
+
@raw_frame['minionsKilled']
|
153
|
+
end
|
154
|
+
|
155
|
+
def participant_id
|
156
|
+
@raw_frame['participantId']
|
157
|
+
end
|
158
|
+
|
159
|
+
def position
|
160
|
+
Position.new(@raw_frame['position'])
|
161
|
+
end
|
162
|
+
|
163
|
+
def total_gold
|
164
|
+
@raw_frame['totalGold']
|
165
|
+
end
|
166
|
+
|
167
|
+
def xp
|
168
|
+
@raw_frame['xp']
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
class Position
|
173
|
+
|
174
|
+
def initialize(raw_pos)
|
175
|
+
@x = raw_pos['x']
|
176
|
+
@y = raw_pos['y']
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'lol_api/types/dtos/participant_identity'
|
2
|
+
require 'lol_api/types/dtos/participant'
|
3
|
+
module LolApi
|
4
|
+
class HistoryMatch
|
5
|
+
attr_reader :raw_match
|
6
|
+
|
7
|
+
def initialize(raw_match)
|
8
|
+
@raw_match = raw_match
|
9
|
+
end
|
10
|
+
|
11
|
+
def map_id
|
12
|
+
raw_match['mapId']
|
13
|
+
end
|
14
|
+
|
15
|
+
def match_creation
|
16
|
+
raw_match['matchCreation']
|
17
|
+
end
|
18
|
+
|
19
|
+
def match_duration
|
20
|
+
raw_match['matchDuration']
|
21
|
+
end
|
22
|
+
|
23
|
+
def match_id
|
24
|
+
raw_match['matchId']
|
25
|
+
end
|
26
|
+
|
27
|
+
def match_version
|
28
|
+
raw_match['matchVersion']
|
29
|
+
end
|
30
|
+
|
31
|
+
def participant_identities
|
32
|
+
if participants = raw_match['participantIdentities']
|
33
|
+
participants.map do |participant|
|
34
|
+
ParticipantIdentity.new(participant)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def participants
|
40
|
+
if participants = raw_match['participants']
|
41
|
+
participants.map do |participant|
|
42
|
+
Participant.new(participant)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def queue_type
|
48
|
+
raw_match['queueType']
|
49
|
+
end
|
50
|
+
|
51
|
+
def region
|
52
|
+
raw_match['region']
|
53
|
+
end
|
54
|
+
|
55
|
+
def season
|
56
|
+
raw_match['season']
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
require 'lol_api/types/dtos/image'
|
2
|
+
module LolApi
|
3
|
+
class Item
|
4
|
+
attr_reader :raw_item
|
5
|
+
|
6
|
+
def initialize(raw_item)
|
7
|
+
@raw_item = raw_item
|
8
|
+
end
|
9
|
+
|
10
|
+
def id
|
11
|
+
raw_item['id']
|
12
|
+
end
|
13
|
+
|
14
|
+
def name
|
15
|
+
raw_item['name']
|
16
|
+
end
|
17
|
+
|
18
|
+
def plain_text
|
19
|
+
raw_item['plaintext']
|
20
|
+
end
|
21
|
+
|
22
|
+
def colloq
|
23
|
+
raw_item['colloq']
|
24
|
+
end
|
25
|
+
|
26
|
+
def consume_on_full
|
27
|
+
raw_item['consumeOnFull']
|
28
|
+
end
|
29
|
+
|
30
|
+
def consumed
|
31
|
+
raw_item['consumed']
|
32
|
+
end
|
33
|
+
|
34
|
+
def depth
|
35
|
+
raw_item['depth']
|
36
|
+
end
|
37
|
+
|
38
|
+
def description
|
39
|
+
raw_item['description']
|
40
|
+
end
|
41
|
+
|
42
|
+
def from
|
43
|
+
raw_item['from']
|
44
|
+
end
|
45
|
+
|
46
|
+
def gold
|
47
|
+
LolApi::Gold.new(raw_item['gold'])
|
48
|
+
end
|
49
|
+
|
50
|
+
def group
|
51
|
+
raw_item['group']
|
52
|
+
end
|
53
|
+
|
54
|
+
def hide_from_all
|
55
|
+
raw_item['hideFromAll']
|
56
|
+
end
|
57
|
+
|
58
|
+
def image
|
59
|
+
LolApi::Image.new(raw_item['image'])
|
60
|
+
end
|
61
|
+
|
62
|
+
def in_store
|
63
|
+
raw_item['inStore']
|
64
|
+
end
|
65
|
+
|
66
|
+
def into
|
67
|
+
raw_item['into']
|
68
|
+
end
|
69
|
+
|
70
|
+
def maps
|
71
|
+
raw_item['maps']
|
72
|
+
end
|
73
|
+
|
74
|
+
def required_champion
|
75
|
+
raw_item['requiredChampion']
|
76
|
+
end
|
77
|
+
|
78
|
+
def rune
|
79
|
+
raw_item['rune']
|
80
|
+
end
|
81
|
+
|
82
|
+
def sanitized_description
|
83
|
+
raw_item['sanitizedDescription']
|
84
|
+
end
|
85
|
+
|
86
|
+
def special_recipe
|
87
|
+
raw_item['specialRecipe']
|
88
|
+
end
|
89
|
+
|
90
|
+
def stacks
|
91
|
+
raw_item['stacks']
|
92
|
+
end
|
93
|
+
|
94
|
+
def stats
|
95
|
+
raw_item['stats']
|
96
|
+
end
|
97
|
+
|
98
|
+
def tags
|
99
|
+
raw_item['tags']
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
class Gold
|
104
|
+
attr_reader :raw_gold
|
105
|
+
|
106
|
+
def initialize(raw_gold)
|
107
|
+
@raw_gold = raw_gold
|
108
|
+
end
|
109
|
+
|
110
|
+
def base
|
111
|
+
raw_gold['base']
|
112
|
+
end
|
113
|
+
|
114
|
+
def purchasable
|
115
|
+
raw_gold['purchasable']
|
116
|
+
end
|
117
|
+
|
118
|
+
def sell
|
119
|
+
raw_gold['sell']
|
120
|
+
end
|
121
|
+
|
122
|
+
def total
|
123
|
+
raw_gold['total']
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'lol_api/types/dtos/image'
|
2
|
+
|
3
|
+
module LolApi
|
4
|
+
class Mastery
|
5
|
+
attr_reader :raw_mastery
|
6
|
+
|
7
|
+
def initialize(raw_mastery)
|
8
|
+
@raw_mastery = raw_mastery
|
9
|
+
end
|
10
|
+
|
11
|
+
def id
|
12
|
+
raw_mastery['id']
|
13
|
+
end
|
14
|
+
|
15
|
+
def name
|
16
|
+
raw_mastery['name']
|
17
|
+
end
|
18
|
+
|
19
|
+
def description
|
20
|
+
raw_mastery['description']
|
21
|
+
end
|
22
|
+
|
23
|
+
def sanitized_description
|
24
|
+
raw_mastery['sanitizedDescription']
|
25
|
+
end
|
26
|
+
|
27
|
+
def image
|
28
|
+
Image.new(raw_mastery['image']) if raw_mastery['image']
|
29
|
+
end
|
30
|
+
|
31
|
+
def ranks
|
32
|
+
raw_mastery['ranks']
|
33
|
+
end
|
34
|
+
|
35
|
+
def prereq
|
36
|
+
raw_mastery['prereq'].to_i
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'lol_api/types/dtos/team'
|
2
|
+
require 'lol_api/types/dtos/timeline'
|
3
|
+
require 'lol_api/types/history_match'
|
4
|
+
|
5
|
+
module LolApi
|
6
|
+
class Match < HistoryMatch
|
7
|
+
def match_type
|
8
|
+
raw_match['matchType']
|
9
|
+
end
|
10
|
+
|
11
|
+
def match_mode
|
12
|
+
raw_match['matchMode']
|
13
|
+
end
|
14
|
+
|
15
|
+
def teams
|
16
|
+
if teams = raw_match['teams']
|
17
|
+
teams.map { |e| Team.new(e) }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def timeline
|
22
|
+
Timeline.new(raw_match['timeline'])
|
23
|
+
end
|
24
|
+
|
25
|
+
def blue_team
|
26
|
+
[ teams[0], participants.select { |x| x.team_id == 100 } ]
|
27
|
+
end
|
28
|
+
|
29
|
+
def purple_team
|
30
|
+
[ teams[1], participants.select { |x| x.team_id == 200 } ]
|
31
|
+
end
|
32
|
+
|
33
|
+
def ward_placements
|
34
|
+
timeline.frames.map do |f|
|
35
|
+
f.events.select do |e|
|
36
|
+
e.event_type == "WARD_PLACED"
|
37
|
+
end
|
38
|
+
end.flatten
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
module LolApi
|
3
|
+
class Summoner
|
4
|
+
attr_reader :raw_summoner
|
5
|
+
|
6
|
+
def initialize(raw_summoner)
|
7
|
+
@raw_summoner = raw_summoner
|
8
|
+
end
|
9
|
+
|
10
|
+
def id
|
11
|
+
raw_summoner['id']
|
12
|
+
end
|
13
|
+
def name
|
14
|
+
raw_summoner['name']
|
15
|
+
end
|
16
|
+
def profile_icon_id
|
17
|
+
raw_summoner['profileIconId']
|
18
|
+
end
|
19
|
+
def revision_date
|
20
|
+
raw_summoner['revisionDate']
|
21
|
+
end
|
22
|
+
def level
|
23
|
+
raw_summoner['summonerLevel']
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
|
2
|
+
module LolApi
|
3
|
+
class SummonerMasteries
|
4
|
+
attr_reader :raw_masteries
|
5
|
+
|
6
|
+
def initialize(raw_masteries)
|
7
|
+
@raw_masteries = raw_masteries
|
8
|
+
end
|
9
|
+
|
10
|
+
def pages
|
11
|
+
if pages = raw_masteries['pages']
|
12
|
+
pages.map do |page|
|
13
|
+
MasteryPage.new(page)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def summoner_id
|
19
|
+
raw_masteries['summonerId']
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class MasteryPage
|
24
|
+
attr_reader :raw_page
|
25
|
+
|
26
|
+
def initialize(raw_page)
|
27
|
+
@raw_page = raw_page
|
28
|
+
end
|
29
|
+
|
30
|
+
def current
|
31
|
+
raw_page['current']
|
32
|
+
end
|
33
|
+
|
34
|
+
def id
|
35
|
+
raw_page['id']
|
36
|
+
end
|
37
|
+
|
38
|
+
def masteries
|
39
|
+
if masteries = raw_page['masteries']
|
40
|
+
masteries.map do |mastery|
|
41
|
+
MasteryItem.new(mastery)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def name
|
47
|
+
raw_page['name']
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class MasteryItem
|
52
|
+
attr_reader :raw_item
|
53
|
+
|
54
|
+
def initialize(raw_item)
|
55
|
+
@raw_item = raw_item
|
56
|
+
end
|
57
|
+
|
58
|
+
def id
|
59
|
+
raw_item['id']
|
60
|
+
end
|
61
|
+
|
62
|
+
def rank
|
63
|
+
raw_item['rank']
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module LolApi
|
2
|
+
class SummonerRunes
|
3
|
+
attr_reader :raw_runes
|
4
|
+
|
5
|
+
def initialize(raw_runes)
|
6
|
+
@raw_runes = raw_runes
|
7
|
+
end
|
8
|
+
|
9
|
+
def pages
|
10
|
+
if pages = raw_runes['pages']
|
11
|
+
pages.map do |p|
|
12
|
+
RunePage.new(p)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def summoner_id
|
18
|
+
raw_runes['summonerId']
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
class RunePage
|
24
|
+
attr_reader :raw_page
|
25
|
+
|
26
|
+
def initialize(raw_page)
|
27
|
+
@raw_page = raw_page
|
28
|
+
end
|
29
|
+
|
30
|
+
def current
|
31
|
+
raw_page['current']
|
32
|
+
end
|
33
|
+
|
34
|
+
def id
|
35
|
+
raw_page['id']
|
36
|
+
end
|
37
|
+
|
38
|
+
def name
|
39
|
+
raw_page['name']
|
40
|
+
end
|
41
|
+
|
42
|
+
def runes
|
43
|
+
if runes = raw_page['slots']
|
44
|
+
runes.map do |s|
|
45
|
+
SlottedRune.new(s)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class SlottedRune
|
52
|
+
attr_reader :raw_rune
|
53
|
+
|
54
|
+
def initialize(raw_rune)
|
55
|
+
@raw_rune = raw_rune
|
56
|
+
end
|
57
|
+
|
58
|
+
def id
|
59
|
+
raw_rune['runeId']
|
60
|
+
end
|
61
|
+
|
62
|
+
def slot_id
|
63
|
+
raw_rune['runeSlotId']
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
end
|
data/lib/lol_api.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'lol_api/version'
|
2
|
+
require 'lol_api/client'
|
3
|
+
|
4
|
+
module LolApi
|
5
|
+
extend SingleForwardable
|
6
|
+
def_delegators :client, :configure, :champion_by_id, :champions, :item_by_id, :items, :masteries, :mastery_by_id, :match_history,
|
7
|
+
:history_by_id, :match_details, :summoner_by_name, :summoner_by_id, :summoner_masteries, :summoner_runes
|
8
|
+
|
9
|
+
def self.client
|
10
|
+
@client ||= Client.new
|
11
|
+
end
|
12
|
+
end
|
data/lol_api.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'lol_api/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "lol_api"
|
8
|
+
gem.version = LolApi::VERSION
|
9
|
+
gem.authors = ["eankorins"]
|
10
|
+
gem.email = ["eankorins@gmail.com"]
|
11
|
+
gem.summary = "Gem for League of Legends API"
|
12
|
+
gem.description = "Utilizes exposed methods of the League of Legends public API"
|
13
|
+
gem.homepage = ""
|
14
|
+
gem.license = "MIT"
|
15
|
+
|
16
|
+
gem.files = `git ls-files -z`.split("\x0")
|
17
|
+
gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
gem.test_files = gem.files.grep(%r{^(spec|features)/})
|
19
|
+
gem.require_paths = ["lib"]
|
20
|
+
|
21
|
+
gem.add_dependency 'faraday', '~> 0.8.4'
|
22
|
+
gem.add_dependency 'faraday_middleware', '~> 0.9.0'
|
23
|
+
gem.add_development_dependency 'rake', '~> 10.0.3'
|
24
|
+
gem.add_development_dependency 'minitest', '~> 4.5.0'
|
25
|
+
gem.add_development_dependency 'webmock', '~> 1.9.0'
|
26
|
+
gem.add_development_dependency "rspec"
|
27
|
+
gem.add_development_dependency "guard"
|
28
|
+
gem.add_development_dependency "guard-rspec"
|
29
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LolApi::Champion do
|
4
|
+
before do
|
5
|
+
@champion = FactoryGirl.build(:champion)
|
6
|
+
end
|
7
|
+
subject { @champion }
|
8
|
+
|
9
|
+
it { should be_kind_of(LolApi::Champion)}
|
10
|
+
it { should respond_to(:id) }
|
11
|
+
it { should respond_to(:name) }
|
12
|
+
it { should respond_to(:title) }
|
13
|
+
it { should respond_to(:stats) }
|
14
|
+
it { should respond_to(:key) }
|
15
|
+
it { should respond_to(:ally_tips) }
|
16
|
+
it { should respond_to(:enemy_tips) }
|
17
|
+
it { should respond_to(:blurb) }
|
18
|
+
it { should respond_to(:image) }
|
19
|
+
it { should respond_to(:info) }
|
20
|
+
it { should respond_to(:lore) }
|
21
|
+
it { should respond_to(:partype) }
|
22
|
+
it { should respond_to(:passive) }
|
23
|
+
it { should respond_to(:recommended) }
|
24
|
+
it { should respond_to(:skins) }
|
25
|
+
it { should respond_to(:spells) }
|
26
|
+
it { should respond_to(:stats) }
|
27
|
+
it { should respond_to(:tags) }
|
28
|
+
|
29
|
+
describe "must return" do
|
30
|
+
its(:id) { should eq 35}
|
31
|
+
its(:name) { should eq "Shaco" }
|
32
|
+
its(:title) {should eq "the Demon Jester"}
|
33
|
+
its(:key) { should eq "Shaco" }
|
34
|
+
its(:ally_tips) { should_not be_empty }
|
35
|
+
its(:enemy_tips) { should_not be_empty }
|
36
|
+
its(:blurb) { should include("Most would say that death isn't funny.") }
|
37
|
+
its(:image) { should be_kind_of(LolApi::Image) }
|
38
|
+
its(:info) { should be_kind_of(LolApi::Info) }
|
39
|
+
its(:lore) { should include("It isn't, unless you're Shaco - then it's hysterical.")}
|
40
|
+
its(:partype) { should eq "Mana" }
|
41
|
+
its(:passive) { should be_kind_of(LolApi::Passive) }
|
42
|
+
its(:recommended) { should_not be_empty }
|
43
|
+
its(:skins) { should_not be_empty }
|
44
|
+
its(:spells) { should_not be_empty }
|
45
|
+
its(:stats) { should_not be_empty }
|
46
|
+
its(:tags) { should include("Assassin")}
|
47
|
+
end
|
48
|
+
end
|