aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/models/chouette/route/route_duplication_spec.rb44
-rw-r--r--spec/models/chouette/stop_point_spec.rb11
2 files changed, 30 insertions, 25 deletions
diff --git a/spec/models/chouette/route/route_duplication_spec.rb b/spec/models/chouette/route/route_duplication_spec.rb
index 6168d1e38..f24435cf6 100644
--- a/spec/models/chouette/route/route_duplication_spec.rb
+++ b/spec/models/chouette/route/route_duplication_spec.rb
@@ -6,27 +6,43 @@ StopPoint = Chouette::StopPoint
RSpec.describe Route do
let!( :route ){ create :route }
- let( :new_objectid ){ [SecureRandom.hex, 'Route', SecureRandom.hex].join(':') }
- context 'duplicates' do
- describe 'a route' do
- it 'by creating a new one' do
- expect{ route.duplicate new_objectid }.to change{Route.count}.by(1)
- end
- it 'with the same values' do
- route.duplicate new_objectid
+ context '#duplicate' do
+ describe 'properties' do
+ it 'same attribute values' do
+ route.duplicate
expect( values_for_create(Route.last, except: %w{objectid}) ).to eq( values_for_create( route, except: %w{objectid} ) )
end
+ it 'same associated stop_areeas' do
+ expect( route.duplicate.stop_areas.pluck(:id) ).to eq(route.stop_areas.pluck(:id))
+ end
+ end
- it 'and also duplicating its stop points' do
- expect{ route.duplicate new_objectid }.to change{StopPoint.count}.by(route.stop_points.count)
+ describe 'side_effects' do
+ it {
+ expect{ route.duplicate }.to change{Route.count}.by(1)
+ }
+ it 'duplicates its stop points' do
+ expect{ route.duplicate }.to change{StopPoint.count}.by(route.stop_points.count)
end
- it 'but leaving the stop areas alone' do
- expect{ route.duplicate new_objectid }.not_to change{StopArea.count}
+ it 'does bot duplicate the stop areas' do
+ expect{ route.duplicate }.not_to change{StopArea.count}
end
- it "which are still accessible by the new route though" do
- expect( route.duplicate( new_objectid ).stop_areas.pluck(:id) ).to eq(route.stop_areas.pluck(:id))
+ end
+
+ describe 'is idempotent, concerning' do
+ let( :first_duplicate ){ route.duplicate }
+ let( :second_duplicate ){ first_duplicate.reload.duplicate }
+
+ it 'the required attributes' do
+ expect( values_for_create(first_duplicate, except: %w{objectid}) ).to eq( values_for_create( second_duplicate, except: %w{objectid} ) )
+ end
+
+ it 'the stop areas' do
+ expect( first_duplicate.stop_areas.pluck(:id) ).to eq( route.stop_areas.pluck(:id) )
+ expect( second_duplicate.stop_areas.pluck(:id) ).to eq( first_duplicate.stop_areas.pluck(:id) )
end
+
end
end
diff --git a/spec/models/chouette/stop_point_spec.rb b/spec/models/chouette/stop_point_spec.rb
index c43774085..d0314b8db 100644
--- a/spec/models/chouette/stop_point_spec.rb
+++ b/spec/models/chouette/stop_point_spec.rb
@@ -52,16 +52,5 @@ describe StopPoint, :type => :model do
it 'and old stop_area' do
expect(subject.duplicate(for_route: new_route).stop_area).to eq(subject.stop_area)
end
- it 'has an objectid, related to the new route' do
- new_stop_point = subject.duplicate(for_route: new_route)
-
- old_objectid_parts = subject.objectid.split(':')
- new_objectid_parts = new_stop_point.objectid.split(':')
- route_object_id_part = new_route.objectid.split(':').first
-
- expect(new_objectid_parts.first).to eq(route_object_id_part)
- expect(new_objectid_parts.second).to eq(old_objectid_parts.second)
- expect(new_objectid_parts.third).to eq(old_objectid_parts.third)
- end
end
end