diff options
| author | Robert | 2017-05-02 12:15:09 +0200 |
|---|---|---|
| committer | Robert | 2017-05-02 16:40:10 +0200 |
| commit | 9b95304792865eb05305d8fea01c634a5c5d1829 (patch) | |
| tree | 63b44ad698c360626980ee6101ace13e49b83308 | |
| parent | a647f932dc8206583f727a4af64a200b6ec6857b (diff) | |
| download | chouette-core-9b95304792865eb05305d8fea01c634a5c5d1829.tar.bz2 | |
Refs #3053
passes current_organization down from the controller into Reference.new_from
adds joint models *ReferenceMemeberships to excluded Apartment models
| -rw-r--r-- | app/controllers/referentials_controller.rb | 5 | ||||
| -rw-r--r-- | app/models/referential.rb | 4 | ||||
| -rw-r--r-- | app/models/rule_parameter_set.rb | 218 | ||||
| -rw-r--r-- | config/initializers/apartment.rb | 2 | ||||
| -rw-r--r--[-rwxr-xr-x] | spec/lib/af83/stored_procedures/clone_schema_spec.rb | 5 | ||||
| -rw-r--r-- | spec/models/referential_spec.rb | 2 | ||||
| -rw-r--r-- | spec/spec_helper.rb | 7 |
7 files changed, 126 insertions, 117 deletions
diff --git a/app/controllers/referentials_controller.rb b/app/controllers/referentials_controller.rb index f46cd188d..437444f29 100644 --- a/app/controllers/referentials_controller.rb +++ b/app/controllers/referentials_controller.rb @@ -8,7 +8,10 @@ class ReferentialsController < BreadcrumbController respond_to :js, :only => :show def new - @referential = Referential.new_from(Referential.find(params[:from])) if params[:from] + if params[:from] + source_referential = Referential.find(params[:from]) + @referential = Referential.new_from(source_referential, organisation: current_organisation) + end new! do @referential.data_format = current_organisation.data_format diff --git a/app/models/referential.rb b/app/models/referential.rb index 50db32637..83d507320 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -126,14 +126,14 @@ class Referential < ActiveRecord::Base self end - def self.new_from from + def self.new_from(from, organisation:) Referential.new({ name: I18n.t("activerecord.copy", :name => from.name), slug: "#{from.slug}_clone", prefix: from.prefix, time_zone: from.time_zone, bounds: from.bounds, - organisation: from.organisation, + organisation: organisation, line_referential: from.line_referential, stop_area_referential: from.stop_area_referential, workbench: from.workbench, diff --git a/app/models/rule_parameter_set.rb b/app/models/rule_parameter_set.rb index ba13b6d27..db78a2f8a 100644 --- a/app/models/rule_parameter_set.rb +++ b/app/models/rule_parameter_set.rb @@ -165,22 +165,22 @@ class RuleParameterSet < ActiveRecord::Base end def self.default_params(mode=nil) - base = { :inter_stop_area_distance_min => 20, - :parent_stop_area_distance_max => 300, - :inter_access_point_distance_min => 20, - :inter_connection_link_distance_max => 400, - :walk_default_speed_max => 4, - :walk_occasional_traveller_speed_max => 2, - :walk_frequent_traveller_speed_max => 5, + base = { :inter_stop_area_distance_min => 20, + :parent_stop_area_distance_max => 300, + :inter_access_point_distance_min => 20, + :inter_connection_link_distance_max => 400, + :walk_default_speed_max => 4, + :walk_occasional_traveller_speed_max => 2, + :walk_frequent_traveller_speed_max => 5, :walk_mobility_restricted_traveller_speed_max => 1, - :inter_access_link_distance_max => 300, - :inter_stop_duration_max => 40, - :facility_stop_area_distance_max => 300, - :check_allowed_transport_modes => false, - :check_lines_in_groups => false, - :check_line_routes => false, - :check_stop_parent => false, - :check_connection_link_on_physical => false + :inter_access_link_distance_max => 300, + :inter_stop_duration_max => 40, + :facility_stop_area_distance_max => 300, + :check_allowed_transport_modes => false, + :check_lines_in_groups => false, + :check_line_routes => false, + :check_stop_parent => false, + :check_connection_link_on_physical => false } if mode && self.mode_default_params[ mode.to_sym] base.merge!( self.mode_default_params[ mode.to_sym]) @@ -190,145 +190,145 @@ class RuleParameterSet < ActiveRecord::Base def self.mode_default_params { :coach => { - :allowed_transport_mode_coach => false, - :inter_stop_area_distance_min_mode_coach => 500, - :inter_stop_area_distance_max_mode_coach => 10000, - :speed_max_mode_coach => 90, - :speed_min_mode_coach => 40, + :allowed_transport_mode_coach => false, + :inter_stop_area_distance_min_mode_coach => 500, + :inter_stop_area_distance_max_mode_coach => 10000, + :speed_max_mode_coach => 90, + :speed_min_mode_coach => 40, :inter_stop_duration_variation_max_mode_coach => 20}, :air => { - :allowed_transport_mode_air => false, - :inter_stop_area_distance_min_mode_air => 200, - :inter_stop_area_distance_max_mode_air => 10000, - :speed_max_mode_air => 800, - :speed_min_mode_air => 700, + :allowed_transport_mode_air => false, + :inter_stop_area_distance_min_mode_air => 200, + :inter_stop_area_distance_max_mode_air => 10000, + :speed_max_mode_air => 800, + :speed_min_mode_air => 700, :inter_stop_duration_variation_max_mode_air => 60}, :waterborne => { - :allowed_transport_mode_waterborne => false, - :inter_stop_area_distance_min_mode_waterborne => 200, - :inter_stop_area_distance_max_mode_waterborne => 10000, - :speed_max_mode_waterborne => 40, - :speed_min_mode_waterborne => 5, + :allowed_transport_mode_waterborne => false, + :inter_stop_area_distance_min_mode_waterborne => 200, + :inter_stop_area_distance_max_mode_waterborne => 10000, + :speed_max_mode_waterborne => 40, + :speed_min_mode_waterborne => 5, :inter_stop_duration_variation_max_mode_waterborne => 60}, :bus => { - :allowed_transport_mode_bus => false, - :inter_stop_area_distance_min_mode_bus => 100, - :inter_stop_area_distance_max_mode_bus => 10000, - :speed_max_mode_bus => 60, - :speed_min_mode_bus => 10, + :allowed_transport_mode_bus => false, + :inter_stop_area_distance_min_mode_bus => 100, + :inter_stop_area_distance_max_mode_bus => 10000, + :speed_max_mode_bus => 60, + :speed_min_mode_bus => 10, :inter_stop_duration_variation_max_mode_bus => 15}, :ferry => { - :allowed_transport_mode_ferry => false, - :inter_stop_area_distance_min_mode_ferry => 200, - :inter_stop_area_distance_max_mode_ferry => 10000, - :speed_max_mode_ferry => 40, - :speed_min_mode_ferry => 5, + :allowed_transport_mode_ferry => false, + :inter_stop_area_distance_min_mode_ferry => 200, + :inter_stop_area_distance_max_mode_ferry => 10000, + :speed_max_mode_ferry => 40, + :speed_min_mode_ferry => 5, :inter_stop_duration_variation_max_mode_ferry => 60}, :walk => { - :allowed_transport_mode_walk => false, - :inter_stop_area_distance_min_mode_walk => 1, - :inter_stop_area_distance_max_mode_walk => 10000, - :speed_max_mode_walk => 6, - :speed_min_mode_walk => 1, + :allowed_transport_mode_walk => false, + :inter_stop_area_distance_min_mode_walk => 1, + :inter_stop_area_distance_max_mode_walk => 10000, + :speed_max_mode_walk => 6, + :speed_min_mode_walk => 1, :inter_stop_duration_variation_max_mode_walk => 10}, :metro => { - :allowed_transport_mode_metro => false, - :inter_stop_area_distance_min_mode_metro => 300, - :inter_stop_area_distance_max_mode_metro => 2000, - :speed_max_mode_metro => 60, - :speed_min_mode_metro => 30, + :allowed_transport_mode_metro => false, + :inter_stop_area_distance_min_mode_metro => 300, + :inter_stop_area_distance_max_mode_metro => 2000, + :speed_max_mode_metro => 60, + :speed_min_mode_metro => 30, :inter_stop_duration_variation_max_mode_metro => 30}, :shuttle => { - :allowed_transport_mode_shuttle => false, - :inter_stop_area_distance_min_mode_shuttle => 500, - :inter_stop_area_distance_max_mode_shuttle => 10000, - :speed_max_mode_shuttle => 80, - :speed_min_mode_shuttle => 20, + :allowed_transport_mode_shuttle => false, + :inter_stop_area_distance_min_mode_shuttle => 500, + :inter_stop_area_distance_max_mode_shuttle => 10000, + :speed_max_mode_shuttle => 80, + :speed_min_mode_shuttle => 20, :inter_stop_duration_variation_max_mode_shuttle => 10}, :rapid_transit => { - :allowed_transport_mode_rapid_transit => false, - :inter_stop_area_distance_min_mode_rapid_transit => 2000, - :inter_stop_area_distance_max_mode_rapid_transit => 500000, - :speed_max_mode_rapid_transit => 300, - :speed_min_mode_rapid_transit => 20, + :allowed_transport_mode_rapid_transit => false, + :inter_stop_area_distance_min_mode_rapid_transit => 2000, + :inter_stop_area_distance_max_mode_rapid_transit => 500000, + :speed_max_mode_rapid_transit => 300, + :speed_min_mode_rapid_transit => 20, :inter_stop_duration_variation_max_mode_rapid_transit => 60}, :taxi => { - :allowed_transport_mode_taxi => false, - :inter_stop_area_distance_min_mode_taxi => 500, - :inter_stop_area_distance_max_mode_taxi => 300000, - :speed_max_mode_taxi => 130, - :speed_min_mode_taxi => 20, + :allowed_transport_mode_taxi => false, + :inter_stop_area_distance_min_mode_taxi => 500, + :inter_stop_area_distance_max_mode_taxi => 300000, + :speed_max_mode_taxi => 130, + :speed_min_mode_taxi => 20, :inter_stop_duration_variation_max_mode_taxi => 60}, :local_train => { - :allowed_transport_mode_local_train => false, - :inter_stop_area_distance_min_mode_local_train => 2000, - :inter_stop_area_distance_max_mode_local_train => 500000, - :speed_max_mode_local_train => 300, - :speed_min_mode_local_train => 20, + :allowed_transport_mode_local_train => false, + :inter_stop_area_distance_min_mode_local_train => 2000, + :inter_stop_area_distance_max_mode_local_train => 500000, + :speed_max_mode_local_train => 300, + :speed_min_mode_local_train => 20, :inter_stop_duration_variation_max_mode_local_train => 60}, :train => { - :allowed_transport_mode_train => false, - :inter_stop_area_distance_min_mode_train => 2000, - :inter_stop_area_distance_max_mode_train => 500000, - :speed_max_mode_train => 300, - :speed_min_mode_train => 20, + :allowed_transport_mode_train => false, + :inter_stop_area_distance_min_mode_train => 2000, + :inter_stop_area_distance_max_mode_train => 500000, + :speed_max_mode_train => 300, + :speed_min_mode_train => 20, :inter_stop_duration_variation_max_mode_train => 60}, :long_distance_train => { - :allowed_transport_mode_long_distance_train => false, - :inter_stop_area_distance_min_mode_long_distance_train => 2000, - :inter_stop_area_distance_max_mode_long_distance_train => 500000, - :speed_max_mode_long_distance_train => 300, - :speed_min_mode_long_distance_train => 20, + :allowed_transport_mode_long_distance_train => false, + :inter_stop_area_distance_min_mode_long_distance_train => 2000, + :inter_stop_area_distance_max_mode_long_distance_train => 500000, + :speed_max_mode_long_distance_train => 300, + :speed_min_mode_long_distance_train => 20, :inter_stop_duration_variation_max_mode_long_distance_train => 60}, :tramway => { - :allowed_transport_mode_tramway => false, - :inter_stop_area_distance_min_mode_tramway => 300, - :inter_stop_area_distance_max_mode_tramway => 2000, - :speed_max_mode_tramway => 50, - :speed_min_mode_tramway => 20, + :allowed_transport_mode_tramway => false, + :inter_stop_area_distance_min_mode_tramway => 300, + :inter_stop_area_distance_max_mode_tramway => 2000, + :speed_max_mode_tramway => 50, + :speed_min_mode_tramway => 20, :inter_stop_duration_variation_max_mode_tramway => 30}, :trolleybus => { - :allowed_transport_mode_trolleybus => false, - :inter_stop_area_distance_min_mode_trolleybus => 300, - :inter_stop_area_distance_max_mode_trolleybus => 2000, - :speed_max_mode_trolleybus => 50, - :speed_min_mode_trolleybus => 20, + :allowed_transport_mode_trolleybus => false, + :inter_stop_area_distance_min_mode_trolleybus => 300, + :inter_stop_area_distance_max_mode_trolleybus => 2000, + :speed_max_mode_trolleybus => 50, + :speed_min_mode_trolleybus => 20, :inter_stop_duration_variation_max_mode_trolleybus => 30}, :private_vehicle => { - :allowed_transport_mode_private_vehicle => false, - :inter_stop_area_distance_min_mode_private_vehicle => 500, - :inter_stop_area_distance_max_mode_private_vehicle => 300000, - :speed_max_mode_private_vehicle => 130, - :speed_min_mode_private_vehicle => 20, + :allowed_transport_mode_private_vehicle => false, + :inter_stop_area_distance_min_mode_private_vehicle => 500, + :inter_stop_area_distance_max_mode_private_vehicle => 300000, + :speed_max_mode_private_vehicle => 130, + :speed_min_mode_private_vehicle => 20, :inter_stop_duration_variation_max_mode_private_vehicle => 60}, :bicycle => { - :allowed_transport_mode_bicycle => false, - :inter_stop_area_distance_min_mode_bicycle => 300, - :inter_stop_area_distance_max_mode_bicycle => 30000, - :speed_max_mode_bicycle => 40, - :speed_min_mode_bicycle => 10, + :allowed_transport_mode_bicycle => false, + :inter_stop_area_distance_min_mode_bicycle => 300, + :inter_stop_area_distance_max_mode_bicycle => 30000, + :speed_max_mode_bicycle => 40, + :speed_min_mode_bicycle => 10, :inter_stop_duration_variation_max_mode_bicycle => 10}, :other => { - :allowed_transport_mode_other => false, - :inter_stop_area_distance_min_mode_other => 300, - :inter_stop_area_distance_max_mode_other => 30000, - :speed_max_mode_other => 40, - :speed_min_mode_other => 10, + :allowed_transport_mode_other => false, + :inter_stop_area_distance_min_mode_other => 300, + :inter_stop_area_distance_max_mode_other => 30000, + :speed_max_mode_other => 40, + :speed_min_mode_other => 10, :inter_stop_duration_variation_max_mode_other => 10}, } # :waterborne, :bus, :ferry, :walk, :metro, :shuttle, :rapidtransit, :taxi, :localtrain, :train, :longdistancetrain, :tramway, :trolleybus, :privatevehicle, :bicycle, :other end - def self.default( organisation) - self.default_for_all_modes( organisation).tap do |rps| + def self.default(organisation) + self.default_for_all_modes(organisation).tap do |rps| rps.name = "" end end - def self.default_for_all_modes( organisation) + def self.default_for_all_modes(organisation) mode_attributes = mode_default_params.values.inject(self.default_params){|memo, obj| memo.merge! obj} self.new( { :organisation_id => organisation.id, :name => "valeurs par defaut" - }.merge( mode_attributes)) + }.merge(mode_attributes)) end def allowed(mode) diff --git a/config/initializers/apartment.rb b/config/initializers/apartment.rb index 2c2632f40..29ce6564f 100644 --- a/config/initializers/apartment.rb +++ b/config/initializers/apartment.rb @@ -25,10 +25,12 @@ Apartment.configure do |config| "Api::V1::ApiKey", "RuleParameterSet", "StopAreaReferential", + "StopAreaReferentialMembership", "StopAreaReferentialSync", "StopAreaReferentialSyncMessage", "Chouette::StopArea", "LineReferential", + "LineReferentialMembership", "LineReferentialSync", "LineReferentialSyncMessage", "Chouette::Line", diff --git a/spec/lib/af83/stored_procedures/clone_schema_spec.rb b/spec/lib/af83/stored_procedures/clone_schema_spec.rb index 4de3379ea..c387ddc7d 100755..100644 --- a/spec/lib/af83/stored_procedures/clone_schema_spec.rb +++ b/spec/lib/af83/stored_procedures/clone_schema_spec.rb @@ -13,7 +13,8 @@ RSpec.describe StoredProcedures do StoredProcedures.create_stored_procedure :clone_schema end - context "meta specs describe source schema's introspection" do + # :meta specs are not run, as the describe the testing methd and not the application + context "meta specs describe source schema's introspection", :meta do it "table information is correctly read" do expect(get_table_information(source_schema, child_table)) .to eq([{"table_schema"=>"source_schema", @@ -31,7 +32,7 @@ RSpec.describe StoredProcedures do expect( get_table_information(target_schema, child_table) ).to be_empty end - it "sequences are correctly read", :meta do + it "sequences are correctly read" do expect(get_sequences(source_schema, child_table)) .to eq([{"sequence_name"=>"#{child_table}_id_seq", "last_value"=>"1", diff --git a/spec/models/referential_spec.rb b/spec/models/referential_spec.rb index 7cf428eb0..2390cc470 100644 --- a/spec/models/referential_spec.rb +++ b/spec/models/referential_spec.rb @@ -27,7 +27,7 @@ describe Referential, :type => :model do context "Cloning referential" do let(:clone) do - Referential.new_from(ref) + Referential.new_from(ref, organisation: ref.organisation) end let(:saved_clone) do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f66d721c9..cda753efe 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -51,8 +51,11 @@ RSpec.configure do |config| #Capybara.exact = true Capybara.javascript_driver = :poltergeist - config.filter_run_excluding :js => true - config.filter_run :wip => true + # :meta tests can be run seperately in case of doubt about the tests themselves + # they serve mainly as an explanataion of complicated tests (as e.g. PG information_schema introspection) + config.filter_run_excluding :meta => true + config.filter_run_excluding :js => true + config.filter_run :wip => true config.run_all_when_everything_filtered = true config.include TokenInputHelper, :type => :feature |
