steam_web_api 0.0.1
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 +19 -0
- data/.rspec +2 -0
- data/.travis.yml +15 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +22 -0
- data/README.html +1134 -0
- data/README.md +356 -0
- data/Rakefile +11 -0
- data/lib/steam_web_api/base.rb +39 -0
- data/lib/steam_web_api/configuration.rb +9 -0
- data/lib/steam_web_api/game.rb +37 -0
- data/lib/steam_web_api/player.rb +108 -0
- data/lib/steam_web_api/version.rb +3 -0
- data/lib/steam_web_api.rb +29 -0
- data/spec/fixtures/vcr/game_achievement_percentages.yml +624 -0
- data/spec/fixtures/vcr/game_achievement_percentages_error.yml +37 -0
- data/spec/fixtures/vcr/game_news_error.yml +37 -0
- data/spec/fixtures/vcr/game_news_success.yml +96 -0
- data/spec/fixtures/vcr/game_schema.yml +3538 -0
- data/spec/fixtures/vcr/player_achievements.yml +91 -0
- data/spec/fixtures/vcr/player_achievements_empty.yml +35 -0
- data/spec/fixtures/vcr/player_bans.yml +38 -0
- data/spec/fixtures/vcr/player_bans_error.yml +37 -0
- data/spec/fixtures/vcr/player_friends.yml +51 -0
- data/spec/fixtures/vcr/player_friends_error.yml +44 -0
- data/spec/fixtures/vcr/player_owned_games.yml +82 -0
- data/spec/fixtures/vcr/player_owned_games_appinfo.yml +291 -0
- data/spec/fixtures/vcr/player_playing_shared_game.yml +36 -0
- data/spec/fixtures/vcr/player_playing_shared_game_error.yml +44 -0
- data/spec/fixtures/vcr/player_recently_played_games.yml +48 -0
- data/spec/fixtures/vcr/player_recently_played_games_error.yml +44 -0
- data/spec/fixtures/vcr/player_recently_played_games_with_count.yml +42 -0
- data/spec/fixtures/vcr/player_single_bans.yml +36 -0
- data/spec/fixtures/vcr/player_single_bans_error.yml +37 -0
- data/spec/fixtures/vcr/player_single_summary.yml +43 -0
- data/spec/fixtures/vcr/player_single_summary_error.yml +37 -0
- data/spec/fixtures/vcr/player_summary.yml +51 -0
- data/spec/fixtures/vcr/player_summary_error.yml +37 -0
- data/spec/fixtures/vcr/stats_for_game.yml +321 -0
- data/spec/fixtures/vcr/stats_for_game_empty.yml +37 -0
- data/spec/spec_helper.rb +45 -0
- data/spec/steam_web_api/base_spec.rb +94 -0
- data/spec/steam_web_api/configuration_spec.rb +16 -0
- data/spec/steam_web_api/game_spec.rb +137 -0
- data/spec/steam_web_api/player_spec.rb +362 -0
- data/spec/steam_web_api_spec.rb +18 -0
- data/steam_web_api.gemspec +30 -0
- metadata +235 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
RSpec.describe SteamWebApi::Game do
|
|
4
|
+
|
|
5
|
+
let(:game) { SteamWebApi::Game.new(8930) }
|
|
6
|
+
let(:non_existing_game) { SteamWebApi::Game.new('non-existing') }
|
|
7
|
+
|
|
8
|
+
before do
|
|
9
|
+
SteamWebApi.configure do |config|
|
|
10
|
+
config.api_key = ENV['STEAM_WEB_API_KEY']
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe '.all' do
|
|
15
|
+
|
|
16
|
+
before do
|
|
17
|
+
# this is a huge list, so just stub and not use vcr
|
|
18
|
+
stub_request(:get, 'http://api.steampowered.com/ISteamApps/GetAppList/v0002/')
|
|
19
|
+
.to_return(body: '
|
|
20
|
+
{
|
|
21
|
+
"applist": {
|
|
22
|
+
"apps": [
|
|
23
|
+
{
|
|
24
|
+
"appid": 5,
|
|
25
|
+
"name": "Dedicated Server"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"appid": 7,
|
|
29
|
+
"name": "Steam Client"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"appid": 8,
|
|
33
|
+
"name": "winui2"
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
')
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'return lists of all games on Steam' do
|
|
42
|
+
data = SteamWebApi::Game.all
|
|
43
|
+
expect(data.success).to be true
|
|
44
|
+
expect(data.games.size).to eq 3
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe '#schema' do
|
|
50
|
+
|
|
51
|
+
it 'returns game schema' do
|
|
52
|
+
VCR.use_cassette('game_schema') do
|
|
53
|
+
schema = game.schema
|
|
54
|
+
expect(schema.name).to eq 'ValveTestApp8930'
|
|
55
|
+
expect(schema.version).to eq '108'
|
|
56
|
+
expect(schema.achievements.first).to eq(
|
|
57
|
+
{
|
|
58
|
+
"name" => "ACHIEVEMENT_WIN_WASHINGTON",
|
|
59
|
+
"defaultvalue" => 0,
|
|
60
|
+
"displayName" => "First in the Hearts of Your Countrymen",
|
|
61
|
+
"hidden" => 0,
|
|
62
|
+
"description" => "Beat the game on any difficulty setting as Washington.",
|
|
63
|
+
"icon" => "http://cdn.akamai.steamstatic.com/steamcommunity/public/images/apps/8930/4cf17a59d70b2decfd4369de8a7429e7b00f5ab8.jpg",
|
|
64
|
+
"icongray" => "http://cdn.akamai.steamstatic.com/steamcommunity/public/images/apps/8930/2ce109f9be6cb3193a385444b9b0b0ffcc7b2219.jpg"
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
expect(schema.stats.first).to eq(
|
|
68
|
+
{
|
|
69
|
+
"name" => "ESTEAMSTAT_TOTAL_WINS",
|
|
70
|
+
"defaultvalue" => 0,
|
|
71
|
+
"displayName" => "Total Games Won."
|
|
72
|
+
}
|
|
73
|
+
)
|
|
74
|
+
expect(schema.success).to be true
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
describe '#achievement_percentages' do
|
|
81
|
+
|
|
82
|
+
context 'when the response is successful' do
|
|
83
|
+
|
|
84
|
+
it 'returns list of achievements with global percentage stats' do
|
|
85
|
+
VCR.use_cassette('game_achievement_percentages') do
|
|
86
|
+
data = game.achievement_percentages
|
|
87
|
+
expect(data.achievements.first['name']).to eq 'ACHIEVEMENT_ANCIENT_RUIN'
|
|
88
|
+
expect(data.achievements.first['percent']).to eq 76.74992370605469
|
|
89
|
+
expect(data.success).to be true
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
context 'when the response is not successful' do
|
|
96
|
+
|
|
97
|
+
it 'returns object with attribute success equals false and empty list' do
|
|
98
|
+
VCR.use_cassette('game_achievement_percentages_error') do
|
|
99
|
+
data = non_existing_game.achievement_percentages
|
|
100
|
+
expect(data.success).to be false
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
describe '#news' do
|
|
110
|
+
|
|
111
|
+
context 'when response is successful' do
|
|
112
|
+
|
|
113
|
+
it 'returns list of news' do
|
|
114
|
+
VCR.use_cassette('game_news_success') do
|
|
115
|
+
data = game.news(count: 4)
|
|
116
|
+
expect(data.news_items.size).to eq 4
|
|
117
|
+
expect(data.app_id).to eq 8930
|
|
118
|
+
expect(data.success).to be true
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
context 'when response is not successful' do
|
|
125
|
+
|
|
126
|
+
it 'returns object with attribute success equals false and empty list' do
|
|
127
|
+
VCR.use_cassette('game_news_error') do
|
|
128
|
+
data = non_existing_game.news
|
|
129
|
+
expect(data.success).to be false
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
end
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
RSpec.describe SteamWebApi::Player do
|
|
4
|
+
|
|
5
|
+
let(:player) { SteamWebApi::Player.new('76561198046174695') }
|
|
6
|
+
let(:player_2) { SteamWebApi::Player.new('76561197960435530') }
|
|
7
|
+
let(:player_non_existing) { SteamWebApi::Player.new('aaa') }
|
|
8
|
+
|
|
9
|
+
before do
|
|
10
|
+
SteamWebApi.configure do |config|
|
|
11
|
+
config.api_key = ENV['STEAM_WEB_API_KEY']
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe '#owned_games' do
|
|
16
|
+
|
|
17
|
+
it 'returns list of games for player' do
|
|
18
|
+
VCR.use_cassette('player_owned_games') do
|
|
19
|
+
player_data = player.owned_games
|
|
20
|
+
expect(player_data.count).to eq 45
|
|
21
|
+
expect(player_data.games.first['appid']).to eq 4760
|
|
22
|
+
expect(player_data.games.last['playtime_forever']).to eq 0
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context 'when include_appinfo config attribute was set to true' do
|
|
27
|
+
|
|
28
|
+
it 'returns additional info about game' do
|
|
29
|
+
VCR.use_cassette('player_owned_games_appinfo') do
|
|
30
|
+
player_data = player.owned_games(include_appinfo: true)
|
|
31
|
+
game = player_data.games[3]
|
|
32
|
+
expect(game['name']).to eq 'Napoleon: Total War'
|
|
33
|
+
expect(game['img_icon_url']).to eq 'e6263fa77b39b3b83db00d089aed8dc0aac11b20'
|
|
34
|
+
expect(game['img_logo_url']).to eq 'eca670df2bb35587996bfb4da6a45a8985ace139'
|
|
35
|
+
expect(game['has_community_visible_stats']).to be true
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe '#stats_for_game' do
|
|
44
|
+
|
|
45
|
+
context 'when game has stats' do
|
|
46
|
+
|
|
47
|
+
it 'returns player stats for a game' do
|
|
48
|
+
VCR.use_cassette('stats_for_game') do
|
|
49
|
+
data = player.stats_for_game(8930)
|
|
50
|
+
expect(data.steam_id).to eq '76561198046174695'
|
|
51
|
+
expect(data.game_name).to eq 'ValveTestApp8930'
|
|
52
|
+
expect(data.achievements.length).to eq 151
|
|
53
|
+
expect(data.stats.length).to eq 134
|
|
54
|
+
expect(data.success).to be true
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
context 'when game does not have stats' do
|
|
61
|
+
|
|
62
|
+
it 'returns object with success attribute set to false' do
|
|
63
|
+
VCR.use_cassette('stats_for_game_empty') do
|
|
64
|
+
data = player.stats_for_game(4760)
|
|
65
|
+
expect(data.success).to be false
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
describe '#achievements' do
|
|
75
|
+
|
|
76
|
+
context 'when game has stats' do
|
|
77
|
+
|
|
78
|
+
it 'returns list of player achievements for game' do
|
|
79
|
+
VCR.use_cassette('player_achievements') do
|
|
80
|
+
data = player.achievements(232050)
|
|
81
|
+
expect(data.steam_id).to eq '76561198046174695'
|
|
82
|
+
expect(data.game_name).to eq 'Eador. Masters of the Broken World'
|
|
83
|
+
expect(data.achievements.size).to eq 55
|
|
84
|
+
expect(data.success).to be true
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
context 'when game does not have stats' do
|
|
91
|
+
|
|
92
|
+
it 'returns object with success attribute set to false' do
|
|
93
|
+
VCR.use_cassette('player_achievements_empty') do
|
|
94
|
+
data = player.achievements(4760)
|
|
95
|
+
expect(data.success).to eq false
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
describe '.summary' do
|
|
105
|
+
|
|
106
|
+
context 'when response is successful' do
|
|
107
|
+
|
|
108
|
+
it 'returns profile information for players' do
|
|
109
|
+
VCR.use_cassette('player_summary') do
|
|
110
|
+
data = SteamWebApi::Player.summary(player.steam_id, player_2.steam_id)
|
|
111
|
+
first_player = data.players.first
|
|
112
|
+
second_player = data.players[1]
|
|
113
|
+
expect(first_player['steamid']).to eq '76561198046174695'
|
|
114
|
+
expect(first_player['personaname']).to eq 'gravin79'
|
|
115
|
+
expect(first_player['realname']).to eq 'GTomasz'
|
|
116
|
+
expect(second_player['steamid']).to eq '76561197960435530'
|
|
117
|
+
expect(second_player['realname']).to eq 'Robin Walker'
|
|
118
|
+
expect(second_player['personaname']).to eq 'Robin'
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
context 'when response is not successful' do
|
|
125
|
+
|
|
126
|
+
before do
|
|
127
|
+
SteamWebApi.configure do |config|
|
|
128
|
+
config.api_key = 'invalid'
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it 'returns object with attribute success equals false and empty list' do
|
|
133
|
+
VCR.use_cassette('player_summary_error') do
|
|
134
|
+
data = SteamWebApi::Player.summary(player.steam_id, player_2.steam_id)
|
|
135
|
+
expect(data.success).to be false
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
describe '#summary' do
|
|
144
|
+
|
|
145
|
+
context 'when response is successful' do
|
|
146
|
+
|
|
147
|
+
it 'returns profile information for single player' do
|
|
148
|
+
VCR.use_cassette('player_single_summary') do
|
|
149
|
+
data = player.summary
|
|
150
|
+
expect(data.profile['steamid']).to eq '76561198046174695'
|
|
151
|
+
expect(data.profile['personaname']).to eq 'gravin79'
|
|
152
|
+
expect(data.profile['realname']).to eq 'GTomasz'
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
context 'when response is not successful' do
|
|
159
|
+
|
|
160
|
+
before do
|
|
161
|
+
SteamWebApi.configure do |config|
|
|
162
|
+
config.api_key = 'invalid'
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
it 'returns object with empty profile hash and attribute success equals false' do
|
|
167
|
+
VCR.use_cassette('player_single_summary_error') do
|
|
168
|
+
data = player.summary
|
|
169
|
+
expect(data.success).to be false
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
describe '#friends' do
|
|
178
|
+
|
|
179
|
+
context 'when response is successful' do
|
|
180
|
+
|
|
181
|
+
it 'returns list of friends' do
|
|
182
|
+
VCR.use_cassette('player_friends') do
|
|
183
|
+
data = player.friends
|
|
184
|
+
expect(data.success).to be true
|
|
185
|
+
expect(data.friends).not_to be_empty
|
|
186
|
+
|
|
187
|
+
friend = data.friends.first
|
|
188
|
+
expect(friend['steamid']).to eq '76561197968589933'
|
|
189
|
+
expect(friend['relationship']).to eq 'friend'
|
|
190
|
+
expect(friend['friend_since']).to eq 1397319937
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
context 'when response is not successful' do
|
|
197
|
+
|
|
198
|
+
it 'returns empty list of friends and attribute success equals false' do
|
|
199
|
+
VCR.use_cassette('player_friends_error') do
|
|
200
|
+
data = player_non_existing.friends
|
|
201
|
+
expect(data.success).to be false
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
describe '#recently_played_games' do
|
|
210
|
+
|
|
211
|
+
context 'when response is successful' do
|
|
212
|
+
|
|
213
|
+
it 'returns list of recently played games' do
|
|
214
|
+
VCR.use_cassette('player_recently_played_games') do
|
|
215
|
+
data = player.recently_played_games
|
|
216
|
+
expect(data.games).not_to be_empty
|
|
217
|
+
expect(data.success).to be true
|
|
218
|
+
expect(data.total_count).to eq 4
|
|
219
|
+
|
|
220
|
+
game = data.games.first
|
|
221
|
+
expect(game['appid']).to eq 208400
|
|
222
|
+
expect(game['name']).to eq 'Avernum: Escape From the Pit'
|
|
223
|
+
expect(game['playtime_2weeks']).to eq 2485
|
|
224
|
+
expect(game['playtime_forever']).to eq 3617
|
|
225
|
+
expect(game['img_icon_url']).to eq '6b931adb3c4af3fc2498dacafc3a104f03682d1a'
|
|
226
|
+
expect(game['img_logo_url']).to eq '63992c2df9af7a83c8a4a173675af6e7554164ec'
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
context 'when count option is given' do
|
|
231
|
+
|
|
232
|
+
it 'returns limited list of games' do
|
|
233
|
+
VCR.use_cassette('player_recently_played_games_with_count') do
|
|
234
|
+
data = player.recently_played_games(2)
|
|
235
|
+
expect(data.games.size).to eq 2
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
context 'when response is not successful' do
|
|
244
|
+
|
|
245
|
+
it 'returns empty list of games and attribute success equals false' do
|
|
246
|
+
VCR.use_cassette('player_recently_played_games_error') do
|
|
247
|
+
data = player_non_existing.recently_played_games
|
|
248
|
+
expect(data.success).to be false
|
|
249
|
+
end
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
describe '#playing_shared_game' do
|
|
257
|
+
|
|
258
|
+
context 'when response is successful' do
|
|
259
|
+
|
|
260
|
+
it 'returns the original owner\'s SteamID' do
|
|
261
|
+
VCR.use_cassette('player_playing_shared_game') do
|
|
262
|
+
data = player.playing_shared_game(240)
|
|
263
|
+
expect(data.lender_steamid).to eq '0'
|
|
264
|
+
expect(data.success).to be true
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
context 'when response is not successful' do
|
|
271
|
+
|
|
272
|
+
it 'returns object with success attribute equals false' do
|
|
273
|
+
VCR.use_cassette('player_playing_shared_game_error') do
|
|
274
|
+
data = player_non_existing.playing_shared_game(240)
|
|
275
|
+
expect(data.success).to be false
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
describe '.bans' do
|
|
284
|
+
|
|
285
|
+
context 'when response is successful' do
|
|
286
|
+
|
|
287
|
+
it 'returns info about users bans' do
|
|
288
|
+
VCR.use_cassette('player_bans') do
|
|
289
|
+
data = SteamWebApi::Player.bans(player.steam_id, player_2.steam_id)
|
|
290
|
+
expect(data.players.size).to eq 2
|
|
291
|
+
expect(data.success).to be true
|
|
292
|
+
|
|
293
|
+
first_player = data.players.first
|
|
294
|
+
expect(first_player['SteamId']).to eq '76561198046174695'
|
|
295
|
+
expect(first_player['CommunityBanned']).to be false
|
|
296
|
+
expect(first_player['VACBanned']).to be false
|
|
297
|
+
expect(first_player['NumberOfVACBans']).to eq 0
|
|
298
|
+
expect(first_player['DaysSinceLastBan']).to eq 0
|
|
299
|
+
expect(first_player['EconomyBan']).to eq "none"
|
|
300
|
+
end
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
context 'when response is not successful' do
|
|
306
|
+
|
|
307
|
+
before do
|
|
308
|
+
SteamWebApi.configure do |config|
|
|
309
|
+
config.api_key = 'invalid'
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
it 'returns object with empty players list and attribute success equals false' do
|
|
314
|
+
VCR.use_cassette('player_bans_error') do
|
|
315
|
+
data = SteamWebApi::Player.bans(player.steam_id, player_2.steam_id)
|
|
316
|
+
expect(data.success).to be false
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
describe '#bans' do
|
|
325
|
+
|
|
326
|
+
context 'when response is successful' do
|
|
327
|
+
|
|
328
|
+
it 'returns info ablout single user bans' do
|
|
329
|
+
VCR.use_cassette('player_single_bans') do
|
|
330
|
+
data = player.bans
|
|
331
|
+
expect(data.success).to be true
|
|
332
|
+
expect(data.bans['SteamId']).to eq '76561198046174695'
|
|
333
|
+
expect(data.bans['CommunityBanned']).to be false
|
|
334
|
+
expect(data.bans['VACBanned']).to be false
|
|
335
|
+
expect(data.bans['NumberOfVACBans']).to eq 0
|
|
336
|
+
expect(data.bans['DaysSinceLastBan']).to eq 0
|
|
337
|
+
expect(data.bans['EconomyBan']).to eq 'none'
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
context 'when response is not successful' do
|
|
344
|
+
|
|
345
|
+
before do
|
|
346
|
+
SteamWebApi.configure do |config|
|
|
347
|
+
config.api_key = 'invalid'
|
|
348
|
+
end
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
it 'returns object with empty bans and attribute success equals false' do
|
|
352
|
+
VCR.use_cassette('player_single_bans_error') do
|
|
353
|
+
data = player.bans
|
|
354
|
+
expect(data.success).to be false
|
|
355
|
+
end
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
RSpec.describe SteamWebApi do
|
|
4
|
+
|
|
5
|
+
describe '.configure' do
|
|
6
|
+
|
|
7
|
+
it 'sets api key for application' do
|
|
8
|
+
SteamWebApi.configure do |config|
|
|
9
|
+
config.api_key = 'some key'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
expect(SteamWebApi.config.api_key).to eq 'some key'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'steam_web_api/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "steam_web_api"
|
|
8
|
+
spec.version = SteamWebApi::VERSION
|
|
9
|
+
spec.authors = ["Olga Grabek"]
|
|
10
|
+
spec.email = ["olga.grabek@gmail.com"]
|
|
11
|
+
spec.summary = %q{This is a gem that makes trivial interacting with the Steam Web API}
|
|
12
|
+
spec.description = %q{This is a gem that makes trivial interacting with the Steam Web API}
|
|
13
|
+
spec.homepage = "https://github.com/Olgagr/steam-web-api"
|
|
14
|
+
spec.license = "MIT"
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
|
+
spec.require_paths = ["lib"]
|
|
20
|
+
|
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
|
23
|
+
spec.add_development_dependency "rspec", "~> 3.1"
|
|
24
|
+
spec.add_development_dependency "byebug", "~> 3.5"
|
|
25
|
+
spec.add_development_dependency "webmock", "~> 1.20"
|
|
26
|
+
spec.add_development_dependency "vcr", "~> 2.9"
|
|
27
|
+
spec.add_development_dependency "dotenv", "~> 1.0"
|
|
28
|
+
|
|
29
|
+
spec.add_dependency "faraday", "~> 0.9"
|
|
30
|
+
end
|