gillbus 0.14.12 → 0.15.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b5290bdf64c84e1285f8dd50212e126a1633761a
4
- data.tar.gz: 9d199f3d6647995876498ed7cfa7e0d1d9d8ac47
3
+ metadata.gz: 86ff42495ca0ac91395ca7d2f44e1109fd95a90b
4
+ data.tar.gz: ae27c073ed4ef845cee4f0099e5d16bad8f016b9
5
5
  SHA512:
6
- metadata.gz: ce3d4f439d35aac8a00d658b1300157ab67fd2c1576462f6b01436bf9772af10966e8c62855cbf1686dfafa28cfc4faa505c10abdcc5f3b63ae701875d939f63
7
- data.tar.gz: 2fa7fb8708f8bf93dbf0ce9f4582403e2474180a3e1090fb9d819c09cd169ddd705ac5c3658b23b46a42f4c6865b139420461d69925bcf261d1d317089a8c59b
6
+ metadata.gz: e25cf62b5632ad96b9bdca312474c26a7b04427b4b9f45a5ceb318e2484f76961e9f76862be71559edf68f03a0c4d7462d368dbb12b214a2714dd750294e12ed
7
+ data.tar.gz: 2b3cb677803aa430333282840918bef9326f16c8f2f7631f9af969cfabc7cccec5de634e78e60cb7a9ee1ab499a32c2226d4c0716d20769ea2c6cb66b25a49b3
@@ -134,6 +134,8 @@ class Gillbus
134
134
 
135
135
  field :segments, [Segment], key: "SEGMENT"
136
136
 
137
+ field :options, TripOptions, key: 'OPTIONS'
138
+
137
139
  def start_at
138
140
  ActiveSupport::TimeZone["Europe/Kiev"].parse("#{data["START_DATE"]} #{data["START_TIME"]}")
139
141
  end
@@ -149,7 +149,7 @@ class Gillbus
149
149
 
150
150
  field :segments, [Segment], key: "SEGMENT"
151
151
 
152
- field :options, [:string], root: 'OPTIONS', key: 'OPTION'
152
+ field :options, TripOptions, key: 'OPTIONS'
153
153
 
154
154
  def start_at
155
155
  ActiveSupport::TimeZone["Europe/Kiev"].parse("#{data["START_DATE"]} #{data["START_TIME"]}")
@@ -0,0 +1,29 @@
1
+ class Gillbus
2
+ class TripOptions
3
+
4
+ extend Fields
5
+ include UpdateAttrs
6
+
7
+ # услуги на рейсе (Wi-Fi, розетки и т.п.)
8
+ field :services, [TripService], root: 'TRIP_SERVICES', key: 'TRIP_SERVICE'
9
+
10
+ # условия по багажу на рейсе
11
+ field :luggage, [:string], root: 'LUGGAGE', key: 'ITEM'
12
+
13
+ # условия рассадки на рейсе
14
+ field :seating, [:string], root: 'SEATING', key: 'ITEM'
15
+
16
+ # информация о технических остановках
17
+ field :technical_stops, [:string], root: 'TECHNICAL_STOP', key: 'ITEM'
18
+
19
+ # критичная информация о рейсе
20
+ field :critical_info, [:string], root: 'CRITICAL_INFO', key: 'ITEM'
21
+
22
+ # опции полученные от внешних ресурсов
23
+ field :resource_options, [:string], root: 'RESOURCE_TRIP_OPTION', key: 'ITEM'
24
+
25
+ # информация, отмеченная как "прочее"
26
+ field :other, [:string], root: 'OTHER', key: 'ITEM'
27
+
28
+ end
29
+ end
@@ -0,0 +1,14 @@
1
+ class Gillbus
2
+ class TripService
3
+
4
+ extend Fields
5
+ include UpdateAttrs
6
+
7
+ # уникальный идентификатор услуги со справочника
8
+ field :id, :int, key: 'ID'
9
+
10
+ # название услуги в автобусе
11
+ field :name, :string, key: '__content__'
12
+
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  class Gillbus
2
- VERSION = "0.14.12"
2
+ VERSION = "0.15.0"
3
3
  end
data/lib/gillbus.rb CHANGED
@@ -41,6 +41,8 @@ class Gillbus
41
41
  require 'gillbus/helpers/update_attrs'
42
42
  require 'gillbus/helpers/parser'
43
43
 
44
+ require 'gillbus/structs/trip_service'
45
+ require 'gillbus/structs/trip_options'
44
46
  require 'gillbus/structs/point'
45
47
  require 'gillbus/structs/tariff'
46
48
  require 'gillbus/structs/segment'
@@ -101,8 +101,32 @@
101
101
  <CHECK_POINT>false</CHECK_POINT>
102
102
  </POINT>
103
103
  <OPTIONS>
