infostrada 0.1.26 → 0.1.27

Sign up to get free protection for your applications and to get access to all the features.
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