diff options
| author | Alban Peignier | 2018-02-22 10:58:12 +0100 |
|---|---|---|
| committer | GitHub | 2018-02-22 10:58:12 +0100 |
| commit | 1e137b3347660e8cea9d5c154111ef368fc60609 (patch) | |
| tree | fb4ab90057fb67d3894f8773ce4ced59b67dceae | |
| parent | b5db0e9477f22e0d2acdd40c5db710f16d517a10 (diff) | |
| parent | 8aab474b8ad555b4d5f8e28c0af2f6c72741e317 (diff) | |
| download | chouette-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.rb | 8 | ||||
| -rw-r--r-- | db/schema.rb | 1 | ||||
| -rw-r--r-- | spec/models/referential_spec.rb | 18 |
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 |
