aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert2017-12-05 09:18:19 +0100
committerRobert2017-12-05 12:19:42 +0100
commit089c6935ca0e036de484834381e5beda7545d499 (patch)
treeaf6b9696de8069631234f032cf62e685e8039162
parent8848d279b4d3a27c1ddebe7636a49abe545ba73a (diff)
downloadchouette-core-089c6935ca0e036de484834381e5beda7545d499.tar.bz2
Refs: #5179@1h; Referential Creation Enforces objectid_format from associated Workbench [skip-ci]
- speced the `define_default_attributes` part - speced the Reference.new_from part
-rw-r--r--app/models/concerns/objectid_formatter_support.rb10
-rw-r--r--app/models/referential.rb4
-rw-r--r--spec/models/referential/referential_oid_format_from_wkbch_spec.rb59
3 files changed, 70 insertions, 3 deletions
diff --git a/app/models/concerns/objectid_formatter_support.rb b/app/models/concerns/objectid_formatter_support.rb
index 34a51740f..d0b85d8ac 100644
--- a/app/models/concerns/objectid_formatter_support.rb
+++ b/app/models/concerns/objectid_formatter_support.rb
@@ -1,9 +1,17 @@
module ObjectidFormatterSupport
extend ActiveSupport::Concern
+ class << self
+ def legal_formats
+ %w(netex stif_netex stif_reflex stif_codifligne)
+ end
+
+ def default_format; 'netex' end
+ end
+
included do
extend Enumerize
- enumerize :objectid_format, in: %w(netex stif_netex stif_reflex stif_codifligne), default: 'netex'
+ enumerize :objectid_format, in: ObjectidFormatterSupport.legal_formats, default: ObjectidFormatterSupport.default_format
validates_presence_of :objectid_format
def objectid_formatter
diff --git a/app/models/referential.rb b/app/models/referential.rb
index ee74bd9f5..233a9f24a 100644
--- a/app/models/referential.rb
+++ b/app/models/referential.rb
@@ -140,8 +140,8 @@ class Referential < ActiveRecord::Base
end
def self.new_from(from, functional_scope)
- Referential.new(
- name: I18n.t("activerecord.copy", :name => from.name),
+e Referential.new(
+ name: I18n.t("activerecord.copy", name: from.name),
slug: "#{from.slug}_clone",
prefix: from.prefix,
time_zone: from.time_zone,
diff --git a/spec/models/referential/referential_oid_format_from_wkbch_spec.rb b/spec/models/referential/referential_oid_format_from_wkbch_spec.rb
new file mode 100644
index 000000000..fe359ac6b
--- /dev/null
+++ b/spec/models/referential/referential_oid_format_from_wkbch_spec.rb
@@ -0,0 +1,59 @@
+RSpec.describe Referential do
+
+ describe 'default attributes' do
+ let( :referential ){ described_class.new }
+ let( :workbench ){ Workbench.new }
+
+ it "of a referential with a workbench contain the workbench's objectid_format" do
+ ObjectidFormatterSupport.legal_formats.each do |legal_format|
+ workbench.objectid_format = legal_format
+ referential.workbench = workbench
+ referential.define_default_attributes
+ expect( referential.objectid_format ).to eq(legal_format)
+ end
+ end
+
+ it 'of a referential w/o a workbench contain the default objectid_format' do
+ referential.define_default_attributes
+ expect( referential.objectid_format ).to eq(ObjectidFormatterSupport.default_format)
+ end
+ end
+
+
+ describe 'self.new_from' do
+
+ # Referential.new(
+ # name:
+ # slug: "#{from.slug}_clone",
+ # prefix: from.prefix,
+ # time_zone: from.time_zone,
+ # bounds: from.bounds,
+ # line_referential: from.line_referential,
+ # stop_area_referential: from.stop_area_referential,
+ # created_from: from,
+ # metadatas: from.metadatas.map { |m| ReferentialMetadata.new_from(m, functional_scope) }
+ # )
+ #
+
+ let( :source ){ build :referential }
+ let( :functional_scope ){ double('functional scope') }
+
+ it 'copies objectid_format from source' do
+ expect( described_class )
+ .to receive(:new)
+ .with(name: I18n.t("activerecord.copy", name: source.name),
+ slug: "#{source.slug}_clone",
+ prefix: source.prefix,
+ time_zone: source.time_zone,
+ bounds: source.bounds,
+ line_referential: source.line_referential,
+ stop_area_referential: source.stop_area_referential,
+ created_from: source,
+ objectid_format: source.objectid_format,
+ metadatas: source.metadatas.map { |m| ReferentialMetadata.new_from(m, functional_scope) })
+
+ described_class.new_from( source, functional_scope )
+ end
+
+ end
+end