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,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chouette::TransportMode, :type => :model do
|
4
|
+
|
5
|
+
def mode(text_code = "test", numerical_code = nil)
|
6
|
+
numerical_code ||= 1 if text_code == "test"
|
7
|
+
Chouette::TransportMode.new(text_code, numerical_code)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#to_i" do
|
11
|
+
|
12
|
+
it "should return numerical code" do
|
13
|
+
expect(mode("test", 1).to_i).to eq(1)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return true to #test? when text code is 'test'" do
|
19
|
+
expect(mode("test")).to be_test
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should be equal when text codes are identical" do
|
23
|
+
expect(mode("test",1)).to eq(mode("test", 2))
|
24
|
+
end
|
25
|
+
|
26
|
+
describe ".new" do
|
27
|
+
|
28
|
+
it "should find numerical code from text code" do
|
29
|
+
expect(mode("unknown").to_i).to eq(0)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should find text code from numerical code" do
|
33
|
+
expect(mode(0)).to be_unknown
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should accept another mode" do
|
37
|
+
expect(Chouette::TransportMode.new(mode("test"))).to eq(mode("test"))
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#public_transport?" do
|
43
|
+
|
44
|
+
it "should return false for interchange" do
|
45
|
+
expect(mode("interchange")).not_to be_public_transport
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return true for other modes" do
|
49
|
+
expect(mode("unknown")).to be_public_transport
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
describe ".all" do
|
55
|
+
|
56
|
+
Chouette::TransportMode.definitions.each do |text_code, numerical_code|
|
57
|
+
it "should include a TransportMode #{text_code}" do
|
58
|
+
expect(Chouette::TransportMode.all).to include(Chouette::TransportMode.new(text_code))
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chouette::TridentActiveRecord, :type => :model do
|
4
|
+
|
5
|
+
it { expect(Chouette::TridentActiveRecord.ancestors).to include(Chouette::ActiveRecord) }
|
6
|
+
|
7
|
+
subject { create(:time_table) }
|
8
|
+
|
9
|
+
describe "#uniq_objectid" do
|
10
|
+
|
11
|
+
it "should rebuild objectid" do
|
12
|
+
tm = create(:time_table)
|
13
|
+
tm.objectid = subject.objectid
|
14
|
+
tm.uniq_objectid
|
15
|
+
expect(tm.objectid).to eq(subject.objectid+"_1")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should rebuild objectid" do
|
19
|
+
tm = create(:time_table)
|
20
|
+
tm.objectid = subject.objectid
|
21
|
+
tm.uniq_objectid
|
22
|
+
tm.save
|
23
|
+
tm = create(:time_table)
|
24
|
+
tm.objectid = subject.objectid
|
25
|
+
tm.uniq_objectid
|
26
|
+
expect(tm.objectid).to eq(subject.objectid+"_2")
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "#prepare_auto_columns" do
|
32
|
+
|
33
|
+
it "should left objectid" do
|
34
|
+
tm = Chouette::TimeTable.new :comment => "merge1" , :objectid => "NINOXE:Timetable:merge1"
|
35
|
+
tm.prepare_auto_columns
|
36
|
+
expect(tm.objectid).to eq("NINOXE:Timetable:merge1")
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should add pending_id to objectid" do
|
40
|
+
tm = Chouette::TimeTable.new :comment => "merge1"
|
41
|
+
tm.prepare_auto_columns
|
42
|
+
expect(tm.objectid.start_with?("NINOXE:Timetable:__pending_id__")).to be_truthy
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should set id to objectid" do
|
46
|
+
tm = Chouette::TimeTable.new :comment => "merge1"
|
47
|
+
tm.save
|
48
|
+
expect(tm.objectid).to eq("NINOXE:Timetable:"+tm.id.to_s)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should detect objectid conflicts" do
|
52
|
+
tm = Chouette::TimeTable.new :comment => "merge1"
|
53
|
+
tm.save
|
54
|
+
tm.objectid = "NINOXE:Timetable:"+(tm.id+1).to_s
|
55
|
+
tm.save
|
56
|
+
tm = Chouette::TimeTable.new :comment => "merge1"
|
57
|
+
tm.save
|
58
|
+
expect(tm.objectid).to eq("NINOXE:Timetable:"+tm.id.to_s+"_1")
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "objectid" do
|
64
|
+
|
65
|
+
it "should build automatic objectid when empty" do
|
66
|
+
g1 = Chouette::GroupOfLine.new( :name => "g1")
|
67
|
+
g1.save
|
68
|
+
expect(g1.objectid).to eq("NINOXE:GroupOfLine:"+g1.id.to_s)
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should build automatic objectid with fixed when only suffix given" do
|
72
|
+
g1 = Chouette::GroupOfLine.new( :name => "g1")
|
73
|
+
g1.objectid = "toto"
|
74
|
+
g1.save
|
75
|
+
expect(g1.objectid).to eq("NINOXE:GroupOfLine:toto")
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should build automatic objectid with extension when already exists" do
|
79
|
+
g1 = Chouette::GroupOfLine.new( :name => "g1")
|
80
|
+
g1.save
|
81
|
+
cnt = g1.id + 1
|
82
|
+
g1.objectid = "NINOXE:GroupOfLine:"+cnt.to_s
|
83
|
+
g1.save
|
84
|
+
g2 = Chouette::GroupOfLine.new( :name => "g2")
|
85
|
+
g2.save
|
86
|
+
expect(g2.objectid).to eq("NINOXE:GroupOfLine:"+g2.id.to_s+"_1")
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should build automatic objectid with extension when already exists" do
|
90
|
+
g1 = Chouette::GroupOfLine.new( :name => "g1")
|
91
|
+
g1.save
|
92
|
+
cnt = g1.id + 2
|
93
|
+
g1.objectid = "NINOXE:GroupOfLine:"+cnt.to_s
|
94
|
+
g1.save
|
95
|
+
g2 = Chouette::GroupOfLine.new( :name => "g2")
|
96
|
+
g2.objectid = "NINOXE:GroupOfLine:"+cnt.to_s+"_1"
|
97
|
+
g2.save
|
98
|
+
g3 = Chouette::GroupOfLine.new( :name => "g3")
|
99
|
+
g3.save
|
100
|
+
expect(g3.objectid).to eq("NINOXE:GroupOfLine:"+g3.id.to_s+"_2")
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should build automatic objectid when id cleared" do
|
104
|
+
g1 = Chouette::GroupOfLine.new( :name => "g1")
|
105
|
+
g1.objectid = "NINOXE:GroupOfLine:xxxx"
|
106
|
+
g1.save
|
107
|
+
g1.objectid = nil
|
108
|
+
g1.save
|
109
|
+
expect(g1.objectid).to eq("NINOXE:GroupOfLine:"+g1.id.to_s)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'pp'
|
3
|
+
|
4
|
+
describe Chouette::VehicleJourneyAtStop, :type => :model do
|
5
|
+
let!(:vehicle_journey) { create(:vehicle_journey_odd)}
|
6
|
+
subject { vehicle_journey.vehicle_journey_at_stops.first }
|
7
|
+
|
8
|
+
describe "#exceeds_gap?" do
|
9
|
+
it "should return false if gap < 1.hour" do
|
10
|
+
t1 = 1.minutes.ago
|
11
|
+
t2 = 1.minutes.ago + 3.hour
|
12
|
+
expect(subject.exceeds_gap?(t1, t2)).to be_truthy
|
13
|
+
end
|
14
|
+
it "should return false if gap > 2.hour" do
|
15
|
+
t1 = 1.minutes.ago
|
16
|
+
t2 = 1.minutes.ago + 3.minutes
|
17
|
+
expect(subject.exceeds_gap?(t1, t2)).to be_falsey
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "#increasing_times_validate" do
|
22
|
+
let(:vjas1){ vehicle_journey.vehicle_journey_at_stops[0]}
|
23
|
+
let(:vjas2){ vehicle_journey.vehicle_journey_at_stops[1]}
|
24
|
+
context "when vjas#arrival_time exceeds gap" do
|
25
|
+
it "should add errors on arrival_time" do
|
26
|
+
vjas1.arrival_time = vjas2.arrival_time - 3.hour
|
27
|
+
expect(vjas2.increasing_times_validate(vjas1)).to be_falsey
|
28
|
+
expect(vjas2.errors).not_to be_empty
|
29
|
+
expect(vjas2.errors[:arrival_time]).not_to be_blank
|
30
|
+
end
|
31
|
+
end
|
32
|
+
context "when vjas#departure_time exceeds gap" do
|
33
|
+
it "should add errors on departure_time" do
|
34
|
+
vjas1.departure_time = vjas2.departure_time - 3.hour
|
35
|
+
expect(vjas2.increasing_times_validate(vjas1)).to be_falsey
|
36
|
+
expect(vjas2.errors).not_to be_empty
|
37
|
+
expect(vjas2.errors[:departure_time]).not_to be_blank
|
38
|
+
end
|
39
|
+
end
|
40
|
+
context "when vjas does'nt exceed gap" do
|
41
|
+
it "should not add errors" do
|
42
|
+
expect(vjas2.increasing_times_validate(vjas1)).to be_truthy
|
43
|
+
expect(vjas2.errors).to be_empty
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,223 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chouette::VehicleJourney, :type => :model do
|
4
|
+
subject { create(:vehicle_journey_odd) }
|
5
|
+
|
6
|
+
describe "in_relation_to_a_journey_pattern methods" do
|
7
|
+
let!(:route) { create(:route)}
|
8
|
+
let!(:journey_pattern) { create(:journey_pattern, :route => route)}
|
9
|
+
let!(:journey_pattern_odd) { create(:journey_pattern_odd, :route => route)}
|
10
|
+
let!(:journey_pattern_even) { create(:journey_pattern_even, :route => route)}
|
11
|
+
|
12
|
+
context "when vehicle_journey is on odd stop whereas selected journey_pattern is on all stops" do
|
13
|
+
subject { create(:vehicle_journey, :route => route, :journey_pattern => journey_pattern_odd)}
|
14
|
+
describe "#extra_stops_in_relation_to_a_journey_pattern" do
|
15
|
+
it "should be empty" do
|
16
|
+
expect(subject.extra_stops_in_relation_to_a_journey_pattern( journey_pattern)).to be_empty
|
17
|
+
end
|
18
|
+
end
|
19
|
+
describe "#extra_vjas_in_relation_to_a_journey_pattern" do
|
20
|
+
it "should be empty" do
|
21
|
+
expect(subject.extra_vjas_in_relation_to_a_journey_pattern( journey_pattern)).to be_empty
|
22
|
+
end
|
23
|
+
end
|
24
|
+
describe "#missing_stops_in_relation_to_a_journey_pattern" do
|
25
|
+
it "should return even stops" do
|
26
|
+
result = subject.missing_stops_in_relation_to_a_journey_pattern( journey_pattern)
|
27
|
+
expect(result).to eq(journey_pattern_even.stop_points)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
describe "#update_journey_pattern" do
|
31
|
+
it "should new_record for added vjas" do
|
32
|
+
subject.update_journey_pattern( journey_pattern)
|
33
|
+
subject.vehicle_journey_at_stops.select{ |vjas| vjas.new_record? }.each do |vjas|
|
34
|
+
expect(journey_pattern_even.stop_points).to include( vjas.stop_point)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
it "should add vjas on each even stops" do
|
38
|
+
subject.update_journey_pattern( journey_pattern)
|
39
|
+
vehicle_stops = subject.vehicle_journey_at_stops.map(&:stop_point)
|
40
|
+
journey_pattern_even.stop_points.each do |sp|
|
41
|
+
expect(vehicle_stops).to include(sp)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
it "should not mark any vjas as _destroy" do
|
45
|
+
subject.update_journey_pattern( journey_pattern)
|
46
|
+
expect(subject.vehicle_journey_at_stops.any?{ |vjas| vjas._destroy }).to be_falsey
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
context "when vehicle_journey is on all stops whereas selected journey_pattern is on odd stops" do
|
51
|
+
subject { create(:vehicle_journey, :route => route, :journey_pattern => journey_pattern)}
|
52
|
+
describe "#missing_stops_in_relation_to_a_journey_pattern" do
|
53
|
+
it "should be empty" do
|
54
|
+
expect(subject.missing_stops_in_relation_to_a_journey_pattern( journey_pattern_odd)).to be_empty
|
55
|
+
end
|
56
|
+
end
|
57
|
+
describe "#extra_stops_in_relation_to_a_journey_pattern" do
|
58
|
+
it "should return even stops" do
|
59
|
+
result = subject.extra_stops_in_relation_to_a_journey_pattern( journey_pattern_odd)
|
60
|
+
expect(result).to eq(journey_pattern_even.stop_points)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
describe "#extra_vjas_in_relation_to_a_journey_pattern" do
|
64
|
+
it "should return vjas on even stops" do
|
65
|
+
result = subject.extra_vjas_in_relation_to_a_journey_pattern( journey_pattern_odd)
|
66
|
+
expect(result.map(&:stop_point)).to eq(journey_pattern_even.stop_points)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
describe "#update_journey_pattern" do
|
70
|
+
it "should add no new vjas" do
|
71
|
+
subject.update_journey_pattern( journey_pattern_odd)
|
72
|
+
expect(subject.vehicle_journey_at_stops.any?{ |vjas| vjas.new_record? }).to be_falsey
|
73
|
+
end
|
74
|
+
it "should mark vehicle_journey_at_stops as _destroy on even stops" do
|
75
|
+
subject.update_journey_pattern( journey_pattern_odd)
|
76
|
+
subject.vehicle_journey_at_stops.each { |vjas|
|
77
|
+
expect(vjas._destroy).to eq(journey_pattern_even.stop_points.include?(vjas.stop_point))
|
78
|
+
}
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
context "when following departure times exceeds gap" do
|
85
|
+
describe "#increasing_times" do
|
86
|
+
before(:each) do
|
87
|
+
subject.vehicle_journey_at_stops[0].departure_time = subject.vehicle_journey_at_stops[1].departure_time - 2.hour
|
88
|
+
subject.vehicle_journey_at_stops[0].arrival_time = subject.vehicle_journey_at_stops[0].departure_time
|
89
|
+
subject.vehicle_journey_at_stops[1].arrival_time = subject.vehicle_journey_at_stops[1].departure_time
|
90
|
+
end
|
91
|
+
it "should make instance invalid" do
|
92
|
+
subject.increasing_times
|
93
|
+
expect(subject.vehicle_journey_at_stops[1].errors[:departure_time]).not_to be_blank
|
94
|
+
expect(subject).not_to be_valid
|
95
|
+
end
|
96
|
+
end
|
97
|
+
describe "#update_attributes" do
|
98
|
+
let!(:params){ {"vehicle_journey_at_stops_attributes" => {
|
99
|
+
"0"=>{"id" => subject.vehicle_journey_at_stops[0].id ,"arrival_time" => 1.minutes.ago,"departure_time" => 1.minutes.ago},
|
100
|
+
"1"=>{"id" => subject.vehicle_journey_at_stops[1].id, "arrival_time" => (1.minutes.ago + 2.hour),"departure_time" => (1.minutes.ago + 2.hour)}
|
101
|
+
}}}
|
102
|
+
it "should return false" do
|
103
|
+
expect(subject.update_attributes(params)).to be_falsey
|
104
|
+
end
|
105
|
+
it "should make instance invalid" do
|
106
|
+
subject.update_attributes(params)
|
107
|
+
expect(subject).not_to be_valid
|
108
|
+
end
|
109
|
+
it "should let first vjas without any errors" do
|
110
|
+
subject.update_attributes(params)
|
111
|
+
expect(subject.vehicle_journey_at_stops[0].errors).to be_empty
|
112
|
+
end
|
113
|
+
it "should add an error on second vjas" do
|
114
|
+
subject.update_attributes(params)
|
115
|
+
expect(subject.vehicle_journey_at_stops[1].errors[:departure_time]).not_to be_blank
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
context "#time_table_tokens=" do
|
121
|
+
let!(:tm1){create(:time_table, :comment => "TM1")}
|
122
|
+
let!(:tm2){create(:time_table, :comment => "TM2")}
|
123
|
+
|
124
|
+
it "should return associated time table ids" do
|
125
|
+
subject.update_attributes :time_table_tokens => [tm1.id, tm2.id].join(',')
|
126
|
+
expect(subject.time_tables).to include( tm1)
|
127
|
+
expect(subject.time_tables).to include( tm2)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
describe "#bounding_dates" do
|
131
|
+
before(:each) do
|
132
|
+
tm1 = build(:time_table, :dates =>
|
133
|
+
[ build(:time_table_date, :date => 1.days.ago.to_date, :in_out => true),
|
134
|
+
build(:time_table_date, :date => 2.days.ago.to_date, :in_out => true) ])
|
135
|
+
tm2 = build(:time_table, :periods =>
|
136
|
+
[ build(:time_table_period, :period_start => 4.days.ago.to_date, :period_end => 3.days.ago.to_date)])
|
137
|
+
tm3 = build(:time_table)
|
138
|
+
subject.time_tables = [ tm1, tm2, tm3]
|
139
|
+
end
|
140
|
+
it "should return min date from associated calendars" do
|
141
|
+
expect(subject.bounding_dates.min).to eq(4.days.ago.to_date)
|
142
|
+
end
|
143
|
+
it "should return max date from associated calendars" do
|
144
|
+
expect(subject.bounding_dates.max).to eq(1.days.ago.to_date)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
context "#vehicle_journey_at_stops" do
|
148
|
+
it "should be ordered like stop_points on route" do
|
149
|
+
route = subject.route
|
150
|
+
vj_stop_ids = subject.vehicle_journey_at_stops.map(&:stop_point_id)
|
151
|
+
expected_order = route.stop_points.map(&:id).select {|s_id| vj_stop_ids.include?(s_id)}
|
152
|
+
|
153
|
+
expect(vj_stop_ids).to eq(expected_order)
|
154
|
+
end
|
155
|
+
|
156
|
+
end
|
157
|
+
|
158
|
+
describe "#transport_mode_name" do
|
159
|
+
|
160
|
+
def self.legacy_transport_modes
|
161
|
+
%w{Air Train LongDistanceTrain LocalTrain RapidTransit Metro Tramway Coach Bus Ferry Waterborne PrivateVehicle Walk Trolleybus Bicycle Shuttle Taxi VAL Other}
|
162
|
+
end
|
163
|
+
|
164
|
+
legacy_transport_modes.each do |transport_mode|
|
165
|
+
context "when transport_mode is #{transport_mode}" do
|
166
|
+
transport_mode_name = Chouette::TransportMode.new(transport_mode.underscore)
|
167
|
+
it "should be #{transport_mode_name}" do
|
168
|
+
subject.transport_mode = transport_mode
|
169
|
+
expect(subject.transport_mode_name).to eq(transport_mode_name)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
context "when transport_mode is nil" do
|
174
|
+
it "should be nil" do
|
175
|
+
subject.transport_mode = nil
|
176
|
+
expect(subject.transport_mode_name).to be_nil
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
end
|
181
|
+
|
182
|
+
describe "#transport_mode_name=" do
|
183
|
+
|
184
|
+
it "should change transport_mode with TransportMode#name" do
|
185
|
+
subject.transport_mode_name = "Test"
|
186
|
+
expect(subject.transport_mode).to eq("Test")
|
187
|
+
end
|
188
|
+
|
189
|
+
end
|
190
|
+
|
191
|
+
describe ".transport_mode_names" do
|
192
|
+
|
193
|
+
it "should not include unknown transport_mode_name" do
|
194
|
+
expect(Chouette::VehicleJourney.transport_mode_names).not_to include(Chouette::TransportMode.new("unknown"))
|
195
|
+
end
|
196
|
+
|
197
|
+
it "should not include interchange transport_mode" do
|
198
|
+
expect(Chouette::VehicleJourney.transport_mode_names).not_to include(Chouette::TransportMode.new("interchange"))
|
199
|
+
end
|
200
|
+
|
201
|
+
end
|
202
|
+
|
203
|
+
describe "#footnote_ids=" do
|
204
|
+
context "when line have footnotes, " do
|
205
|
+
let!( :route) { create( :route ) }
|
206
|
+
let!( :line) { route.line }
|
207
|
+
let!( :footnote_first) {create( :footnote, :code => "1", :label => "dummy 1", :line => route.line)}
|
208
|
+
let!( :footnote_second) {create( :footnote, :code => "2", :label => "dummy 2", :line => route.line)}
|
209
|
+
|
210
|
+
|
211
|
+
it "should update vehicle's footnotes" do
|
212
|
+
expect(Chouette::VehicleJourney.find(subject.id).footnotes).to be_empty
|
213
|
+
subject.footnote_ids = [ footnote_first.id ]
|
214
|
+
subject.save
|
215
|
+
expect(Chouette::VehicleJourney.find(subject.id).footnotes.count).to eq(1)
|
216
|
+
end
|
217
|
+
|
218
|
+
end
|
219
|
+
|
220
|
+
end
|
221
|
+
|
222
|
+
end
|
223
|
+
|