Add validators for events

This commit is contained in:
Benjamin Neff 2017-01-03 02:01:21 +01:00
parent 1097130988
commit fd34472647
5 changed files with 114 additions and 0 deletions

View file

@ -44,6 +44,8 @@ require "diaspora_federation/validators/account_deletion_validator"
require "diaspora_federation/validators/comment_validator"
require "diaspora_federation/validators/contact_validator"
require "diaspora_federation/validators/conversation_validator"
require "diaspora_federation/validators/event_participation_validator"
require "diaspora_federation/validators/event_validator"
require "diaspora_federation/validators/h_card_validator"
require "diaspora_federation/validators/like_validator"
require "diaspora_federation/validators/location_validator"

View file

@ -0,0 +1,12 @@
module DiasporaFederation
module Validators
# This validates a {Entities::EventParticipation}.
class EventParticipationValidator < Validation::Validator
include Validation
include RelayableValidator
rule :status, regular_expression: {regex: /\A(accepted|declined|tentative)\z/}
end
end
end

View file

@ -0,0 +1,21 @@
module DiasporaFederation
module Validators
# This validates a {Entities::Event}.
class EventValidator < Validation::Validator
include Validation
rule :author, %i(not_empty diaspora_id)
rule :guid, :guid
rule :summary, [:not_empty, length: {maximum: 255}]
rule :description, length: {maximum: 65_535}
rule :start, :not_nil
rule :all_day, :boolean
rule :timezone, regular_expression: {regex: %r{\A[A-Za-z_-]{,14}(/[A-Za-z_-]{,14}){1,2}\z}}
end
end
end

View file

@ -0,0 +1,17 @@
module DiasporaFederation
describe Validators::EventParticipationValidator do
let(:entity) { :event_participation_entity }
it_behaves_like "a common validator"
it_behaves_like "a relayable validator"
describe "#status" do
it_behaves_like "a property with a value validation/restriction" do
let(:property) { :status }
let(:wrong_values) { ["", "yes", "foobar"] }
let(:correct_values) { %w(accepted declined tentative) }
end
end
end
end

View file

@ -0,0 +1,62 @@
module DiasporaFederation
describe Validators::EventValidator do
let(:entity) { :event_entity }
it_behaves_like "a common validator"
it_behaves_like "a diaspora* ID validator" do
let(:property) { :author }
let(:mandatory) { true }
end
it_behaves_like "a guid validator" do
let(:property) { :guid }
end
describe "#summary" do
it_behaves_like "a property with a value validation/restriction" do
let(:property) { :summary }
let(:wrong_values) { ["a" * 256, nil, ""] }
let(:correct_values) { ["a" * 255] }
end
end
describe "#description" do
it_behaves_like "a property with a value validation/restriction" do
let(:property) { :description }
let(:wrong_values) { ["a" * 65_536] }
let(:correct_values) { ["a" * 65_535, nil, ""] }
end
end
describe "#start" do
it_behaves_like "a property with a value validation/restriction" do
let(:property) { :start }
let(:wrong_values) { [nil] }
let(:correct_values) { [Time.now.utc] }
end
end
describe "#end" do
it_behaves_like "a property with a value validation/restriction" do
let(:property) { :end }
let(:wrong_values) { [] }
let(:correct_values) { [nil, Time.now.utc] }
end
end
describe "#all_day" do
it_behaves_like "a boolean validator" do
let(:property) { :all_day }
end
end
describe "#timezone" do
it_behaves_like "a property with a value validation/restriction" do
let(:property) { :timezone }
let(:wrong_values) { ["foobar"] }
let(:correct_values) { [nil, "Europe/Berlin", "America/Argentina/ComodRivadavia"] }
end
end
end
end