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 | 
