type = "album"; $album->parent_id = $parent ? $parent->id : 1; $album->name = "name_$rand"; $album->title = "title_$rand"; return $album; } static function random_album($parent=null) { return test::random_album_unsaved($parent)->save()->reload(); } static function random_movie_unsaved($parent=null) { $rand = test::random_string(6); $photo = ORM::factory("item"); $photo->type = "movie"; $photo->parent_id = $parent ? $parent->id : 1; $photo->set_data_file(MODPATH . "gallery/tests/test.flv"); $photo->name = "name_$rand.flv"; $photo->title = "title_$rand"; return $photo; } static function random_movie($parent=null) { return test::random_movie_unsaved($parent)->save()->reload(); } static function random_photo_unsaved($parent=null) { $rand = test::random_string(6); $photo = ORM::factory("item"); $photo->type = "photo"; $photo->parent_id = $parent ? $parent->id : 1; $photo->set_data_file(MODPATH . "gallery/tests/test.jpg"); $photo->name = "name_$rand.jpg"; $photo->title = "title_$rand"; return $photo; } static function random_photo($parent=null) { return test::random_photo_unsaved($parent)->save()->reload(); } static function random_user($password="password") { $rand = "name_" . test::random_string(6); return identity::create_user($rand, $rand, $password, "$rand@rand.com"); } static function random_group() { return identity::create_group(test::random_string(6)); } static function random_name($item=null) { $rand = "name_" . test::random_string(6); if ($item && $item->is_photo()) { $rand .= ".jpg"; } return $rand; } static function starts_with($outer, $inner) { return strpos($outer, $inner) === 0; } static function call_and_capture($callback) { ob_start(); call_user_func($callback); return ob_get_clean(); } static function random_tag() { $tag = ORM::factory("tag"); $tag->name = test::lorem_ipsum(rand(2, 4)); // Reload so that ORM coerces all fields into strings. return $tag->save()->reload(); } static function diff($a, $b) { fwrite(fopen($a_name = tempnam("/tmp", "test"), "w"), $a); fwrite(fopen($b_name = tempnam("/tmp", "test"), "w"), $b); return `diff $a_name $b_name`; } static function random_string($length) { $buf = ""; do { $buf .= random::hash(); } while (strlen($buf) < $length); return substr($buf, 0, $length); } static function lorem_ipsum($num) { static $lorem_ipsum = null; if (!$lorem_ipsum) { require_once(MODPATH . "gallery_unit_test/vendor/LoremIpsum.class.php"); $lorem_ipsum = new LoremIpsumGenerator(); } // skip past initial 'lorem ipsum' return substr($lorem_ipsum->getContent($num + 2, "txt"), 13); } }