diff options
| -rw-r--r-- | phpBB/phpbb/attachment/manager.php | 142 | ||||
| -rw-r--r-- | tests/attachment/manager_test.php | 69 | 
2 files changed, 140 insertions, 71 deletions
| diff --git a/phpBB/phpbb/attachment/manager.php b/phpBB/phpbb/attachment/manager.php index 0aeadf3e3e..414a8edfdd 100644 --- a/phpBB/phpbb/attachment/manager.php +++ b/phpBB/phpbb/attachment/manager.php @@ -18,82 +18,82 @@ namespace phpbb\attachment;   */  class manager  { -    /** @var delete Attachment delete class */ -    protected $delete; +	/** @var delete Attachment delete class */ +	protected $delete; -    /** @var resync Attachment resync class */ -    protected $resync; +	/** @var resync Attachment resync class */ +	protected $resync; -    /** @var upload Attachment upload class */ -    protected $upload; +	/** @var upload Attachment upload class */ +	protected $upload; -    /** -     * Constructor for attachment manager -     * -     * @param delete $delete Attachment delete class -     * @param resync $resync Attachment resync class -     * @param upload $upload Attachment upload class -     */ -    public function __construct(delete $delete, resync $resync, upload $upload) -    { -        $this->delete = $delete; -        $this->resync = $resync; -        $this->upload = $upload; -    } +	/** +	 * Constructor for attachment manager +	 * +	 * @param delete $delete Attachment delete class +	 * @param resync $resync Attachment resync class +	 * @param upload $upload Attachment upload class +	 */ +	public function __construct(delete $delete, resync $resync, upload $upload) +	{ +		$this->delete = $delete; +		$this->resync = $resync; +		$this->upload = $upload; +	} -    /** -     * Wrapper method for deleting attachments -     * -     * @param string $mode can be: post|message|topic|attach|user -     * @param mixed $ids can be: post_ids, message_ids, topic_ids, attach_ids, user_ids -     * @param bool $resync set this to false if you are deleting posts or topics -     * -     * @return int|bool Number of deleted attachments or false if something -     *			went wrong during attachment deletion -     */ -    public function delete($mode, $id, $resync = true) -    { -        $this->delete->delete($mode, $id, $resync); -    } +	/** +	 * Wrapper method for deleting attachments +	 * +	 * @param string $mode can be: post|message|topic|attach|user +	 * @param mixed $ids can be: post_ids, message_ids, topic_ids, attach_ids, user_ids +	 * @param bool $resync set this to false if you are deleting posts or topics +	 * +	 * @return int|bool Number of deleted attachments or false if something +	 *			went wrong during attachment deletion +	 */ +	public function delete($mode, $id, $resync = true) +	{ +		return $this->delete->delete($mode, $id, $resync); +	} -    /** -     * Wrapper method for deleting attachments from filesystem -     * -     * @param string $filename Filename of attachment -     * @param string $mode Delete mode -     * @param bool $entry_removed Whether entry was removed. Defaults to false -     * @return bool True if file was removed, false if not -     */ -    public function unlink($filename, $mode = 'file', $entry_removed = false) -    { -        $this->delete->unlink_attachment($filename, $mode, $entry_removed); -    } +	/** +	 * Wrapper method for deleting attachments from filesystem +	 * +	 * @param string $filename Filename of attachment +	 * @param string $mode Delete mode +	 * @param bool $entry_removed Whether entry was removed. Defaults to false +	 * @return bool True if file was removed, false if not +	 */ +	public function unlink($filename, $mode = 'file', $entry_removed = false) +	{ +		return $this->delete->unlink_attachment($filename, $mode, $entry_removed); +	} -    /** -     * Wrapper method for resyncing specified type -     * -     * @param string $type Type of resync -     * @param array $ids IDs to resync -     */ -    public function resync($type, $ids) -    { -        $this->resync->resync($type, $ids); -    } +	/** +	 * Wrapper method for resyncing specified type +	 * +	 * @param string $type Type of resync +	 * @param array $ids IDs to resync +	 */ +	public function resync($type, $ids) +	{ +		$this->resync->resync($type, $ids); +	} -    /** -     * Wrapper method for uploading attachment -     * -     * @param string			$form_name		The form name of the file upload input -     * @param int			$forum_id		The id of the forum -     * @param bool			$local			Whether the file is local or not -     * @param string			$local_storage	The path to the local file -     * @param bool			$is_message		Whether it is a PM or not -     * @param array		$local_filedata	An file data object created for the local file -     * -     * @return object filespec -     */ -    public function upload($form_name, $forum_id, $local = false, $local_storage = '', $is_message = false, $local_filedata = []) -    { -        $this->upload->upload($form_name, $forum_id, $local, $local_storage, $is_message, $local_filedata); -    } +	/** +	 * Wrapper method for uploading attachment +	 * +	 * @param string			$form_name		The form name of the file upload input +	 * @param int			$forum_id		The id of the forum +	 * @param bool			$local			Whether the file is local or not +	 * @param string			$local_storage	The path to the local file +	 * @param bool			$is_message		Whether it is a PM or not +	 * @param array		$local_filedata	An file data object created for the local file +	 * +	 * @return object filespec +	 */ +	public function upload($form_name, $forum_id, $local = false, $local_storage = '', $is_message = false, $local_filedata = []) +	{ +		return $this->upload->upload($form_name, $forum_id, $local, $local_storage, $is_message, $local_filedata); +	}  } diff --git a/tests/attachment/manager_test.php b/tests/attachment/manager_test.php new file mode 100644 index 0000000000..f71ccfbb6c --- /dev/null +++ b/tests/attachment/manager_test.php @@ -0,0 +1,69 @@ +<?php +/** + * + * This file is part of the phpBB Forum Software package. + * + * @copyright (c) phpBB Limited <https://www.phpbb.com> + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +class phpbb_attachment_manager_test extends \phpbb_test_case +{ +	protected $delete; +	protected $resync; +	protected $upload; + +	public function setUp() +	{ +		$this->delete = $this->getMockBuilder('\phpbb\attachment\delete') +			->disableOriginalConstructor() +			->setMethods(['delete', 'unlink']) +			->getMock(); +		$this->resync = $this->getMockBuilder('\phpbb\attachment\resync') +			->disableOriginalConstructor() +			->setMethods(['resync']) +			->getMock(); +		$this->upload = $this->getMockBuilder('\phpbb\attachment\upload') +			->disableOriginalConstructor() +			->setMethods(['upload']) +			->getMock(); +	} + +	protected function get_manager() +	{ +		return new \phpbb\attachment\manager($this->delete, $this->resync, $this->upload); +	} + +	public function data_delete() +	{ +		return array( +			[ +				['foo', [1, 2, 3], false], +				['foo', [1, 2, 3], false], +				true, +			], +			[ +				['foo', [1, 2, 3], true], +				['foo', [1, 2, 3]], +				true, +			], +		); +	} + +	/** +	 * @dataProvider data_delete +	 */ +	public function test_delete($input, $input_manager, $output) +	{ +		$mock = $this->delete->expects($this->atLeastOnce()) +			->method('delete'); +		$mock = call_user_func_array([$mock, 'with'], $input); +		$mock->willReturn($output); +		$manager = $this->get_manager(); +		$this->assertSame($output, call_user_func_array([$manager, 'delete'], $input_manager)); +	} +} | 
