diff options
| -rw-r--r-- | app/models/referential.rb | 10 | ||||
| -rw-r--r-- | db/schema.rb | 1 | ||||
| -rw-r--r-- | spec/factories/referentials.rb | 2 | ||||
| -rw-r--r-- | spec/models/referential_spec.rb | 29 | ||||
| -rw-r--r-- | spec/support/referential.rb | 4 | 
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" | 
