aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlban Peignier2018-02-22 10:58:12 +0100
committerGitHub2018-02-22 10:58:12 +0100
commit1e137b3347660e8cea9d5c154111ef368fc60609 (patch)
treefb4ab90057fb67d3894f8773ce4ced59b67dceae
parentb5db0e9477f22e0d2acdd40c5db710f16d517a10 (diff)
parent8aab474b8ad555b4d5f8e28c0af2f6c72741e317 (diff)
downloadchouette-core-1e137b3347660e8cea9d5c154111ef368fc60609.tar.bz2
Merge pull request #319 from af83/5609_slug_format
Avoid problem with numeric in slug. Refs #5609
-rw-r--r--app/models/referential.rb8
-rw-r--r--db/schema.rb1
-rw-r--r--spec/models/referential_spec.rb18
3 files changed, 24 insertions, 3 deletions
diff --git a/app/models/referential.rb b/app/models/referential.rb
index 09c2e7d34..3b770603a 100644
--- a/app/models/referential.rb
+++ b/app/models/referential.rb
@@ -422,8 +422,12 @@ class Referential < ActiveRecord::Base
end
end
- def assign_slug
- self.slug ||= "#{name.parameterize.gsub('-', '_')}_#{Time.now.to_i}" if name
+ def assign_slug(time_reference = Time)
+ self.slug ||= begin
+ prefix = name.parameterize.gsub('-','_').gsub(/[^a-zA-Z_]/,'').gsub(/^_/,'')
+ prefix = "referential" if prefix.blank?
+ "#{prefix}_#{time_reference.now.to_i}"
+ end if name
end
def assign_prefix
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/models/referential_spec.rb b/spec/models/referential_spec.rb
index 6d699f759..2d4649b87 100644
--- a/spec/models/referential_spec.rb
+++ b/spec/models/referential_spec.rb
@@ -9,6 +9,24 @@ describe Referential, :type => :model do
subject { build_stubbed(:referential) }
it { should validate_presence_of(:objectid_format) }
+
+ 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 time_reference
+ expect(ref.slug).to eq(expected_slug)
+ end
+ end
end
context ".referential_ids_in_periode" do