infostrada 0.1.26 → 0.1.27

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.
Files changed (76) hide show
  1. checksums.yaml +5 -13
  2. data/.rspec +2 -0
  3. data/.rubocop.yml +2 -0
  4. data/.travis.yml +6 -0
  5. data/README.md +2 -0
  6. data/infostrada.gemspec +4 -1
  7. data/lib/infostrada.rb +6 -12
  8. data/lib/infostrada/call_refresh.rb +2 -1
  9. data/lib/infostrada/competition.rb +2 -1
  10. data/lib/infostrada/core_ext/hash.rb +14 -0
  11. data/lib/infostrada/core_ext/string.rb +19 -2
  12. data/lib/infostrada/match.rb +2 -2
  13. data/lib/infostrada/match_event.rb +1 -1
  14. data/lib/infostrada/mock.rb +76 -0
  15. data/lib/infostrada/nation.rb +2 -2
  16. data/lib/infostrada/person_info.rb +12 -12
  17. data/lib/infostrada/phase.rb +11 -13
  18. data/lib/infostrada/player.rb +11 -11
  19. data/lib/infostrada/squad.rb +3 -6
  20. data/lib/infostrada/team.rb +4 -4
  21. data/lib/infostrada/team_info.rb +1 -1
  22. data/lib/infostrada/team_request.rb +2 -5
  23. data/lib/infostrada/version.rb +1 -1
  24. data/spec/base_request_spec.rb +19 -0
  25. data/spec/competition_spec.rb +67 -0
  26. data/spec/edition_request_spec.rb +20 -0
  27. data/spec/edition_spec.rb +111 -0
  28. data/spec/endpoint_spec.rb +62 -0
  29. data/spec/formatter_spec.rb +12 -0
  30. data/spec/helpers/json_helper.rb +41 -0
  31. data/spec/json/competition.json +55 -0
  32. data/spec/json/edition.json +61 -0
  33. data/spec/json/edition_request.json +242 -0
  34. data/spec/json/endpoint.json +46 -0
  35. data/spec/json/match.json +945 -0
  36. data/spec/json/match_event.json +187 -0
  37. data/spec/json/match_event_list.json +411 -0
  38. data/spec/json/nation.json +302 -0
  39. data/spec/json/person_info.json +52 -0
  40. data/spec/json/phase.json +158 -0
  41. data/spec/json/player.json +93 -0
  42. data/spec/json/referee.json +184 -0
  43. data/spec/json/sample_responses/all_editions.json +243 -0
  44. data/spec/json/sample_responses/competition_edition_league_21594_serie_a.json +4 -0
  45. data/spec/json/sample_responses/competition_match_days_league_21594_serie_a.json +473 -0
  46. data/spec/json/sample_responses/competition_match_list_league_21594_serie_a.json +25465 -0
  47. data/spec/json/sample_responses/competition_phases_cup_21204_capital_one_cup.json +138 -0
  48. data/spec/json/sample_responses/competition_phases_league_21594_serie_a.json +24 -0
  49. data/spec/json/sample_responses/competition_table_phase_114165_serie_a_2015.json +585 -0
  50. data/spec/json/sample_responses/competition_teams_league_21594.json +165 -0
  51. data/spec/json/sample_responses/get_api_call_refresh_module.json +65 -0
  52. data/spec/json/sample_responses/match_events_1788734_real_atletico_final_champions.json +7960 -0
  53. data/spec/json/sample_responses/match_info_1788734_real_atletico_final_champions.json +96 -0
  54. data/spec/json/sample_responses/match_info_upcoming_1968820_serie_a.json +96 -0
  55. data/spec/json/sample_responses/person_info_611005_bale.json +55 -0
  56. data/spec/json/sample_responses/squad_100163_on_edition_21590.json +1355 -0
  57. data/spec/json/sample_responses/team_info_100163.json +28 -0
  58. data/spec/json/sample_responses/template_dummy_response.json +4 -0
  59. data/spec/json/squad.json +514 -0
  60. data/spec/json/team.json +10 -0
  61. data/spec/json/team_info.json +25 -0
  62. data/spec/json/team_request.json +68 -0
  63. data/spec/match_event_list_spec.rb +21 -0
  64. data/spec/match_event_spec.rb +159 -0
  65. data/spec/match_spec.rb +430 -0
  66. data/spec/nation_spec.rb +179 -0
  67. data/spec/person_info_spec.rb +69 -0
  68. data/spec/phase_spec.rb +183 -0
  69. data/spec/player_spec.rb +112 -0
  70. data/spec/referee_spec.rb +71 -0
  71. data/spec/spec_helper.rb +117 -0
  72. data/spec/squad_spec.rb +25 -0
  73. data/spec/team_info_spec.rb +77 -0
  74. data/spec/team_request_spec.rb +24 -0
  75. data/spec/team_spec.rb +76 -0
  76. metadata +213 -43
