Slide 15
Slide 15 text
class Entities::Task
attr_accessor :id, :title, :description
attr_reader :status, :author_id, :project_id, :subtasks
def initialize(title:, description: nil, project_id:, author_id:)
Utils::ArgsValidator.not_blank!(title, :title)
Utils::ArgsValidator.not_nil!(project_id, :project_id)
Utils::ArgsValidator.not_nil!(author_id, :author_id)
@title, @description, @project_id, @author_id, @subtasks = title, description, project_id, author_id, []
end
def change_status(new_status)
raise Common::Errors::InvalidParameter, "status can't be set to '#{new_status}'" unless @status.allowed_next_status?(new_status)
@status = new_status
end
def title=(title)
Utils::ArgsValidator.not_blank!(title, :title)
@title = title
end
def id=(id)
Utils::ArgsValidator.immutable!(@id, id, :id)
@id = id
end
def build_subtask(title:)
Entities::Subtask.new(title: title).tap do |subtask|
subtasks << subtask
end
endend