Fixed post score validation
This commit is contained in:
parent
343268d029
commit
39f49fc539
2 changed files with 124 additions and 0 deletions
|
@ -144,6 +144,8 @@ final class UserModel extends AbstractCrudModel
|
||||||
->add(new Sql\EqualsFunctor('user_id', new Sql\Binding($user->getId()))));
|
->add(new Sql\EqualsFunctor('user_id', new Sql\Binding($user->getId()))));
|
||||||
Database::exec($stmt);
|
Database::exec($stmt);
|
||||||
$score = intval($score);
|
$score = intval($score);
|
||||||
|
if (abs($score) > 1)
|
||||||
|
throw new SimpleException('Invalid score');
|
||||||
if ($score != 0)
|
if ($score != 0)
|
||||||
{
|
{
|
||||||
$stmt = new Sql\InsertStatement();
|
$stmt = new Sql\InsertStatement();
|
||||||
|
|
122
tests/JobTests/ScorePostJobTest.php
Normal file
122
tests/JobTests/ScorePostJobTest.php
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
<?php
|
||||||
|
class ScorePostJobTest extends AbstractTest
|
||||||
|
{
|
||||||
|
public function testScoring()
|
||||||
|
{
|
||||||
|
$this->grantAccess('scorePost');
|
||||||
|
$this->login($this->mockUser());
|
||||||
|
$post = $this->mockPost(Auth::getCurrentUser());
|
||||||
|
|
||||||
|
$this->assert->areEqual(0, $post->getScore());
|
||||||
|
|
||||||
|
$post = $this->assert->doesNotThrow(function() use ($post)
|
||||||
|
{
|
||||||
|
return Api::run(
|
||||||
|
new ScorePostJob(),
|
||||||
|
[
|
||||||
|
ScorePostJob::POST_ID => $post->getId(),
|
||||||
|
ScorePostJob::SCORE => 1,
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->assert->areEqual(1, $post->getScore());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testNegativeScore()
|
||||||
|
{
|
||||||
|
$this->grantAccess('scorePost');
|
||||||
|
$this->login($this->mockUser());
|
||||||
|
$post = $this->mockPost(Auth::getCurrentUser());
|
||||||
|
|
||||||
|
$post = $this->assert->doesNotThrow(function() use ($post)
|
||||||
|
{
|
||||||
|
return Api::run(
|
||||||
|
new ScorePostJob(),
|
||||||
|
[
|
||||||
|
ScorePostJob::POST_ID => $post->getId(),
|
||||||
|
ScorePostJob::SCORE => -1,
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->assert->areEqual(-1, $post->getScore());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testInvalidScore()
|
||||||
|
{
|
||||||
|
$this->grantAccess('scorePost');
|
||||||
|
$this->login($this->mockUser());
|
||||||
|
$post = $this->mockPost(Auth::getCurrentUser());
|
||||||
|
|
||||||
|
$this->assert->throws(function() use ($post)
|
||||||
|
{
|
||||||
|
Api::run(
|
||||||
|
new ScorePostJob(),
|
||||||
|
[
|
||||||
|
ScorePostJob::POST_ID => $post->getId(),
|
||||||
|
ScorePostJob::SCORE => 2,
|
||||||
|
]);
|
||||||
|
}, 'Invalid score');
|
||||||
|
|
||||||
|
$this->assert->areEqual(0, $post->getScore());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testScoreOverwriting()
|
||||||
|
{
|
||||||
|
$this->grantAccess('scorePost');
|
||||||
|
$this->login($this->mockUser());
|
||||||
|
$post = $this->mockPost(Auth::getCurrentUser());
|
||||||
|
|
||||||
|
$post = $this->assert->doesNotThrow(function() use ($post)
|
||||||
|
{
|
||||||
|
return Api::run(
|
||||||
|
new ScorePostJob(),
|
||||||
|
[
|
||||||
|
ScorePostJob::POST_ID => $post->getId(),
|
||||||
|
ScorePostJob::SCORE => -1,
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
$post = $this->assert->doesNotThrow(function() use ($post)
|
||||||
|
{
|
||||||
|
return Api::run(
|
||||||
|
new ScorePostJob(),
|
||||||
|
[
|
||||||
|
ScorePostJob::POST_ID => $post->getId(),
|
||||||
|
ScorePostJob::SCORE => 1,
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->assert->areEqual(1, $post->getScore());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testScoreTwoPeople()
|
||||||
|
{
|
||||||
|
$this->grantAccess('scorePost');
|
||||||
|
$this->login($this->mockUser());
|
||||||
|
$post = $this->mockPost(Auth::getCurrentUser());
|
||||||
|
|
||||||
|
$post = $this->assert->doesNotThrow(function() use ($post)
|
||||||
|
{
|
||||||
|
return Api::run(
|
||||||
|
new ScorePostJob(),
|
||||||
|
[
|
||||||
|
ScorePostJob::POST_ID => $post->getId(),
|
||||||
|
ScorePostJob::SCORE => 1,
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->login($this->mockUser());
|
||||||
|
|
||||||
|
$post = $this->assert->doesNotThrow(function() use ($post)
|
||||||
|
{
|
||||||
|
return Api::run(
|
||||||
|
new ScorePostJob(),
|
||||||
|
[
|
||||||
|
ScorePostJob::POST_ID => $post->getId(),
|
||||||
|
ScorePostJob::SCORE => 1,
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->assert->areEqual(2, $post->getScore());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue