|
|
|
@ -1,15 +1,16 @@
|
|
|
|
|
require_relative 'contact'
|
|
|
|
|
|
|
|
|
|
class Person
|
|
|
|
|
attr_accessor :id, :git
|
|
|
|
|
attr_reader :contact
|
|
|
|
|
attr_reader :id, :git, :contact
|
|
|
|
|
|
|
|
|
|
def initialize(id:, git:, contact: Contact.new)
|
|
|
|
|
validate_id(id)
|
|
|
|
|
validate_git(git)
|
|
|
|
|
validate_contact(contact)
|
|
|
|
|
|
|
|
|
|
@id = id
|
|
|
|
|
@git = git
|
|
|
|
|
@contact = contact
|
|
|
|
|
|
|
|
|
|
validate_person
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def git_present?
|
|
|
|
@ -34,9 +35,17 @@ class Person
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
|
|
def validate_person
|
|
|
|
|
raise ArgumentError, 'ID is required and must be a non-empty string' unless self.class.valid_id?(@id)
|
|
|
|
|
raise ArgumentError, 'Git link is required' unless git_present?
|
|
|
|
|
raise ArgumentError, 'Invalid Git link format' unless self.class.valid_git?(@git)
|
|
|
|
|
def validate_id(id)
|
|
|
|
|
raise ArgumentError, 'ID is required and must be a non-empty string' unless self.class.valid_id?(id)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def validate_git(git)
|
|
|
|
|
raise ArgumentError, 'Git link is required' if git.nil? || git.strip.empty?
|
|
|
|
|
raise ArgumentError, 'Invalid Git link format' unless self.class.valid_git?(git)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def validate_contact(contact)
|
|
|
|
|
raise ArgumentError, 'Contact must be a valid Contact object' unless contact.is_a?(Contact)
|
|
|
|
|
raise ArgumentError, 'Contact must have at least one valid field' unless contact.present?
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|