ninoxe 1.2.2 → 1.2.3
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 +4 -4
- data/app/models/chouette/vehicle_journey_at_stop.rb +5 -5
- data/lib/ninoxe/version.rb +1 -1
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/images/.keep +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/mailers/.keep +0 -0
- data/spec/dummy/app/models/.keep +0 -0
- data/spec/dummy/app/models/concerns/.keep +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +28 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +19 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +29 -0
- data/spec/dummy/config/environments/production.rb +80 -0
- data/spec/dummy/config/environments/test.rb +36 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +12 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/locales/fr.yml +23 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/db/schema.rb +490 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/lib/assets/.keep +0 -0
- data/spec/dummy/log/.keep +0 -0
- data/spec/dummy/public/404.html +58 -0
- data/spec/dummy/public/422.html +58 -0
- data/spec/dummy/public/500.html +57 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/factories/chouette_access_links.rb +13 -0
- data/spec/factories/chouette_access_points.rb +12 -0
- data/spec/factories/chouette_companies.rb +9 -0
- data/spec/factories/chouette_connection_links.rb +13 -0
- data/spec/factories/chouette_footnotes.rb +10 -0
- data/spec/factories/chouette_group_of_lines.rb +9 -0
- data/spec/factories/chouette_journey_pattern.rb +40 -0
- data/spec/factories/chouette_lines.rb +44 -0
- data/spec/factories/chouette_networks.rb +9 -0
- data/spec/factories/chouette_routes.rb +26 -0
- data/spec/factories/chouette_stop_areas.rb +12 -0
- data/spec/factories/chouette_stop_points.rb +10 -0
- data/spec/factories/chouette_time_table.rb +37 -0
- data/spec/factories/chouette_vehicle_journey.rb +66 -0
- data/spec/factories/chouette_vehicle_journey_at_stop.rb +8 -0
- data/spec/models/chouette/access_link_spec.rb +82 -0
- data/spec/models/chouette/access_point_spec.rb +269 -0
- data/spec/models/chouette/active_record_spec.rb +121 -0
- data/spec/models/chouette/area_type_spec.rb +53 -0
- data/spec/models/chouette/company_spec.rb +48 -0
- data/spec/models/chouette/connection_link_spec.rb +60 -0
- data/spec/models/chouette/direction_spec.rb +60 -0
- data/spec/models/chouette/exporter_spec.rb +28 -0
- data/spec/models/chouette/file_validator_spec.rb +28 -0
- data/spec/models/chouette/footnote_spec.rb +9 -0
- data/spec/models/chouette/group_of_line_spec.rb +31 -0
- data/spec/models/chouette/journey_pattern_spec.rb +64 -0
- data/spec/models/chouette/line_spec.rb +120 -0
- data/spec/models/chouette/loader_spec.rb +69 -0
- data/spec/models/chouette/network_spec.rb +19 -0
- data/spec/models/chouette/object_id_spec.rb +149 -0
- data/spec/models/chouette/route_spec.rb +238 -0
- data/spec/models/chouette/stop_area_spec.rb +443 -0
- data/spec/models/chouette/stop_point_spec.rb +41 -0
- data/spec/models/chouette/time_table_period_spec.rb +66 -0
- data/spec/models/chouette/time_table_spec.rb +1266 -0
- data/spec/models/chouette/transport_mode_spec.rb +64 -0
- data/spec/models/chouette/trident_active_record_spec.rb +115 -0
- data/spec/models/chouette/vehicle_journey_at_stop_spec.rb +47 -0
- data/spec/models/chouette/vehicle_journey_spec.rb +223 -0
- data/spec/presenters/chouette/geometry/general_presenter.rb +1 -0
- data/spec/presenters/chouette/geometry/line_presenter_spec.rb +13 -0
- data/spec/spec_helper.rb +58 -0
- metadata +178 -10
- data/config/database.yml.me +0 -11
- data/lib/ninoxe.rb~ +0 -7
@@ -0,0 +1,66 @@
|
|
1
|
+
FactoryGirl.define do
|
2
|
+
|
3
|
+
factory :vehicle_journey_common, :class => Chouette::VehicleJourney do
|
4
|
+
sequence(:objectid) { |n| "test:VehicleJourney:#{n}" }
|
5
|
+
|
6
|
+
factory :vehicle_journey do
|
7
|
+
association :journey_pattern, :factory => :journey_pattern
|
8
|
+
|
9
|
+
after(:build) do |vehicle_journey|
|
10
|
+
vehicle_journey.route = vehicle_journey.journey_pattern.route
|
11
|
+
end
|
12
|
+
|
13
|
+
after(:create) do |vehicle_journey|
|
14
|
+
vehicle_journey.journey_pattern.stop_points.each_with_index do |stop_point, index|
|
15
|
+
vehicle_journey.vehicle_journey_at_stops << create(:vehicle_journey_at_stop,
|
16
|
+
:vehicle_journey => vehicle_journey,
|
17
|
+
:stop_point => stop_point,
|
18
|
+
:arrival_time => (-1 * index).minutes.ago,
|
19
|
+
:departure_time => (-1 * index).minutes.ago)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
factory :vehicle_journey_odd do
|
24
|
+
association :journey_pattern, :factory => :journey_pattern_odd
|
25
|
+
end
|
26
|
+
|
27
|
+
factory :vehicle_journey_even do
|
28
|
+
association :journey_pattern, :factory => :journey_pattern_even
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# after(:build) do |vehicle_journey|
|
35
|
+
# vehicle_journey.route_id = vehicle_journey.journey_pattern.route_id
|
36
|
+
# end
|
37
|
+
#
|
38
|
+
# after(:create) do |vehicle_journey|
|
39
|
+
# vehicle_journey.journey_pattern.stop_points.each_with_index do |stop_point, index|
|
40
|
+
# vehicle_journey.vehicle_journey_at_stops.create(:vehicle_journey_at_stop,
|
41
|
+
# :vehicle_journey => vehicle_journey,
|
42
|
+
# :stop_point => stop_point,
|
43
|
+
# :arrival_time => (-1 * index).minutes.ago,
|
44
|
+
# :departure_time => (-1 * index).minutes.ago)
|
45
|
+
# end
|
46
|
+
# end
|
47
|
+
# end
|
48
|
+
#
|
49
|
+
# after(:build) do |vehicle_journey|
|
50
|
+
# vehicle_journey.route_id = vehicle_journey.journey_pattern.route_id
|
51
|
+
# end
|
52
|
+
#
|
53
|
+
# after(:create) do |vehicle_journey|
|
54
|
+
# vehicle_journey.journey_pattern.stop_points.each_with_index do |stop_point, index|
|
55
|
+
# vehicle_journey.vehicle_journey_at_stops.create(:vehicle_journey_at_stop,
|
56
|
+
# :vehicle_journey => vehicle_journey,
|
57
|
+
# :stop_point => stop_point,
|
58
|
+
# :arrival_time => (-1 * index).minutes.ago,
|
59
|
+
# :departure_time => (-1 * index).minutes.ago)
|
60
|
+
# end
|
61
|
+
# end
|
62
|
+
# end
|
63
|
+
#
|
64
|
+
# end
|
65
|
+
#end
|
66
|
+
#
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chouette::AccessLink, :type => :model do
|
4
|
+
subject { create(:access_link) }
|
5
|
+
|
6
|
+
it { is_expected.to validate_uniqueness_of :objectid }
|
7
|
+
|
8
|
+
describe '#objectid' do
|
9
|
+
subject { super().objectid }
|
10
|
+
it { is_expected.to be_kind_of(Chouette::ObjectId) }
|
11
|
+
end
|
12
|
+
|
13
|
+
it { is_expected.to validate_presence_of :name }
|
14
|
+
#it { is_expected.to validate_presence_of :link_type }
|
15
|
+
it { is_expected.to validate_presence_of :link_orientation }
|
16
|
+
|
17
|
+
describe "#access_link_type" do
|
18
|
+
|
19
|
+
def self.legacy_link_types
|
20
|
+
%w{Underground Mixed Overground}
|
21
|
+
end
|
22
|
+
|
23
|
+
legacy_link_types.each do |link_type|
|
24
|
+
context "when link_type is #{link_type}" do
|
25
|
+
access_link_type = Chouette::ConnectionLinkType.new(link_type.underscore)
|
26
|
+
it "should be #{access_link_type}" do
|
27
|
+
subject.link_type = link_type
|
28
|
+
expect(subject.access_link_type).to eq(access_link_type)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "#access_link_type=" do
|
35
|
+
|
36
|
+
it "should change link_type with ConnectionLinkType#name" do
|
37
|
+
subject.access_link_type = "underground"
|
38
|
+
expect(subject.link_type).to eq("Underground")
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#link_orientation_type" do
|
44
|
+
|
45
|
+
def self.legacy_link_orientations
|
46
|
+
%w{AccessPointToStopArea StopAreaToAccessPoint}
|
47
|
+
end
|
48
|
+
|
49
|
+
legacy_link_orientations.each do |link_orientation|
|
50
|
+
context "when link_orientation is #{link_orientation}" do
|
51
|
+
link_orientation_type = Chouette::LinkOrientationType.new(link_orientation.underscore)
|
52
|
+
it "should be #{link_orientation_type}" do
|
53
|
+
subject.link_orientation = link_orientation
|
54
|
+
expect(subject.link_orientation_type).to eq(link_orientation_type)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "#link_orientation_type=" do
|
62
|
+
|
63
|
+
it "should change link_orientation with LinkOrientationType#name" do
|
64
|
+
subject.link_orientation_type = "access_point_to_stop_area"
|
65
|
+
expect(subject.link_orientation).to eq("AccessPointToStopArea")
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "#link_key" do
|
71
|
+
it "should calculate link_key for access to area" do
|
72
|
+
subject.link_orientation_type = "access_point_to_stop_area"
|
73
|
+
expect(subject.link_key).to eq("A_#{subject.access_point.id}-S_#{subject.stop_area.id}")
|
74
|
+
end
|
75
|
+
it "should calculate link_key for area to access" do
|
76
|
+
subject.link_orientation_type = "stop_area_to_access_point"
|
77
|
+
expect(subject.link_key).to eq("S_#{subject.stop_area.id}-A_#{subject.access_point.id}")
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
@@ -0,0 +1,269 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chouette::AccessPoint, :type => :model do
|
4
|
+
|
5
|
+
describe '#objectid' do
|
6
|
+
subject { super().objectid }
|
7
|
+
it { is_expected.to be_kind_of(Chouette::ObjectId) }
|
8
|
+
end
|
9
|
+
|
10
|
+
it { is_expected.to validate_presence_of :name }
|
11
|
+
it { is_expected.to validate_numericality_of :latitude }
|
12
|
+
it { is_expected.to validate_numericality_of :longitude }
|
13
|
+
|
14
|
+
describe ".latitude" do
|
15
|
+
it "should accept -90 value" do
|
16
|
+
subject = create :access_point
|
17
|
+
subject.latitude = -90
|
18
|
+
expect(subject.valid?).to be_truthy
|
19
|
+
end
|
20
|
+
it "should reject < -90 value" do
|
21
|
+
subject = create :access_point
|
22
|
+
subject.latitude = -90.0001
|
23
|
+
expect(subject.valid?).to be_falsey
|
24
|
+
end
|
25
|
+
it "should accept 90 value" do
|
26
|
+
subject = create :access_point
|
27
|
+
subject.latitude = 90
|
28
|
+
expect(subject.valid?).to be_truthy
|
29
|
+
end
|
30
|
+
it "should reject > 90 value" do
|
31
|
+
subject = create :access_point
|
32
|
+
subject.latitude = 90.0001
|
33
|
+
expect(subject.valid?).to be_falsey
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe ".longitude" do
|
38
|
+
it "should accept -180 value" do
|
39
|
+
subject = create :access_point
|
40
|
+
subject.longitude = -180
|
41
|
+
expect(subject.valid?).to be_truthy
|
42
|
+
end
|
43
|
+
it "should reject < -180 value" do
|
44
|
+
subject = create :access_point
|
45
|
+
subject.longitude = -180.0001
|
46
|
+
expect(subject.valid?).to be_falsey
|
47
|
+
end
|
48
|
+
it "should accept 180 value" do
|
49
|
+
subject = create :access_point
|
50
|
+
subject.longitude = 180
|
51
|
+
expect(subject.valid?).to be_truthy
|
52
|
+
end
|
53
|
+
it "should reject > 180 value" do
|
54
|
+
subject = create :access_point
|
55
|
+
subject.longitude = 180.0001
|
56
|
+
expect(subject.valid?).to be_falsey
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe ".long_lat" do
|
61
|
+
it "should accept longitude and latitude both as nil" do
|
62
|
+
subject = create :access_point
|
63
|
+
subject.longitude = nil
|
64
|
+
subject.latitude = nil
|
65
|
+
expect(subject.valid?).to be_truthy
|
66
|
+
end
|
67
|
+
it "should accept longitude and latitude both numerical" do
|
68
|
+
subject = create :access_point
|
69
|
+
subject.longitude = 10
|
70
|
+
subject.latitude = 10
|
71
|
+
expect(subject.valid?).to be_truthy
|
72
|
+
end
|
73
|
+
it "should reject longitude nil with latitude numerical" do
|
74
|
+
subject = create :access_point
|
75
|
+
subject.longitude = nil
|
76
|
+
subject.latitude = 10
|
77
|
+
expect(subject.valid?).to be_falsey
|
78
|
+
end
|
79
|
+
it "should reject longitude numerical with latitude nil" do
|
80
|
+
subject = create :access_point
|
81
|
+
subject.longitude = 10
|
82
|
+
subject.latitude = nil
|
83
|
+
expect(subject.valid?).to be_falsey
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "#access_type" do
|
88
|
+
def self.legacy_access_types
|
89
|
+
%w{In Out InOut}
|
90
|
+
end
|
91
|
+
|
92
|
+
legacy_access_types.each do |access_type|
|
93
|
+
context "when access_type is #{access_type}" do
|
94
|
+
access_point_type = Chouette::AccessPointType.new(access_type.underscore)
|
95
|
+
it "should be #{access_point_type}" do
|
96
|
+
subject.access_type = access_type
|
97
|
+
expect(subject.access_point_type).to eq(access_point_type)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe "#access_point_type=" do
|
104
|
+
it "should change access_type with Chouette::AccessPointType#name" do
|
105
|
+
subject.access_point_type = "in_out"
|
106
|
+
expect(subject.access_type).to eq("InOut")
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "#to_lat_lng" do
|
112
|
+
|
113
|
+
it "should return nil if latitude is nil" do
|
114
|
+
subject.latitude = nil
|
115
|
+
expect(subject.to_lat_lng).to be_nil
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should return nil if longitude is nil" do
|
119
|
+
subject.longitude = nil
|
120
|
+
expect(subject.to_lat_lng).to be_nil
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
describe "#geometry" do
|
126
|
+
|
127
|
+
it "should be nil when to_lat_lng is nil" do
|
128
|
+
allow(subject).to receive_messages :to_lat_lng => nil
|
129
|
+
expect(subject.geometry).to be_nil
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
|
134
|
+
describe "#generic_access_link_matrix" do
|
135
|
+
it "should have 2 generic_access_links in matrix" do
|
136
|
+
stop_place = create :stop_area, :area_type => "StopPlace"
|
137
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint" ,:parent => stop_place
|
138
|
+
subject = create :access_point, :stop_area => stop_place
|
139
|
+
expect(subject.generic_access_link_matrix.size).to eq(2)
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should have new generic_access_links in matrix" do
|
143
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint"
|
144
|
+
subject = create :access_point, :stop_area => commercial_stop_point
|
145
|
+
subject.generic_access_link_matrix.each do |link|
|
146
|
+
expect(link.id).to be_nil
|
147
|
+
end
|
148
|
+
end
|
149
|
+
it "should have only last generic_access_links as new in matrix" do
|
150
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint"
|
151
|
+
subject = create :access_point, :stop_area => commercial_stop_point
|
152
|
+
link = create :access_link, :access_point => subject, :stop_area => commercial_stop_point
|
153
|
+
subject.generic_access_link_matrix.each do |link|
|
154
|
+
if link.link_key.start_with?"A_"
|
155
|
+
expect(link.id).not_to be_nil
|
156
|
+
else
|
157
|
+
expect(link.id).to be_nil
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
describe "#detail_access_link_matrix" do
|
164
|
+
it "should have 4 detail_access_links in matrix" do
|
165
|
+
stop_place = create :stop_area, :area_type => "StopPlace"
|
166
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint" ,:parent => stop_place
|
167
|
+
quay1 = create :stop_area, :parent => commercial_stop_point, :area_type => "Quay"
|
168
|
+
quay2 = create :stop_area, :parent => commercial_stop_point, :area_type => "Quay"
|
169
|
+
subject = create :access_point, :stop_area => stop_place
|
170
|
+
expect(subject.detail_access_link_matrix.size).to eq(4)
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should have new detail_access_links in matrix" do
|
174
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint"
|
175
|
+
quay = create :stop_area, :parent => commercial_stop_point, :area_type => "Quay"
|
176
|
+
subject = create :access_point, :stop_area => commercial_stop_point
|
177
|
+
subject.detail_access_link_matrix.each do |link|
|
178
|
+
expect(link.id).to be_nil
|
179
|
+
end
|
180
|
+
end
|
181
|
+
it "should have only last detail_access_links as new in matrix" do
|
182
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint"
|
183
|
+
quay = create :stop_area, :parent => commercial_stop_point, :area_type => "Quay"
|
184
|
+
subject = create :access_point, :stop_area => commercial_stop_point
|
185
|
+
link = create :access_link, :access_point => subject, :stop_area => quay
|
186
|
+
subject.detail_access_link_matrix.each do |link|
|
187
|
+
if link.link_key.start_with?"A_"
|
188
|
+
expect(link.id).not_to be_nil
|
189
|
+
else
|
190
|
+
expect(link.id).to be_nil
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
describe "#coordinates" do
|
197
|
+
it "should convert coordinates into latitude/longitude" do
|
198
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint"
|
199
|
+
subject = create :access_point, :stop_area => commercial_stop_point, :coordinates => "45.123,120.456"
|
200
|
+
expect(subject.longitude).to be_within(0.001).of(120.456)
|
201
|
+
expect(subject.latitude).to be_within(0.001).of(45.123)
|
202
|
+
end
|
203
|
+
it "should set empty coordinates into nil latitude/longitude" do
|
204
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint"
|
205
|
+
subject = create :access_point, :stop_area => commercial_stop_point, :coordinates => "45.123,120.456"
|
206
|
+
expect(subject.longitude).to be_within(0.001).of(120.456)
|
207
|
+
expect(subject.latitude).to be_within(0.001).of(45.123)
|
208
|
+
subject.coordinates = ""
|
209
|
+
subject.save
|
210
|
+
expect(subject.longitude).to be_nil
|
211
|
+
expect(subject.latitude).to be_nil
|
212
|
+
end
|
213
|
+
it "should convert latitude/longitude into coordinates" do
|
214
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint"
|
215
|
+
subject = create :access_point, :stop_area => commercial_stop_point, :longitude => 120.456, :latitude => 45.123
|
216
|
+
expect(subject.coordinates).to eq("45.123,120.456")
|
217
|
+
end
|
218
|
+
it "should convert nil latitude/longitude into empty coordinates" do
|
219
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint"
|
220
|
+
subject = create :access_point, :stop_area => commercial_stop_point, :longitude => nil, :latitude => nil
|
221
|
+
expect(subject.coordinates).to eq("")
|
222
|
+
end
|
223
|
+
it "should accept valid coordinates" do
|
224
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint"
|
225
|
+
subject = create :access_point, :stop_area => commercial_stop_point, :coordinates => "45.123,120.456"
|
226
|
+
expect(subject.valid?).to be_truthy
|
227
|
+
subject.coordinates = "45.123, 120.456"
|
228
|
+
expect(subject.valid?).to be_truthy
|
229
|
+
expect(subject.longitude).to be_within(0.001).of(120.456)
|
230
|
+
expect(subject.latitude).to be_within(0.001).of(45.123)
|
231
|
+
subject.coordinates = "45.123, -120.456"
|
232
|
+
expect(subject.valid?).to be_truthy
|
233
|
+
subject.coordinates = "45.123 ,120.456"
|
234
|
+
expect(subject.valid?).to be_truthy
|
235
|
+
subject.coordinates = "45.123 , 120.456"
|
236
|
+
expect(subject.valid?).to be_truthy
|
237
|
+
subject.coordinates = " 45.123,120.456"
|
238
|
+
expect(subject.valid?).to be_truthy
|
239
|
+
subject.coordinates = "45.123,120.456 "
|
240
|
+
expect(subject.valid?).to be_truthy
|
241
|
+
end
|
242
|
+
it "should accept valid coordinates on limits" do
|
243
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint"
|
244
|
+
subject = create :access_point, :stop_area => commercial_stop_point, :coordinates => "90,180"
|
245
|
+
expect(subject.valid?).to be_truthy
|
246
|
+
subject.coordinates = "-90,-180"
|
247
|
+
expect(subject.valid?).to be_truthy
|
248
|
+
subject.coordinates = "-90.,180."
|
249
|
+
expect(subject.valid?).to be_truthy
|
250
|
+
subject.coordinates = "-90.0,180.00"
|
251
|
+
expect(subject.valid?).to be_truthy
|
252
|
+
end
|
253
|
+
it "should reject invalid coordinates" do
|
254
|
+
commercial_stop_point = create :stop_area, :area_type => "CommercialStopPoint"
|
255
|
+
subject = create :access_point, :stop_area => commercial_stop_point
|
256
|
+
subject.coordinates = ",12"
|
257
|
+
expect(subject.valid?).to be_falsey
|
258
|
+
subject.coordinates = "-90"
|
259
|
+
expect(subject.valid?).to be_falsey
|
260
|
+
subject.coordinates = "-90.1,180."
|
261
|
+
expect(subject.valid?).to be_falsey
|
262
|
+
subject.coordinates = "-90.0,180.1"
|
263
|
+
expect(subject.valid?).to be_falsey
|
264
|
+
subject.coordinates = "-91.0,18.1"
|
265
|
+
expect(subject.valid?).to be_falsey
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chouette::ActiveRecord, :type => :model do
|
4
|
+
|
5
|
+
it { expect(Chouette::ActiveRecord.ancestors).to include(ActiveRecord::Base) }
|
6
|
+
|
7
|
+
describe "table_name" do
|
8
|
+
|
9
|
+
it "should return line for Chouette::Line" do
|
10
|
+
expect(Chouette::Line.table_name).to eq("lines")
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should return ptnetwork for Chouette::Network" do
|
14
|
+
expect(Chouette::Network.table_name).to eq("networks")
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should return timetable_date for Chouette::TimeTableDate" do
|
18
|
+
expect(Chouette::TimeTableDate.table_name).to eq("time_table_dates")
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should return timetable_period for Chouette::TimeTablePeriod" do
|
22
|
+
expect(Chouette::TimeTablePeriod.table_name).to eq("time_table_periods")
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "method_missing" do
|
28
|
+
|
29
|
+
it "should support method with additionnal underscores" do
|
30
|
+
stop_area = Chouette::StopArea.new
|
31
|
+
expect(stop_area.area_type).to eq(stop_area.area_type)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
describe "respond_to?" do
|
38
|
+
|
39
|
+
it "should respond to method with additionnal underscores" do
|
40
|
+
stop_area = Chouette::StopArea.new
|
41
|
+
expect(stop_area.respond_to?(:area_type)).to be_truthy
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
# describe "create_reflection" do
|
47
|
+
|
48
|
+
# let(:macro) { :has_many }
|
49
|
+
# let(:name) { :lines }
|
50
|
+
# let(:options) { {} }
|
51
|
+
# let(:active_record) { Chouette::Network }
|
52
|
+
|
53
|
+
# let(:modified_options) { {:modified => true} }
|
54
|
+
|
55
|
+
# it "should invoke create_reflection_without_chouette_naming with modified options" do
|
56
|
+
# allow(Chouette::ActiveRecord::Reflection).to receive_messages :new => double(:options_with_default => modified_options)
|
57
|
+
# expect(Chouette::ActiveRecord).to receive(:create_reflection_without_chouette_naming).with macro, name, modified_options, active_record
|
58
|
+
|
59
|
+
# Chouette::ActiveRecord.create_reflection macro, name, options, active_record
|
60
|
+
# end
|
61
|
+
|
62
|
+
# end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
# describe Chouette::ActiveRecord::Reflection, :type => :model do
|
67
|
+
|
68
|
+
# let(:macro) { :has_many }
|
69
|
+
# let(:name) { :lines }
|
70
|
+
# let(:options) { {} }
|
71
|
+
# let(:active_record) { Chouette::Network }
|
72
|
+
|
73
|
+
# subject { Chouette::ActiveRecord::Reflection.new macro, name, options, active_record }
|
74
|
+
|
75
|
+
# describe "collection?" do
|
76
|
+
|
77
|
+
# it "should be true when macro is has_many" do
|
78
|
+
# allow(subject).to receive_messages :macro => :has_many
|
79
|
+
# expect(subject).to be_collection
|
80
|
+
# end
|
81
|
+
|
82
|
+
# it "should be false when macro is belongs_to" do
|
83
|
+
# allow(subject).to receive_messages :macro => :belong_to
|
84
|
+
# expect(subject).not_to be_collection
|
85
|
+
# end
|
86
|
+
|
87
|
+
# end
|
88
|
+
|
89
|
+
# describe "class_name" do
|
90
|
+
|
91
|
+
# it "should be Chouette::Line when name is line" do
|
92
|
+
# allow(subject).to receive_messages :name => "line"
|
93
|
+
# expect(subject.class_name).to eq("Chouette::Line")
|
94
|
+
# end
|
95
|
+
|
96
|
+
# it "should be Chouette::Routes when name is routes and reflection is a collection" do
|
97
|
+
# allow(subject).to receive_messages :name => "routes", :collection? => true
|
98
|
+
# expect(subject.class_name).to eq("Chouette::Route")
|
99
|
+
# end
|
100
|
+
|
101
|
+
# end
|
102
|
+
|
103
|
+
|
104
|
+
# describe "options" do
|
105
|
+
|
106
|
+
# it "should define class_name if not" do
|
107
|
+
# allow(subject).to receive_messages :options => {}, :class_name => "class_name"
|
108
|
+
# expect(subject.options_with_default[:class_name]).to eq("class_name")
|
109
|
+
# end
|
110
|
+
|
111
|
+
# it "should not define class_name if presents" do
|
112
|
+
# allow(subject).to receive_messages :options => {:class_name => "dummy"}
|
113
|
+
# expect(subject.options_with_default[:class_name]).to eq("dummy")
|
114
|
+
# end
|
115
|
+
|
116
|
+
# end
|
117
|
+
|
118
|
+
|
119
|
+
# end
|
120
|
+
|
121
|
+
|