allow nil for diaspora_id in profile

refactor some tests
This commit is contained in:
Benjamin Neff 2015-08-06 02:21:49 +02:00
parent ede695b214
commit 8c63655886
12 changed files with 67 additions and 56 deletions

View file

@ -6,7 +6,7 @@ module DiasporaFederation
rule :guid, :guid rule :guid, :guid
rule :diaspora_id, :diaspora_id rule :diaspora_id, %i(not_empty diaspora_id)
rule :url, %i(not_nil nilableURI) rule :url, %i(not_nil nilableURI)

View file

@ -20,7 +20,7 @@ module Validation
domain_literal = "\\[#{dcontent}+\\]" domain_literal = "\\[#{dcontent}+\\]"
domain = "(?:#{dot_atom}|#{domain_literal})" domain = "(?:#{dot_atom}|#{domain_literal})"
port = "(:[#{digit}]+)?" port = "(:[#{digit}]+)?"
addr_spec = "#{username}\\@#{domain}#{port}" addr_spec = "(#{username}\\@#{domain}#{port})?"
/\A#{addr_spec}\z/u /\A#{addr_spec}\z/u
end end
@ -33,7 +33,7 @@ module Validation
# Determines if value is a valid diaspora ID # Determines if value is a valid diaspora ID
def valid_value?(value) def valid_value?(value)
!DIASPORA_ID.match(value).nil? value.nil? || !DIASPORA_ID.match(value).nil?
end end
# This rule has no params # This rule has no params

View file

@ -12,19 +12,20 @@ module DiasporaFederation
it_behaves_like "a diaspora id validator" do it_behaves_like "a diaspora id validator" do
let(:property) { :diaspora_id } let(:property) { :diaspora_id }
let(:mandatory) { true }
end end
it_behaves_like "a guid validator" do it_behaves_like "a guid validator" do
let(:property) { :guid } let(:property) { :guid }
end end
context "#url" do describe "#url" do
it_behaves_like "a url validator without path" do it_behaves_like "a url validator without path" do
let(:property) { :url } let(:property) { :url }
end end
end end
context "#profile" do describe "#profile" do
it "fails if profile is nil" do it "fails if profile is nil" do
instance = OpenStruct.new(FactoryGirl.attributes_for(:person_entity, profile: nil)) instance = OpenStruct.new(FactoryGirl.attributes_for(:person_entity, profile: nil))
validator = Validators::PersonValidator.new(instance) validator = Validators::PersonValidator.new(instance)

View file

@ -15,6 +15,7 @@ module DiasporaFederation
it_behaves_like "a diaspora id validator" do it_behaves_like "a diaspora id validator" do
let(:property) { :diaspora_id } let(:property) { :diaspora_id }
let(:mandatory) { false }
end end
%i(first_name last_name).each do |prop| %i(first_name last_name).each do |prop|

View file

@ -27,20 +27,14 @@ describe Validation::Rule::Birthday do
expect(validator.errors).to be_empty expect(validator.errors).to be_empty
end end
it "validates an empty string" do it "allows nil and empty" do
validator = Validation::Validator.new(OpenStruct.new(birthday: "")) [nil, ""].each do |val|
validator.rule(:birthday, :birthday) validator = Validation::Validator.new(OpenStruct.new(birthday: val))
validator.rule(:birthday, :birthday)
expect(validator).to be_valid expect(validator).to be_valid
expect(validator.errors).to be_empty expect(validator.errors).to be_empty
end end
it "validates nil" do
validator = Validation::Validator.new(OpenStruct.new(birthday: nil))
validator.rule(:birthday, :birthday)
expect(validator).to be_valid
expect(validator.errors).to be_empty
end end
it "fails for invalid date string" do it "fails for invalid date string" do

View file

@ -63,12 +63,14 @@ describe Validation::Rule::Boolean do
end end
end end
it "fails for nil" do it "fails if nil or empty" do
validator = Validation::Validator.new(OpenStruct.new(boolean: nil)) [nil, ""].each do |val|
validator.rule(:boolean, :boolean) validator = Validation::Validator.new(OpenStruct.new(boolean: val))
validator.rule(:boolean, :boolean)
expect(validator).not_to be_valid expect(validator).not_to be_valid
expect(validator.errors).to include(:boolean) expect(validator.errors).to include(:boolean)
end
end end
end end
end end

View file

@ -74,5 +74,15 @@ describe Validation::Rule::DiasporaId do
expect(validator).not_to be_valid expect(validator).not_to be_valid
expect(validator.errors).to include(:diaspora_id) expect(validator.errors).to include(:diaspora_id)
end end
it "allows nil and empty" do
[nil, ""].each do |val|
validator = Validation::Validator.new(OpenStruct.new(diaspora_id: val))
validator.rule(:diaspora_id, :diaspora_id)
expect(validator).to be_valid
expect(validator.errors).to be_empty
end
end
end end
end end

View file

@ -45,19 +45,13 @@ describe Validation::Rule::Guid do
end end
it "fails if the string is empty" do it "fails if the string is empty" do
validator = Validation::Validator.new(OpenStruct.new(guid: "")) [nil, ""].each do |val|
validator.rule(:guid, :guid) validator = Validation::Validator.new(OpenStruct.new(guid: val))
validator.rule(:guid, :guid)
expect(validator).not_to be_valid expect(validator).not_to be_valid
expect(validator.errors).to include(:guid) expect(validator.errors).to include(:guid)
end end
it "fails if the string is nil" do
validator = Validation::Validator.new(OpenStruct.new(guid: nil))
validator.rule(:guid, :guid)
expect(validator).not_to be_valid
expect(validator.errors).to include(:guid)
end end
end end
end end

View file

@ -34,5 +34,13 @@ describe Validation::Rule::NotNil do
expect(validator).not_to be_valid expect(validator).not_to be_valid
expect(validator.errors).to include(:not_nil) expect(validator.errors).to include(:not_nil)
end end
it "allows an empty string" do
validator = Validation::Validator.new(OpenStruct.new(not_nil: ""))
validator.rule(:not_nil, :not_nil)
expect(validator).to be_valid
expect(validator.errors).to be_empty
end
end end
end end

View file

@ -50,20 +50,14 @@ describe Validation::Rule::PublicKey do
expect(validator.errors).to include(:key) expect(validator.errors).to include(:key)
end end
it "fails if the key is empty" do it "fails if the key is nil or empty" do
validator = Validation::Validator.new(OpenStruct.new(key: "")) [nil, ""].each do |val|
validator.rule(:key, :public_key) validator = Validation::Validator.new(OpenStruct.new(key: val))
validator.rule(:key, :public_key)
expect(validator).not_to be_valid expect(validator).not_to be_valid
expect(validator.errors).to include(:key) expect(validator.errors).to include(:key)
end end
it "fails if the key is nil" do
validator = Validation::Validator.new(OpenStruct.new(key: nil))
validator.rule(:key, :public_key)
expect(validator).not_to be_valid
expect(validator.errors).to include(:key)
end end
end end
end end

View file

@ -46,12 +46,14 @@ describe Validation::Rule::TagCount do
expect(validator.errors).to include(:tags) expect(validator.errors).to include(:tags)
end end
it "validates if tags are nil" do it "allows nil and empty" do
validator = Validation::Validator.new(OpenStruct.new(tags: nil)) [nil, ""].each do |val|
validator.rule(:tags, tag_count: {maximum: 5}) validator = Validation::Validator.new(OpenStruct.new(tags: val))
validator.rule(:tags, tag_count: {maximum: 5})
expect(validator).to be_valid expect(validator).to be_valid
expect(validator.errors).to be_empty expect(validator.errors).to be_empty
end
end end
end end
end end

View file

@ -11,12 +11,17 @@ def alphanumeric_string(length)
end end
shared_examples "a diaspora id validator" do shared_examples "a diaspora id validator" do
it "must not be nil or empty" do it "must not be nil or empty if mandatory" do
[nil, ""].each do |val| [nil, ""].each do |val|
validator = described_class.new(entity_stub(entity, property, val)) validator = described_class.new(entity_stub(entity, property, val))
expect(validator).not_to be_valid if mandatory
expect(validator.errors).to include(property) expect(validator).not_to be_valid
expect(validator.errors).to include(property)
else
expect(validator).to be_valid
expect(validator.errors).to be_empty
end
end end
end end