aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
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