104
- <OPTION>Кофе</OPTION>
105
- <OPTION>Wi-Fi</OPTION>
104
+ <TRIP_SERVICES>
105
+ <TRIP_SERVICE ID="1">Кофе</TRIP_SERVICE>
106
+ <TRIP_SERVICE ID="15">Wi-Fi</TRIP_SERVICE>
107
+ </TRIP_SERVICES>
108
+ <LUGGAGE>
109
+ <ITEM>В стоимость входит провоз 2 единиц багажа свыше 80 кг.</ITEM>
110
+ <ITEM>Ручная кладь 20см x 40см x 30см входит в стоимость билета.</ITEM>
111
+ <ITEM>Превышение по багажу оплачивается в размере 1% от стоимости тарифа.</ITEM>
112
+ </LUGGAGE>
113
+ <TECHNICAL_STOP>
114
+ <ITEM>Технические остановки осуществляются каждые 2-3 часа.</ITEM>
115
+ </TECHNICAL_STOP>
116
+ <CRITICAL_INFO>
117
+ <ITEM>ВНИМАНИЕ: Особые условия паспортного режима пересечения пропускного пункта (только с паспортами РБ и РФ).</ITEM>
118
+ </CRITICAL_INFO>
119
+ <SEATING>
120
+ <ITEM>Свободная рассадка.</ITEM>
121
+ </SEATING>
122
+ <RESOURCE_TRIP_OPTION>
123
+ <ITEM>Посадка начинается за 10 мин.</ITEM>
124
+ </RESOURCE_TRIP_OPTION>
125
+ <OTHER>
126
+ <ITEM>Переправа</ITEM>
127
+ <ITEM>Трансфер</ITEM>
128
+ <ITEM>Cкидка при покупке раунд-трипа</ITEM>
129
+ </OTHER>
106
130
  </OPTIONS>
107
131
  </TRIP>
108
132
  <TRIP>
@@ -201,5 +225,7 @@
201
225
  <DISPATCH_TIME/>
202
226
  <CHECK_POINT>false</CHECK_POINT>
203
227
  </POINT>
228
+ <OPTIONS>
229
+ </OPTIONS>
204
230
  </TRIP>
205
231
  </DATA>
@@ -84,13 +84,66 @@ class SearchTripsResponseTest < Minitest::Test
84
84
  assert_equal 'Europe/Moscow', response.trips.first.start_timezone
85
85
  assert_equal 'Europe/Moscow', response.trips.first.end_timezone
86
86
  assert_equal true, response.trips.first.fake_time_in_road
87
- assert_equal ['Кофе', 'Wi-Fi'], response.trips.first.options
88
87
  assert_equal false, response.trips[1].recommended
89
88
  assert_equal true, response.trips.first.recommended
90
89
  assert_equal ['cause 1', 'cause 2'], response.trips.first.tariffs.first.return_cause
91
90
  assert_equal ['cause 1'], response.trips[1].tariffs.first.return_cause
92
91
  end
93
92
 
93
+ def test_options_parsing
94
+ response = get_successful_search_trips
95
+ options = response.trips.first.options
96
+
97
+ services = {
98
+ 1 => 'Кофе',
99
+ 15 => 'Wi-Fi'
100
+ }
101
+ luggage_options = [
102
+ 'В стоимость входит провоз 2 единиц багажа свыше 80 кг.',
103
+ 'Ручная кладь 20см x 40см x 30см входит в стоимость билета.',
104
+ 'Превышение по багажу оплачивается в размере 1% от стоимости тарифа.'
105
+ ]
106
+ seating_options = [
107
+ 'Свободная рассадка.'
108
+ ]
109
+ technical_stops = [
110
+ 'Технические остановки осуществляются каждые 2-3 часа.'
111
+ ]
112
+ critical_info = [
113
+ 'ВНИМАНИЕ: Особые условия паспортного режима пересечения пропускного пункта (только с паспортами РБ и РФ).'
114
+ ]
115
+ resource_options = [
116
+ 'Посадка начинается за 10 мин.'
117
+ ]
118
+ other_options = [
119
+ 'Переправа',
120
+ 'Трансфер',
121
+ 'Cкидка при покупке раунд-трипа'
122
+ ]
123
+
124
+ assert_equal services.values, options.services.map(&:name)
125
+ assert_equal services.keys, options.services.map(&:id)
126
+ assert_equal luggage_options, options.luggage
127
+ assert_equal seating_options, options.seating
128
+ assert_equal technical_stops, options.technical_stops
129
+ assert_equal critical_info, options.critical_info
130
+ assert_equal resource_options, options.resource_options
131
+ assert_equal other_options, options.other
132
+ end
133
+
134
+ def test_empty_options_parsing
135
+ response = get_successful_search_trips
136
+ options = response.trips.last.options
137
+
138
+ assert_equal [], options.services
139
+ assert_equal [], options.luggage
140
+ assert_equal [], options.seating
141
+ assert_equal [], options.technical_stops
142
+ assert_equal [], options.critical_info
143
+ assert_equal [], options.resource_options
144
+ assert_equal [], options.other
145
+ end
146
+
94
147
  def test_fields_parsing_bad_data
95
148
  response = get_successful_search_trips_with_bad_data
96
149
  assert response.error?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gillbus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.12
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey "codesnik" Trofimenko
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-07-13 00:00:00.000000000 Z
12
+ date: 2017-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_xml
@@ -194,6 +194,8 @@ files:
194
194
  - lib/gillbus/structs/timetable_segment.rb
195
195
  - lib/gillbus/structs/timetable_trip.rb
196
196
  - lib/gillbus/structs/trip.rb
197
+ - lib/gillbus/structs/trip_options.rb
198
+ - lib/gillbus/structs/trip_service.rb
197
199
  - lib/gillbus/tickets_booking.rb
198
200
  - lib/gillbus/unlock_seats.rb
199
201
  - lib/gillbus/version.rb