/** * Factory for loading minion tasks * * @throws Kohana_Exception * @param string The task to load * @return Minion_Task The Minion task */ public static function factory($task) { if (!is_string($task)) { throw new InvalidArgumentException(); } $class = Minion_Util::convert_task_to_class_name($task); if (!in_array('Minion_Task', class_parents($class))) { throw new Kohana_Exception("Task ':task' is not a valid minion task", array(':task' => get_class($task))); } return new $class(); }
/** * Tests that a task can be converted to a class name * * @test * @covers Minion_Util::convert_task_to_class_name * @dataProvider provider_convert_task_to_class_name * @param string Expected class name * @param string Input task name */ public function test_convert_task_to_class_name($expected, $task_name) { $this->assertSame($expected, Minion_Util::convert_task_to_class_name($task_name)); }