4ba83e6834
Restored JobArgs approach. Previous introduction of hierarchic argument definitions has backfired: it was confusing what class to take arguments from, the concept of sharing arguments between different jobs was unintelligible and one never knew where given argument was actually defined. This appraoch makes it easier to maintain the arguments list and simplifies the code a lot.
111 lines
2.5 KiB
PHP
111 lines
2.5 KiB
PHP
<?php
|
|
class PreviewCommentJobTest extends AbstractTest
|
|
{
|
|
public function testPreview()
|
|
{
|
|
$this->prepare();
|
|
|
|
$text = 'alohaaaaaaa';
|
|
$comment = $this->assert->doesNotThrow(function() use ($text)
|
|
{
|
|
return $this->runApi($text);
|
|
});
|
|
|
|
$this->assert->areEqual(0, CommentModel::getCount());
|
|
$this->assert->areEqual($text, $comment->getText());
|
|
$this->assert->areEqual(Auth::getCurrentUser()->getId(), $comment->getCommenter()->getId());
|
|
$this->assert->isNotNull($comment->getCreationTime());
|
|
$this->assert->throws(function() use ($comment)
|
|
{
|
|
CommentModel::getById($comment->getId());
|
|
}, 'Invalid comment ID');
|
|
}
|
|
|
|
public function testAlmostTooShortText()
|
|
{
|
|
$this->prepare();
|
|
$this->assert->doesNotThrow(function()
|
|
{
|
|
return $this->runApi(str_repeat('b', getConfig()->comments->minLength));
|
|
});
|
|
}
|
|
|
|
public function testAlmostTooLongText()
|
|
{
|
|
$this->prepare();
|
|
$this->assert->doesNotThrow(function()
|
|
{
|
|
return $this->runApi(str_repeat('b', getConfig()->comments->maxLength));
|
|
});
|
|
}
|
|
|
|
public function testTooShortText()
|
|
{
|
|
$this->prepare();
|
|
$this->assert->throws(function()
|
|
{
|
|
return $this->runApi(str_repeat('b', getConfig()->comments->minLength - 1));
|
|
}, 'Comment must have at least');
|
|
}
|
|
|
|
public function testTooLongText()
|
|
{
|
|
$this->prepare();
|
|
$this->assert->throws(function()
|
|
{
|
|
return $this->runApi(str_repeat('b', getConfig()->comments->maxLength + 1));
|
|
}, 'Comment must have at most');
|
|
}
|
|
|
|
public function testViaPost()
|
|
{
|
|
$this->prepare();
|
|
$post = $this->mockPost(Auth::getCurrentUser());
|
|
|
|
$this->assert->doesNotThrow(function() use ($post)
|
|
{
|
|
Api::run(
|
|
new PreviewCommentJob(),
|
|
[
|
|
JobArgs::ARG_POST_ID => $post->getId(),
|
|
JobArgs::ARG_NEW_TEXT => 'alohaaa',
|
|
]);
|
|
});
|
|
}
|
|
|
|
public function testViaComment()
|
|
{
|
|
$this->prepare();
|
|
$comment = $this->mockComment(Auth::getCurrentUser());
|
|
|
|
$this->assert->doesNotThrow(function() use ($comment)
|
|
{
|
|
Api::run(
|
|
new PreviewCommentJob(),
|
|
[
|
|
JobArgs::ARG_COMMENT_ID => $comment->getId(),
|
|
JobArgs::ARG_NEW_TEXT => 'alohaaa',
|
|
]);
|
|
});
|
|
}
|
|
|
|
|
|
protected function runApi($text)
|
|
{
|
|
$post = $this->mockPost(Auth::getCurrentUser());
|
|
|
|
return Api::run(
|
|
new PreviewCommentJob(),
|
|
[
|
|
JobArgs::ARG_POST_ID => $post->getId(),
|
|
JobArgs::ARG_NEW_TEXT => $text,
|
|
]);
|
|
}
|
|
|
|
protected function prepare()
|
|
{
|
|
getConfig()->registration->needEmailForCommenting = false;
|
|
$this->grantAccess('addComment');
|
|
$this->login($this->mockUser());
|
|
}
|
|
}
|