Add validators for events
This commit is contained in:
parent
1097130988
commit
fd34472647
5 changed files with 114 additions and 0 deletions
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
21
lib/diaspora_federation/validators/event_validator.rb
Normal file
21
lib/diaspora_federation/validators/event_validator.rb
Normal 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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
Loading…
Reference in a new issue