diff options
| author | Zog | 2018-02-26 09:58:16 +0100 |
|---|---|---|
| committer | Alban Peignier | 2018-03-14 15:03:03 +0100 |
| commit | 8baaa7947ea1e229f67149d221dea76450f040a5 (patch) | |
| tree | f70abb8951d0f682342452d66c2eca854c2651f6 /spec | |
| parent | 1457744f19109a402f76b7d1aafcb1709e38f877 (diff) | |
| download | chouette-core-8baaa7947ea1e229f67149d221dea76450f040a5.tar.bz2 | |
Refs #5972 @1h; Automatic registration_number generation
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/models/chouette/stop_area_spec.rb | 76 | ||||
| -rw-r--r-- | spec/models/stop_area_referential_spec.rb | 5 |
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 |