@@ -0,0 +1,10 @@
1
+ {
2
+ "default": {
3
+ "n_TeamID": 100163,
4
+ "c_Team": "Atl\u00e9tico-MG",
5
+ "c_TeamShort": "ATM",
6
+ "n_TeamNatioGeoID": 2235,
7
+ "c_TeamNatio": "Brazil",
8
+ "c_TeamNatioShort": "BRA"
9
+ }
10
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "default": {
3
+ "c_OfficialName": "Club Atl\u00e9tico Mineiro",
4
+ "c_OfficialNameSort": "Club Atl\u00e9tico Mineiro",
5
+ "c_PublicName": "Atl\u00e9tico-MG",
6
+ "c_PublicNameSort": "Atl\u00e9tico-MG",
7
+ "c_PublicNameShort": "ATM",
8
+ "c_Nickname": null,
9
+ "n_NatioGeoID": 2235,
10
+ "c_Natio": "Brazil",
11
+ "c_NatioShort": "BRA",
12
+ "d_FoundationDate": "/Date(-1949360400000+0100)/",
13
+ "n_FoundationYear": 1908,
14
+ "n_StadiumGeoID": 10434,
15
+ "c_Stadium": "Est\u00e1dio Independ\u00eancia",
16
+ "c_StadiumOfficialName": "Est\u00e1dio Independ\u00eancia",
17
+ "n_StadiumCapacity": null,
18
+ "n_CityGeoID": 40862,
19
+ "c_City": "Belo Horizonte",
20
+ "n_CountryGeoID": 2235,
21
+ "c_Country": "Brazil",
22
+ "c_CountryShort": "BRA",
23
+ "c_URL": "http://www.atletico.com.br/"
24
+ }
25
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "list":[
3
+ {
4
+ "n_TeamID": 100163,
5
+ "c_Team": "Atl\u00e9tico-MG",
6
+ "c_TeamShort": "ATM",
7
+ "n_TeamNatioGeoID": 2235,
8
+ "c_TeamNatio": "Brazil",
9
+ "c_TeamNatioShort": "BRA"
10
+ },
11
+ {
12
+ "n_TeamID": 104005,
13
+ "c_Team": "Atl\u00e9tico-PR",
14
+ "c_TeamShort": "ATP",
15
+ "n_TeamNatioGeoID": 2235,
16
+ "c_TeamNatio": "Brazil",
17
+ "c_TeamNatioShort": "BRA"
18
+ },
19
+ {
20
+ "n_TeamID": 113506,
21
+ "c_Team": "Ava\u00ed",
22
+ "c_TeamShort": "AFC",
23
+ "n_TeamNatioGeoID": 2235,
24
+ "c_TeamNatio": "Brazil",
25
+ "c_TeamNatioShort": "BRA"
26
+ },
27
+ {
28
+ "n_TeamID": 106816,
29
+ "c_Team": "Chapecoense",
30
+ "c_TeamShort": "ACF",
31
+ "n_TeamNatioGeoID": 2235,
32
+ "c_TeamNatio": "Brazil",
33
+ "c_TeamNatioShort": "BRA"
34
+ },
35
+ {
36
+ "n_TeamID": 103045,
37
+ "c_Team": "Corinthians",
38
+ "c_TeamShort": "COR",
39
+ "n_TeamNatioGeoID": 2235,
40
+ "c_TeamNatio": "Brazil",
41
+ "c_TeamNatioShort": "BRA"
42
+ },
43
+ {
44
+ "n_TeamID": 104004,
45
+ "c_Team": "Coritiba",
46
+ "c_TeamShort": "CRB",
47
+ "n_TeamNatioGeoID": 2235,
48
+ "c_TeamNatio": "Brazil",
49
+ "c_TeamNatioShort": "BRA"
50
+ },
51
+ {
52
+ "n_TeamID": 102310,
53
+ "c_Team": "Cruzeiro",
54
+ "c_TeamShort": "CRU",
55
+ "n_TeamNatioGeoID": 2235,
56
+ "c_TeamNatio": "Brazil",
57
+ "c_TeamNatioShort": "BRA"
58
+ },
59
+ {
60
+ "n_TeamID": 108038,
61
+ "c_Team": "Figueirense",
62
+ "c_TeamShort": "FFC",
63
+ "n_TeamNatioGeoID": 2235,
64
+ "c_TeamNatio": "Brazil",
65
+ "c_TeamNatioShort": "BRA"
66
+ }
67
+ ]
68
+ }
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Infostrada::MatchEventList do
4
+ let(:match_id) { 29 }
5
+ let(:default) { JSONHelper::MatchEventList.get(:default) }
6
+ let(:path) { 'GetMatchActionList_All' }
7
+ let(:uri) { "#{@base_url}/#{path}?#{@default_params}&&matchid=#{match_id}" }
8
+
9
+ before do
10
+ stub_request(:get, uri)
11
+ .to_return(status: 200, body: default.to_json)
12
+ end
13
+
14
+ describe '.where' do
15
+ it 'creates list of events' do
16
+ results = Infostrada::MatchEventList.where(match_id: match_id)
17
+ expect(results).not_to be_empty
18
+ expect(results.count).to eq(default.count)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,159 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Infostrada::MatchEvent do
4
+ let(:event_1) { JSONHelper::MatchEvent.get(:event_1) }
5
+ let(:match_id) { rand(10) }
6
+ let(:event) { Infostrada::MatchEvent.new(match_id, event_1) }
7
+
8
+ describe '#initialize' do
9
+ it 'has match_id' do
10
+ expect(event.match_id).not_to be_nil
11
+ expect(event.match_id).to eq(match_id)
12
+ end
13
+
14
+ it 'has id' do
15
+ expect(event.id).not_to be_nil
16
+ expect(event.id).to eq(event_1['n_ActionID'])
17
+ end
18
+
19
+ it 'has description' do
20
+ expect(event.description).not_to be_nil
21
+ expect(event.description).to eq(event_1['c_Action'])
22
+ end
23
+
24
+ it 'has short_description' do
25
+ expect(event.short_description).not_to be_nil
26
+ expect(event.short_description).to eq(event_1['c_ActionShort'])
27
+ end
28
+
29
+ it 'has period' do
30
+ expect(event.period).not_to be_nil
31
+ expect(event.period).to eq(event_1['c_Period'])
32
+ end
33
+
34
+ it 'has period_short' do
35
+ expect(event.period_short).not_to be_nil
36
+ expect(event.period_short).to eq(event_1['c_PeriodShort'])
37
+ end
38
+
39
+ it 'has period_code' do
40
+ expect(event.period_code).not_to be_nil
41
+ expect(event.period_code).to eq(event_1['n_PeriodSort'])
42
+ end
43
+
44
+ it 'has time' do
45
+ expect(event.time).not_to be_nil
46
+ expect(event.time).to eq(event_1['n_ActionTime'])
47
+ end
48
+
49
+ it 'has home_goals' do
50
+ expect(event.home_goals).not_to be_nil
51
+ expect(event.home_goals).to eq(event_1['n_HomeGoals'])
52
+ end
53
+
54
+ it 'has away_goals' do
55
+ expect(event.away_goals).not_to be_nil
56
+ expect(event.away_goals).to eq(event_1['n_AwayGoals'])
57
+ end
58
+
59
+ it 'has home_event' do
60
+ expect(event.home_event).not_to be_nil
61
+ expect(event.home_event).to eq(event_1['n_HomeOrAway'] == 1)
62
+ end
63
+
64
+ it 'has team_id' do
65
+ expect(event.team_id).not_to be_nil
66
+ expect(event.team_id).to eq(event_1['n_TeamID'])
67
+ end
68
+
69
+ it 'has team_name' do
70
+ expect(event.team_name).not_to be_nil
71
+ expect(event.team_name).to eq(event_1['c_Team'])
72
+ end
73
+
74
+ it 'has team_short_name' do
75
+ expect(event.team_short_name).not_to be_nil
76
+ expect(event.team_short_name).to eq(event_1['c_TeamShort'])
77
+ end
78
+
79
+ it 'has person_id' do
80
+ expect(event.person_id).not_to be_nil
81
+ expect(event.person_id).to eq(event_1['n_PersonID'])
82
+ end
83
+
84
+ it 'has person_name' do
85
+ expect(event.person_name).not_to be_nil
86
+ expect(event.person_name).to eq(event_1['c_Person'])
87
+ end
88
+
89
+ it 'has person_short_name' do
90
+ expect(event.person_short_name).not_to be_nil
91
+ expect(event.person_short_name).to eq(event_1['c_PersonShort'])
92
+ end
93
+
94
+ it 'has reason' do
95
+ expect(event.reason).not_to be_nil
96
+ expect(event.reason).to eq(event_1['c_ActionReason'])
97
+ end
98
+
99
+ it 'has info' do
100
+ expect(event.info).not_to be_nil
101
+ expect(event.info).to eq(event_1['c_ActionInfo'])
102
+ end
103
+
104
+ it 'has person2_id' do
105
+ expect(event.person2_id).not_to be_nil
106
+ expect(event.person2_id).to eq(event_1['n_SubPersonID'])
107
+ end
108
+
109
+ it 'has person2_name' do
110
+ expect(event.person2_name).not_to be_nil
111
+ expect(event.person2_name).to eq(event_1['c_SubPerson'])
112
+ end
113
+
114
+ it 'has person2_short_name' do
115
+ expect(event.person2_short_name).not_to be_nil
116
+ expect(event.person2_short_name).to eq(event_1['c_SubPersonShort'])
117
+ end
118
+
119
+ it 'has minute' do
120
+ expect(event.minute).not_to be_nil
121
+ expect(event.minute).to eq(event_1['c_ActionMinute'])
122
+ end
123
+
124
+ it 'has action_set' do
125
+ expect(event.action_set).not_to be_nil
126
+ expect(event.action_set).to eq(event_1['n_ActionSet'])
127
+ end
128
+
129
+ it 'has action_code' do
130
+ expect(event.action_code).not_to be_nil
131
+ expect(event.action_code).to eq(event_1['n_ActionCode'])
132
+ end
133
+
134
+ it 'has action_code_2' do
135
+ expect(event.action_code_2).not_to be_nil
136
+ expect(event.action_code_2).to eq(event_1['n_ActionCode2'])
137
+ end
138
+
139
+ it 'has action_code_3' do
140
+ expect(event.action_code_3).not_to be_nil
141
+ expect(event.action_code_3).to eq(event_1['n_ActionCode3'])
142
+ end
143
+
144
+ it 'has action_sort' do
145
+ expect(event.action_sort).not_to be_nil
146
+ expect(event.action_sort).to eq(event_1['n_ActionSort'])
147
+ end
148
+ end
149
+
150
+ context '#from_json' do
151
+ let(:event_from_json) { Infostrada::MatchEvent.from_json(event.as_json.clone) }
152
+
153
+ describe '#initialize' do
154
+ it 'has match_id' do
155
+ expect(event_from_json.match_id).not_to be_nil
156
+ end
157
+ end
158
+ end
159
+ end
@@ -0,0 +1,430 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Infostrada::Match do
4
+ context 'With Cup KnockOut Round Finished Json' do
5
+ let(:complete_match) { JSONHelper::Match.get(:cup_knock_out_finished_complete) }
6
+ let(:no_referee_match) { JSONHelper::Match.get(:cup_knock_out_finished_no_referee) }
7
+ let(:no_stadium_match) { JSONHelper::Match.get(:cup_knock_out_finished_no_stadium) }
8
+
9
+ describe '#initialize' do
10
+ context 'complete match' do
11
+ let(:match) { Infostrada::Match.new(complete_match.clone) }
12
+
13
+ it 'has id' do
14
+ expect(match.id).to be(complete_match['n_MatchID'])
15
+ end
16
+
17
+ it 'has rescheduled' do
18
+ expect(match.rescheduled).to be(complete_match['b_RescheduledToBeResumed'])
19
+ end
20
+
21
+ it 'has date' do
22
+ expect(match.date).not_to be(nil)
23
+ end
24
+
25
+ it 'has round' do
26
+ expect(match.round).to be(complete_match['n_RoundNr'])
27
+ end
28
+
29
+ it 'has time_unknown' do
30
+ expect(match.time_unknown).to be(false)
31
+ end
32
+
33
+ it 'has date_unknown' do
34
+ expect(match.date_unknown).to be(false)
35
+ end
36
+
37
+ it 'has aggregate_winner_id' do
38
+ expect(match.aggregate_winner_id).to be(complete_match['n_WinnerOnAggregateTeamID'])
39
+ end
40
+
41
+ it 'not_has current_period_started_at' do
42
+ expect(match.current_period_started_at).to be(nil)
43
+ end
44
+
45
+ it 'has status_code' do
46
+ expect(match.status_code).to be(complete_match['n_MatchStatusCode'])
47
+ end
48
+
49
+ it 'has status' do
50
+ expect(match.status).to be(complete_match['c_MatchStatus'])
51
+ end
52
+
53
+ it 'has status_short' do
54
+ expect(match.status_short).to be(complete_match['c_MatchStatusShort'])
55
+ end
56
+
57
+ it 'has leg' do
58
+ expect(match.leg).to be(complete_match['n_Leg'])
59
+ end
60
+
61
+ it 'has started_at' do
62
+ expect(match.started_at).not_to be(nil)
63
+ end
64
+
65
+ it 'has knockout_phase_id' do
66
+ expect(match.knockout_phase_id).to be(complete_match['n_KnockoutPhaseID'])
67
+ end
68
+
69
+ it 'has stadium_id' do
70
+ expect(match.stadium_id).to be(complete_match['n_StadiumGeoID'])
71
+ end
72
+
73
+ it 'has stadium_name' do
74
+ expect(match.stadium_name).to be(complete_match['c_Stadium'])
75
+ end
76
+
77
+ it 'has spectators' do
78
+ expect(match.spectators).to be(complete_match['n_Spectators'])
79
+ end
80
+
81
+ it 'has city' do
82
+ expect(match.city).to be(complete_match['c_City'])
83
+ end
84
+
85
+ it 'has live' do
86
+ expect(match.live).to be(complete_match['b_Live'])
87
+ end
88
+
89
+ it 'has started' do
90
+ expect(match.started).to be(complete_match['b_Started'])
91
+ end
92
+
93
+ it 'has finished' do
94
+ expect(match.finished).to be(complete_match['b_Finished'])
95
+ end
96
+
97
+ it 'has awarded' do
98
+ expect(match.awarded).to be(complete_match['b_Awarded'])
99
+ end
100
+
101
+ it 'has live_score' do
102
+ expect(match.live_score).to be(complete_match['b_DataEntryLiveScore'])
103
+ end
104
+
105
+ it 'has live_goals' do
106
+ expect(match.live_goals).to be(complete_match['b_DataEntryLiveGoal'])
107
+ end
108
+
109
+ it 'has live_lineup' do
110
+ expect(match.live_lineup).to be(complete_match['b_DataEntryLiveLineup'])
111
+ end
112
+
113
+ it 'has lineup_provisional' do
114
+ expect(match.lineup_provisional).to be(complete_match['b_LineupProvisional'])
115
+ end
116
+
117
+ it 'has lineup_official' do
118
+ expect(match.lineup_official).to be(complete_match['b_LineupOfficial'])
119
+ end
120
+
121
+ it 'has period' do
122
+ expect(match.period).to be(complete_match['n_PeriodSort'])
123
+ end
124
+
125
+ it 'has referee' do
126
+ expect(match.referee.id).to be(complete_match['n_RefereeID'])
127
+ end
128
+
129
+ it 'has phase' do
130
+ expect(match.phase.id).to be(complete_match['n_PhaseID'])
131
+ end
132
+
133
+ it 'has home_team' do
134
+ expect(match.home_team.id).to be(complete_match['n_HomeTeamID'])
135
+ end
136
+
137
+ it 'has away_team' do
138
+ expect(match.away_team.id).to be(complete_match['n_AwayTeamID'])
139
+ end
140
+
141
+ it 'has goals' do
142
+ expect(match.goals).not_to be(nil)
143
+ end
144
+
145
+ it 'has edition' do
146
+ expect(match.edition.id).to be(complete_match['n_EditionID'])
147
+ end
148
+ end
149
+
150
+ context 'without referee' do
151
+ let(:match) { Infostrada::Match.new(no_referee_match.clone) }
152
+
153
+ it 'not_fails' do
154
+ expect(match).not_to be(nil)
155
+ end
156
+
157
+ it 'not_has referee' do
158
+ expect(match.referee).to be(nil)
159
+ end
160
+ end
161
+
162
+ context 'without stadium' do
163
+ let(:match) { Infostrada::Match.new(no_stadium_match.clone) }
164
+
165
+ it 'not_fails' do
166
+ expect(match).not_to be(nil)
167
+ end
168
+
169
+ it 'not_has stadium_id' do
170
+ expect(match.stadium_id).to be(nil)
171
+ end
172
+
173
+ it 'not_has stadium_name' do
174
+ expect(match.stadium_name).to be(nil)
175
+ end
176
+ end
177
+ end
178
+
179
+ describe '.from_json' do
180
+ let(:complete_match_serialized) { Infostrada::Match.new(complete_match.clone).as_json }
181
+ let(:no_referee_match_serialized) { Infostrada::Match.new(no_referee_match.clone).as_json }
182
+ let(:no_stadium_match_serialized) { Infostrada::Match.new(no_stadium_match.clone).as_json }
183
+
184
+ context 'complete match' do
185
+ let(:match) { Infostrada::Match.from_json(complete_match_serialized.clone) }
186
+
187
+ it 'has id' do
188
+ expect(match.id).to be(complete_match_serialized['id'])
189
+ end
190
+
191
+ it 'has rescheduled' do
192
+ expect(match.rescheduled).to be(complete_match_serialized['rescheduled'])
193
+ end
194
+
195
+ it 'has round' do
196
+ expect(match.round).to be(complete_match_serialized['round'])
197
+ end
198
+
199
+ it 'has date' do
200
+ expect(match.date).not_to be(nil)
201
+ end
202
+
203
+ it 'has time_unknown' do
204
+ expect(match.time_unknown).to be(false)
205
+ end
206
+
207
+ it 'has date_unknown' do
208
+ expect(match.date_unknown).to be(false)
209
+ end
210
+
211
+ it 'has aggregate_winner_id' do
212
+ expect(match.aggregate_winner_id).to be(complete_match_serialized['aggregate_winner_id'])
213
+ end
214
+
215
+ it 'not_has current_period_started_at' do
216
+ expect(match.current_period_started_at).to be(nil)
217
+ end
218
+
219
+ it 'has status_code' do
220
+ expect(match.status_code).to be(complete_match_serialized['status_code'])
221
+ end
222
+
223
+ it 'has status' do
224
+ expect(match.status).to be(complete_match_serialized['status'])
225
+ end
226
+
227
+ it 'has status_short' do
228
+ expect(match.status_short).to be(complete_match_serialized['status_short'])
229
+ end
230
+
231
+ it 'has leg' do
232
+ expect(match.leg).to be(complete_match_serialized['leg'])
233
+ end
234
+
235
+ it 'has started_at' do
236
+ expect(match.started_at).not_to be(nil)
237
+ end
238
+
239
+ it 'has knockout_phase_id' do
240
+ expect(match.knockout_phase_id).to be(complete_match_serialized['knockout_phase_id'])
241
+ end
242
+
243
+ it 'has stadium_id' do
244
+ expect(match.stadium_id).to be(complete_match_serialized['stadium_id'])
245
+ end
246
+
247
+ it 'has stadium_name' do
248
+ expect(match.stadium_name).to be(complete_match_serialized['stadium_name'])
249
+ end
250
+
251
+ it 'has spectators' do
252
+ expect(match.spectators).to be(complete_match_serialized['spectators'])
253
+ end
254
+
255
+ it 'has city' do
256
+ expect(match.city).to be(complete_match_serialized['city'])
257
+ end
258
+
259
+ it 'has live' do
260
+ expect(match.live).to be(complete_match_serialized['live'])
261
+ end
262
+
263
+ it 'has started' do
264
+ expect(match.started).to be(complete_match_serialized['started'])
265
+ end
266
+
267
+ it 'has finished' do
268
+ expect(match.finished).to be(complete_match_serialized['finished'])
269
+ end
270
+
271
+ it 'has awarded' do
272
+ expect(match.awarded).to be(complete_match_serialized['awarded'])
273
+ end
274
+
275
+ it 'has live_score' do
276
+ expect(match.live_score).to be(complete_match_serialized['live_score'])
277
+ end
278
+
279
+ it 'has live_goals' do
280
+ expect(match.live_goals).to be(complete_match_serialized['live_goals'])
281
+ end
282
+
283
+ it 'has live_lineup' do
284
+ expect(match.live_lineup).to be(complete_match_serialized['live_lineup'])
285
+ end
286
+
287
+ it 'has lineup_provisional' do
288
+ expect(match.lineup_provisional).to be(complete_match_serialized['lineup_provisional'])
289
+ end
290
+
291
+ it 'has lineup_official' do
292
+ expect(match.lineup_official).to be(complete_match_serialized['lineup_official'])
293
+ end
294
+
295
+ it 'has period' do
296
+ expect(match.period).to be(complete_match_serialized['period'])
297
+ end
298
+
299
+ it 'has referee' do
300
+ expect(match.referee).not_to be(nil)
301
+ end
302
+
303
+ it 'has phase' do
304
+ expect(match.phase).not_to be(nil)
305
+ end
306
+
307
+ it 'has home_team' do
308
+ expect(match.home_team).not_to be(nil)
309
+ end
310
+
311
+ it 'has away_team' do
312
+ expect(match.away_team).not_to be(nil)
313
+ end
314
+
315
+ it 'has goals' do
316
+ expect(match.goals).not_to be(nil)
317
+ end
318
+
319
+ it 'has edition' do
320
+ expect(match.edition).not_to be(nil)
321
+ end
322
+ end
323
+
324
+ context 'without referee' do
325
+ let(:match) { Infostrada::Match.from_json(no_referee_match_serialized.clone) }
326
+
327
+ it 'not_fails' do
328
+ expect(match).not_to be(nil)
329
+ end
330
+
331
+ it 'not_has referee' do
332
+ expect(match.referee).to be(nil)
333
+ end
334
+ end
335
+
336
+ context 'without stadium' do
337
+ let(:match) { Infostrada::Match.from_json(no_stadium_match_serialized.clone) }
338
+
339
+ it 'not_fails' do
340
+ expect(match).not_to be(nil)
341
+ end
342
+
343
+ it 'not_has stadium_id' do
344
+ expect(match.stadium_id).to be(nil)
345
+ end
346
+
347
+ it 'not_has stadium_name' do
348
+ expect(match.stadium_name).to be(nil)
349
+ end
350
+ end
351
+ end
352
+ end
353
+
354
+ context 'With two handed elimination' do
355
+ context 'First round upcoming' do
356
+ let(:match_json) { JSONHelper::Match.get(:two_handed_round_first_leg_upcoming) }
357
+ let(:match) { Infostrada::Match.new(match_json.clone) }
358
+ let(:match_serialized) { match.as_json }
359
+ describe '#initialize' do
360
+ it 'not_fails' do
361
+ expect(match).not_to be_nil
362
+ end
363
+
364
+ it 'is_first_leg' do
365
+ expect(match.leg).to be(1)
366
+ end
367
+ end
368
+
369
+ describe '#from_json' do
370
+ it 'has id' do
371
+ expect(match.id).to be(match_serialized['id'])
372
+ end
373
+
374
+ it 'is_first_leg' do
375
+ expect(match.leg).to be(match_serialized['leg'])
376
+ end
377
+ end
378
+ end
379
+
380
+ describe 'Second round upcoming' do
381
+ let(:match_json) { JSONHelper::Match.get(:two_handed_round_second_leg_upcoming) }
382
+ let(:match) {Infostrada::Match.new(match_json.clone)}
383
+ let(:match_serialized) { match.as_json }
384
+ describe '#initialize' do
385
+ it 'not_fails' do
386
+ expect(match).not_to be_nil
387
+ end
388
+
389
+ it 'is_second_leg' do
390
+ expect(match.leg).to be(2)
391
+ end
392
+ end
393
+
394
+ describe '#from_json' do
395
+ it 'has id' do
396
+ expect(match.id).to be(match_serialized['id'])
397
+ end
398
+
399
+ it 'is_second_leg' do
400
+ expect(match.leg).to be(match_serialized['leg'])
401
+ end
402
+ end
403
+ end
404
+
405
+ describe 'Second round finished' do
406
+ let(:match_json) { JSONHelper::Match.get(:two_handed_round_second_leg_finished) }
407
+ let(:match) {Infostrada::Match.new(match_json.clone)}
408
+ let(:match_serialized) { match.as_json }
409
+ describe '#initialize' do
410
+ it 'not_fails' do
411
+ expect(match).not_to be_nil
412
+ end
413
+
414
+ it 'has aggregate_winner' do
415
+ expect(match.aggregate_winner_id).not_to be_nil
416
+ end
417
+ end
418
+
419
+ describe '#from_json' do
420
+ it 'has id' do
421
+ expect(match.id).to be(match_serialized['id'])
422
+ end
423
+
424
+ it 'is_has_aggregate_winner' do
425
+ expect(match.aggregate_winner_id).to be(match_serialized['aggregate_winner_id'])
426
+ end
427
+ end
428
+ end
429
+ end
430
+ end