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.
122 lines
2.6 KiB
PHP
122 lines
2.6 KiB
PHP
<?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(),
|
|
[
|
|
JobArgs::ARG_POST_ID => $post->getId(),
|
|
JobArgs::ARG_NEW_POST_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(),
|
|
[
|
|
JobArgs::ARG_POST_ID => $post->getId(),
|
|
JobArgs::ARG_NEW_POST_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(),
|
|
[
|
|
JobArgs::ARG_POST_ID => $post->getId(),
|
|
JobArgs::ARG_NEW_POST_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(),
|
|
[
|
|
JobArgs::ARG_POST_ID => $post->getId(),
|
|
JobArgs::ARG_NEW_POST_SCORE => -1,
|
|
]);
|
|
});
|
|
|
|
$post = $this->assert->doesNotThrow(function() use ($post)
|
|
{
|
|
return Api::run(
|
|
new ScorePostJob(),
|
|
[
|
|
JobArgs::ARG_POST_ID => $post->getId(),
|
|
JobArgs::ARG_NEW_POST_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(),
|
|
[
|
|
JobArgs::ARG_POST_ID => $post->getId(),
|
|
JobArgs::ARG_NEW_POST_SCORE => 1,
|
|
]);
|
|
});
|
|
|
|
$this->login($this->mockUser());
|
|
|
|
$post = $this->assert->doesNotThrow(function() use ($post)
|
|
{
|
|
return Api::run(
|
|
new ScorePostJob(),
|
|
[
|
|
JobArgs::ARG_POST_ID => $post->getId(),
|
|
JobArgs::ARG_NEW_POST_SCORE => 1,
|
|
]);
|
|
});
|
|
|
|
$this->assert->areEqual(2, $post->getScore());
|
|
}
|
|
}
|