aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/referential.rb10
-rw-r--r--db/schema.rb1
-rw-r--r--spec/factories/referentials.rb2
-rw-r--r--spec/models/referential_spec.rb29
-rw-r--r--spec/support/referential.rb4
5 files changed, 23 insertions, 23 deletions
diff --git a/app/models/referential.rb b/app/models/referential.rb
index 54497d3cf..3b770603a 100644
--- a/app/models/referential.rb
+++ b/app/models/referential.rb
@@ -13,7 +13,7 @@ class Referential < ActiveRecord::Base
validates_uniqueness_of :slug
- validates_format_of :slug, with: %r{([a-z][a-z-]+_\d{10}|\d{10})}
+ validates_format_of :slug, with: %r{\A[a-z][0-9a-z_]+\Z}
validates_format_of :prefix, with: %r{\A[0-9a-zA-Z_]+\Z}
validates_format_of :upper_corner, with: %r{\A-?[0-9]+\.?[0-9]*\,-?[0-9]+\.?[0-9]*\Z}
validates_format_of :lower_corner, with: %r{\A-?[0-9]+\.?[0-9]*\,-?[0-9]+\.?[0-9]*\Z}
@@ -422,11 +422,11 @@ class Referential < ActiveRecord::Base
end
end
- def assign_slug
+ def assign_slug(time_reference = Time)
self.slug ||= begin
- prefix = "#{name.parameterize}".scan(/[a-zA-Z-]/)
- prefix.delete_at 0 if prefix[0] == '-'
- prefix.empty? ? "#{Time.now.to_i}" : "#{prefix.join}_#{Time.now.to_i}"
+ prefix = name.parameterize.gsub('-','_').gsub(/[^a-zA-Z_]/,'').gsub(/^_/,'')
+ prefix = "referential" if prefix.blank?
+ "#{prefix}_#{time_reference.now.to_i}"
end if name
end
diff --git a/db/schema.rb b/db/schema.rb
index f77961f8d..c709290f5 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -18,7 +18,6 @@ ActiveRecord::Schema.define(version: 20180202170009) do
enable_extension "hstore"
enable_extension "postgis"
enable_extension "unaccent"
- enable_extension "objectid"
create_table "access_links", id: :bigserial, force: :cascade do |t|
t.integer "access_point_id", limit: 8
diff --git a/spec/factories/referentials.rb b/spec/factories/referentials.rb
index a9f1f972a..0276a47be 100644
--- a/spec/factories/referentials.rb
+++ b/spec/factories/referentials.rb
@@ -1,7 +1,7 @@
FactoryGirl.define do
factory :referential do
sequence(:name) { |n| "Test #{n}" }
- sequence(:slug) { |n| "test-#{n}_#{Time.now.to_i}" }
+ sequence(:slug) { |n| "test_#{n}" }
sequence(:prefix) { |n| "test_#{n}" }
association :line_referential
association :stop_area_referential
diff --git a/spec/models/referential_spec.rb b/spec/models/referential_spec.rb
index d07b57f13..2d4649b87 100644
--- a/spec/models/referential_spec.rb
+++ b/spec/models/referential_spec.rb
@@ -10,20 +10,21 @@ describe Referential, :type => :model do
it { should validate_presence_of(:objectid_format) }
- it "shoul assign slug with a good format" do
-
- names = %w(
- 2018-Hiver-Jezequel-MM-Lyon-Nice
- 2018-Hiver-Jezequel-23293MM-Lyon-Nice
- -Hiver-Jezequel-MM-Lyon-Nice
- Hiver-Jezequel-MM-Lyon-Nice
- 20179282
- )
-
- names.each do |name|
+ it "assign slug with a good format" do
+ time_reference = double(now: 1234567890)
+
+ conditions = {
+ "2018-Hiver-Jezequel-MM-Lyon-Nice": "hiver_jezequel_mm_lyon_nice_1234567890",
+ "2018-Hiver-Jezequel-23293MM-Lyon-Nice": "hiver_jezequel_mm_lyon_nice_1234567890",
+ "-Hiver-Jezequel-MM-Lyon-Nice": "hiver_jezequel_mm_lyon_nice_1234567890",
+ "Hiver-Jezequel-MM-Lyon-Nice": "hiver_jezequel_mm_lyon_nice_1234567890",
+ "20179282": "referential_1234567890"
+ }
+
+ conditions.each do |name, expected_slug|
ref = Referential.new name: name
- ref.assign_slug
- expect(ref.slug).to match(/([a-z][a-z-]+_\d{10}|\d{10})/)
+ ref.assign_slug time_reference
+ expect(ref.slug).to eq(expected_slug)
end
end
end
@@ -77,7 +78,7 @@ describe Referential, :type => :model do
{
"organisation_id" => first_organisation.id,
"name"=>"Test",
- "slug"=>"test_#{Time.now.to_i}",
+ "slug"=>"test",
"prefix"=>"test",
"time_zone"=>"American Samoa",
"upper_corner"=>"51.1,8.23",
diff --git a/spec/support/referential.rb b/spec/support/referential.rb
index 19590191a..9acdce73a 100644
--- a/spec/support/referential.rb
+++ b/spec/support/referential.rb
@@ -1,7 +1,7 @@
module ReferentialHelper
def first_referential
- Referential.find_by!(:name => "first")
+ Referential.find_by!(:slug => "first")
end
def first_organisation
@@ -64,7 +64,7 @@ RSpec.configure do |config|
:referential,
prefix: "first",
name: "first",
- slug: "first_#{Time.now.to_i}",
+ slug: "first",
organisation: organisation,
workbench: workbench,
objectid_format: "stif_netex"