aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorZog2018-02-26 09:58:16 +0100
committerAlban Peignier2018-03-14 15:03:03 +0100
commit8baaa7947ea1e229f67149d221dea76450f040a5 (patch)
treef70abb8951d0f682342452d66c2eca854c2651f6 /spec
parent1457744f19109a402f76b7d1aafcb1709e38f877 (diff)
downloadchouette-core-8baaa7947ea1e229f67149d221dea76450f040a5.tar.bz2
Refs #5972 @1h; Automatic registration_number generation
Diffstat (limited to 'spec')
-rw-r--r--spec/models/chouette/stop_area_spec.rb76
-rw-r--r--spec/models/stop_area_referential_spec.rb5
2 files changed, 81 insertions, 0 deletions
diff --git a/spec/models/chouette/stop_area_spec.rb b/spec/models/chouette/stop_area_spec.rb
index 32ee5a3a6..e35300caf 100644
--- a/spec/models/chouette/stop_area_spec.rb
+++ b/spec/models/chouette/stop_area_spec.rb
@@ -24,6 +24,82 @@ describe Chouette::StopArea, :type => :model do
end
end
+ describe "#registration_number" do
+ let(:registration_number){ nil }
+ let(:registration_number_format){ nil }
+ let(:stop_area_referential){ create :stop_area_referential, registration_number_format: registration_number_format}
+ let(:stop_area){ build :stop_area, stop_area_referential: stop_area_referential, registration_number: registration_number}
+ context "without registration_number_format on the StopAreaReferential" do
+ it "should not generate a registration_number" do
+ stop_area.save!
+ expect(stop_area.registration_number).to_not be_present
+ end
+
+ it "should not validate the registration_number format" do
+ stop_area.registration_number = "1234455"
+ expect(stop_area).to be_valid
+ end
+
+ it "should not validate the registration_number uniqueness" do
+ stop_area.registration_number = "1234455"
+ create :stop_area, stop_area_referential: stop_area_referential, registration_number: stop_area.registration_number
+ expect(stop_area).to be_valid
+ end
+ end
+
+ context "with a registration_number_format on the StopAreaReferential" do
+ let(:registration_number_format){ "XXX" }
+
+ it "should generate a registration_number" do
+ stop_area.save!
+ expect(stop_area.registration_number).to be_present
+ expect(stop_area.registration_number).to match /[A-Z]{3}/
+ end
+
+ context "with a previous stop_area" do
+ it "should generate a registration_number" do
+ create :stop_area, stop_area_referential: stop_area_referential, registration_number: "AAA"
+ stop_area.save!
+ expect(stop_area.registration_number).to be_present
+ expect(stop_area.registration_number).to eq "AAB"
+ end
+
+ it "should generate a registration_number" do
+ create :stop_area, stop_area_referential: stop_area_referential, registration_number: "ZZZ"
+ stop_area.save!
+ expect(stop_area.registration_number).to be_present
+ expect(stop_area.registration_number).to eq "AAA"
+ end
+
+ it "should generate a registration_number" do
+ create :stop_area, stop_area_referential: stop_area_referential, registration_number: "AAA"
+ create :stop_area, stop_area_referential: stop_area_referential, registration_number: "ZZZ"
+ stop_area.save!
+ expect(stop_area.registration_number).to be_present
+ expect(stop_area.registration_number).to eq "AAB"
+ end
+ end
+
+ it "should validate the registration_number format" do
+ stop_area.registration_number = "1234455"
+ expect(stop_area).to_not be_valid
+ stop_area.registration_number = "ABC"
+ expect(stop_area).to be_valid
+ expect{ stop_area.save! }.to_not raise_error
+ end
+
+ it "should validate the registration_number uniqueness" do
+ stop_area.registration_number = "ABC"
+ create :stop_area, stop_area_referential: stop_area_referential, registration_number: stop_area.registration_number
+ expect(stop_area).to_not be_valid
+
+ stop_area.registration_number = "ABD"
+ create :stop_area, registration_number: stop_area.registration_number
+ expect(stop_area).to be_valid
+ end
+ end
+ end
+
# describe ".latitude" do
# it "should accept -90 value" do
# subject = create :stop_area, :area_type => "BoardingPosition"
diff --git a/spec/models/stop_area_referential_spec.rb b/spec/models/stop_area_referential_spec.rb
index dd2bdce20..d68b5b809 100644
--- a/spec/models/stop_area_referential_spec.rb
+++ b/spec/models/stop_area_referential_spec.rb
@@ -8,4 +8,9 @@ RSpec.describe StopAreaReferential, :type => :model do
it { is_expected.to have_many(:stop_area_referential_syncs) }
it { is_expected.to have_many(:workbenches) }
it { should validate_presence_of(:objectid_format) }
+ it { should allow_value('').for(:registration_number_format) }
+ it { should allow_value('X').for(:registration_number_format) }
+ it { should allow_value('XXXXX').for(:registration_number_format) }
+ it { should_not allow_value('123').for(:registration_number_format) }
+ it { should_not allow_value('ABC').for(:registration_number_format) }
end