diff options
Diffstat (limited to 'tests/functional/posting_test.php')
| -rw-r--r-- | tests/functional/posting_test.php | 81 | 
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/functional/posting_test.php b/tests/functional/posting_test.php index fd802eed45..33632a01e1 100644 --- a/tests/functional/posting_test.php +++ b/tests/functional/posting_test.php @@ -59,4 +59,85 @@ class phpbb_functional_posting_test extends phpbb_functional_test_case  			'Your subject contains the following unsupported characters'  		);  	} + +	/** +	* @testdox max_quote_depth is applied to the text populating the posting form +	*/ +	public function test_quote_depth_form() +	{ +		$text = '0[quote]1[quote]2[/quote]1[/quote]0'; +		$expected = array( +			0 => '[quote="admin"]0[quote]1[quote]2[/quote]1[/quote]0[/quote]', +			1 => '[quote="admin"]00[/quote]', +			2 => '[quote="admin"]0[quote]11[/quote]0[/quote]', +			3 => '[quote="admin"]0[quote]1[quote]2[/quote]1[/quote]0[/quote]', +		); + +		$this->login(); +		$topic = $this->create_topic(2, 'Test Topic 1', 'Test topic'); +		$post  = $this->create_post(2, $topic['topic_id'], 'Re: Test Topic 1', $text); +		$quote_url = "posting.php?mode=quote&f=2&t={$post['topic_id']}&p={$post['post_id']}&sid={$this->sid}"; + +		$this->admin_login(); +		foreach ($expected as $quote_depth => $expected_text) +		{ +			$this->set_quote_depth($quote_depth); +			$crawler = self::request('GET', $quote_url); +			$this->assertContains($expected_text, $crawler->filter('textarea#message')->text()); +		} +	} + +	/** +	* @testdox max_quote_depth is applied to the submitted text +	*/ +	public function test_quote_depth_submit() +	{ +		$text = 'depth:0[quote]depth:1[quote]depth:2[quote]depth:3[/quote][/quote][/quote]'; +		$contains = array( +			0 => array('depth:0', 'depth:1', 'depth:2', 'depth:3'), +			1 => array('depth:0', 'depth:1'), +			2 => array('depth:0', 'depth:1', 'depth:2'), +			3 => array('depth:0', 'depth:1', 'depth:2', 'depth:3'), +		); +		$not_contains = array( +			0 => array(), +			1 => array('depth:2', 'depth:3'), +			2 => array('depth:3'), +			3 => array(), +		); + +		$this->login(); +		$this->admin_login(); +		$topic = $this->create_topic(2, 'Test Topic 1', 'Test topic'); + +		for ($quote_depth = 0; $quote_depth <= 2; ++$quote_depth) +		{ +			$this->set_quote_depth($quote_depth); + +			$post = $this->create_post(2, $topic['topic_id'], 'Re: Test Topic 1', $text); +			$url  = "viewtopic.php?p={$post['post_id']}&sid={$this->sid}"; + +			$crawler = self::request('GET', $url); +			$text_content = $crawler->filter('#p' . $post['post_id'])->text(); +			foreach ($contains[$quote_depth] as $contains_text) +			{ +				$this->assertContains($contains_text, $text_content); +			} +			foreach ($not_contains[$quote_depth] as $not_contains_text) +			{ +				$this->assertNotContains($not_contains_text, $text_content); +			} +		} +	} + +	protected function set_quote_depth($depth) +	{ +		$crawler = self::request('GET', 'adm/index.php?sid=' . $this->sid . '&i=acp_board&mode=post'); +		$form = $crawler->selectButton('Submit')->form(); +		$values = $form->getValues(); +		$values['config[max_quote_depth]'] = $depth; +		$form->setValues($values); +		$crawler = self::submit($form); +		$this->assertEquals(1, $crawler->filter('.successbox')->count()); +	}  }  | 
