[ticket/11896] Add ability to define expected message after posting

This change will add the ability to define the expected message after a
topic or post has been submitted with the methods create_post() and
create_topic(). If the expected message is not 'POST_STORED', we will not
try to get the topic and post id.

PHPBB3-11896
This commit is contained in:
Marc Alexander 2013-11-09 20:33:01 +01:00
parent 252b5fe4f7
commit 29d3b08d50

View file

@ -868,9 +868,10 @@ class phpbb_functional_test_case extends phpbb_test_case
* @param string $subject
* @param string $message
* @param array $additional_form_data Any additional form data to be sent in the request
* @param string $expected Lang var of expected message after posting
* @return array post_id, topic_id
*/
public function create_topic($forum_id, $subject, $message, $additional_form_data = array())
public function create_topic($forum_id, $subject, $message, $additional_form_data = array(), $expected = '')
{
$posting_url = "posting.php?mode=post&f={$forum_id}&sid={$this->sid}";
@ -880,8 +881,15 @@ class phpbb_functional_test_case extends phpbb_test_case
'post' => true,
), $additional_form_data);
if ($expected !== '')
{
return self::submit_post($posting_url, 'POST_TOPIC', $form_data, $expected);
}
else
{
return self::submit_post($posting_url, 'POST_TOPIC', $form_data);
}
}
/**
* Creates a post
@ -893,9 +901,10 @@ class phpbb_functional_test_case extends phpbb_test_case
* @param string $subject
* @param string $message
* @param array $additional_form_data Any additional form data to be sent in the request
* @param string $expected Lang var of expected message after posting
* @return array post_id, topic_id
*/
public function create_post($forum_id, $topic_id, $subject, $message, $additional_form_data = array())
public function create_post($forum_id, $topic_id, $subject, $message, $additional_form_data = array(), $expected = '')
{
$posting_url = "posting.php?mode=reply&f={$forum_id}&t={$topic_id}&sid={$this->sid}";
@ -905,8 +914,15 @@ class phpbb_functional_test_case extends phpbb_test_case
'post' => true,
), $additional_form_data);
if ($expected !== '')
{
return self::submit_post($posting_url, 'POST_REPLY', $form_data, $expected);
}
else
{
return self::submit_post($posting_url, 'POST_REPLY', $form_data);
}
}
/**
* Helper for submitting posts
@ -914,9 +930,10 @@ class phpbb_functional_test_case extends phpbb_test_case
* @param string $posting_url
* @param string $posting_contains
* @param array $form_data
* @return array post_id, topic_id
* @param string $expected Lang var of expected message after posting
* @return array|null post_id, topic_id if message is 'POST_STORED'
*/
protected function submit_post($posting_url, $posting_contains, $form_data)
protected function submit_post($posting_url, $posting_contains, $form_data, $expected = 'POST_STORED')
{
$this->add_lang('posting');
@ -945,7 +962,12 @@ class phpbb_functional_test_case extends phpbb_test_case
// contained in one of the actual form fields that the browser sees (i.e. it ignores "hidden" inputs)
// Instead, I send it as a request with the submit button "post" set to true.
$crawler = self::request('POST', $posting_url, $form_data);
$this->assertContains($this->lang('POST_STORED'), $crawler->filter('html')->text());
$this->assertContains($this->lang($expected), $crawler->filter('html')->text());
if ($expected !== 'POST_STORED')
{
return;
}
$url = $crawler->selectLink($this->lang('VIEW_MESSAGE', '', ''))->link()->getUri();
return array(