mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
Validating user input for shopfront taxon order
This commit is contained in:
@@ -56,6 +56,7 @@ class Enterprise < ActiveRecord::Base
|
||||
validates :address, presence: true, associated: true
|
||||
validates :email, presence: true
|
||||
validates_presence_of :owner
|
||||
validate :shopfront_taxons
|
||||
validate :enforce_ownership_limit, if: lambda { owner_id_changed? && !owner_id.nil? }
|
||||
validates_length_of :description, :maximum => 255
|
||||
|
||||
@@ -341,4 +342,10 @@ class Enterprise < ActiveRecord::Base
|
||||
errors.add(:owner, "^#{owner.email} is not permitted to own any more enterprises (limit is #{owner.enterprise_limit}).")
|
||||
end
|
||||
end
|
||||
|
||||
def shopfront_taxons
|
||||
unless preferred_shopfront_taxon_order =~ /\A((\d+,)*\d+)?\z/
|
||||
errors.add(:shopfront_taxon_order, "must contain a list of taxons.")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -175,6 +175,41 @@ describe Enterprise do
|
||||
e = create(:enterprise, owner: nil)
|
||||
}.to raise_error ActiveRecord::RecordInvalid, "Validation failed: Owner can't be blank"
|
||||
end
|
||||
|
||||
describe "preferred_shopfront_taxon_order" do
|
||||
it "empty strings are valid" do
|
||||
enterprise = build(:enterprise, preferred_shopfront_taxon_order: "")
|
||||
expect(enterprise).to be_valid
|
||||
end
|
||||
|
||||
it "a single integer is valid" do
|
||||
enterprise = build(:enterprise, preferred_shopfront_taxon_order: "11")
|
||||
expect(enterprise).to be_valid
|
||||
end
|
||||
|
||||
it "comma delimited integers are valid" do
|
||||
enterprise = build(:enterprise, preferred_shopfront_taxon_order: "1,2,3")
|
||||
expect(enterprise).to be_valid
|
||||
enterprise = build(:enterprise, preferred_shopfront_taxon_order: "1,22,333")
|
||||
expect(enterprise).to be_valid
|
||||
end
|
||||
|
||||
it "commas at the beginning and end are disallowed" do
|
||||
enterprise = build(:enterprise, preferred_shopfront_taxon_order: ",1,2,3")
|
||||
expect(enterprise).to be_invalid
|
||||
enterprise = build(:enterprise, preferred_shopfront_taxon_order: "1,2,3,")
|
||||
expect(enterprise).to be_invalid
|
||||
end
|
||||
|
||||
it "any other characters are invalid" do
|
||||
enterprise = build(:enterprise, preferred_shopfront_taxon_order: "a1,2,3")
|
||||
expect(enterprise).to be_invalid
|
||||
enterprise = build(:enterprise, preferred_shopfront_taxon_order: ".1,2,3")
|
||||
expect(enterprise).to be_invalid
|
||||
enterprise = build(:enterprise, preferred_shopfront_taxon_order: " 1,2,3")
|
||||
expect(enterprise).to be_invalid
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "delegations" do
|
||||
|
||||
Reference in New Issue
Block a user