Questions: Moved user tests to user and fixed attribute names, added @covers
This commit is contained in:
parent
8fc159f287
commit
d6cb9c6258
|
@ -33,8 +33,8 @@ function user_questions()
|
|||
$question = request()->get('question');
|
||||
if (!empty($question) && $request->hasPostData('submit')) {
|
||||
Question::create([
|
||||
'enquirer_id' => $user->id,
|
||||
'question' => $question,
|
||||
'user_id' => $user->id,
|
||||
'text' => $question,
|
||||
]);
|
||||
|
||||
success(__('You question was saved.'));
|
||||
|
|
|
@ -52,22 +52,9 @@ class QuestionTest extends TestCase
|
|||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @covers \Engelsystem\Models\Question::answerer
|
||||
*/
|
||||
public function testStoreLoadUnAnsweredQuestion(): void
|
||||
{
|
||||
$question = $this->createQuestion($this->user1);
|
||||
$loadedQuestion = Question::find($question->id);
|
||||
|
||||
$this->assertSame($this->user1->id, $loadedQuestion->user->id);
|
||||
$this->assertSame($this->user1->id, $loadedQuestion->user_id);
|
||||
$this->assertSame($question->text, $loadedQuestion->text);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function testStoreLoadAnsweredQuestion(): void
|
||||
public function testAnswerer(): void
|
||||
{
|
||||
$question = $this->createQuestion($this->user1, $this->user2);
|
||||
$loadedQuestion = Question::find($question->id);
|
||||
|
@ -81,41 +68,7 @@ class QuestionTest extends TestCase
|
|||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function testUserQuestionsAsked(): void
|
||||
{
|
||||
$question1 = $this->createQuestion($this->user1);
|
||||
$question2 = $this->createQuestion($this->user1);
|
||||
// create some questions asked by user 2 to test the correct assignment
|
||||
$this->createQuestion($this->user2);
|
||||
$this->createQuestion($this->user2);
|
||||
|
||||
$user1QuestionIds = $this->user1->questionsAsked()->pluck('id')->toArray();
|
||||
$this->assertCount(2, $user1QuestionIds);
|
||||
$this->assertContains($question1->id, $user1QuestionIds);
|
||||
$this->assertContains($question2->id, $user1QuestionIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function testUserQuestionsAnswered(): void
|
||||
{
|
||||
$question1 = $this->createQuestion($this->user1, $this->user2);
|
||||
$question2 = $this->createQuestion($this->user1, $this->user2);
|
||||
// create some questions answered by user 1 to test the correct assignment
|
||||
$this->createQuestion($this->user2, $this->user1);
|
||||
$this->createQuestion($this->user2, $this->user1);
|
||||
|
||||
$user2Answers = $this->user2->questionsAnswered()->pluck('id')->toArray();
|
||||
$this->assertCount(2, $user2Answers);
|
||||
$this->assertContains($question1->id, $user2Answers);
|
||||
$this->assertContains($question2->id, $user2Answers);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @covers \Engelsystem\Models\Question::unanswered
|
||||
*/
|
||||
public function testUnanswered(): void
|
||||
{
|
||||
|
@ -132,7 +85,7 @@ class QuestionTest extends TestCase
|
|||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @covers \Engelsystem\Models\Question::answered
|
||||
*/
|
||||
public function testAnswered(): void
|
||||
{
|
||||
|
@ -149,14 +102,14 @@ class QuestionTest extends TestCase
|
|||
}
|
||||
|
||||
/**
|
||||
* @param User $enquirer
|
||||
* @param User $user
|
||||
* @param User|null $answerer
|
||||
* @return Question
|
||||
*/
|
||||
private function createQuestion(User $enquirer, ?User $answerer = null): Question
|
||||
private function createQuestion(User $user, ?User $answerer = null): Question
|
||||
{
|
||||
$data = [
|
||||
'user_id' => $enquirer->id,
|
||||
'user_id' => $user->id,
|
||||
'text' => Str::random(),
|
||||
];
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ namespace Engelsystem\Test\Unit\Models;
|
|||
use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts;
|
||||
use Engelsystem\Models\BaseModel;
|
||||
use Engelsystem\Models\News;
|
||||
use Engelsystem\Models\Question;
|
||||
use Engelsystem\Models\User\Contact;
|
||||
use Engelsystem\Models\User\HasUserModel;
|
||||
use Engelsystem\Models\User\PersonalData;
|
||||
|
@ -14,6 +15,7 @@ use Engelsystem\Models\User\User;
|
|||
use Engelsystem\Test\Unit\HasDatabase;
|
||||
use Engelsystem\Test\Unit\TestCase;
|
||||
use Exception;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class UserTest extends TestCase
|
||||
{
|
||||
|
@ -146,6 +148,49 @@ class UserTest extends TestCase
|
|||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \Engelsystem\Models\User\User::questionsAsked
|
||||
*/
|
||||
public function testQuestionsAsked(): void
|
||||
{
|
||||
($user = new User($this->data))->save();
|
||||
($user2 = new User(array_merge($this->data, ['name' => 'dolor', 'email' => 'dolor@bar.batz'])))->save();
|
||||
|
||||
($question1 = new Question(['user_id' => $user->id, 'text' => Str::random()]))->save();
|
||||
($question2 = new Question(['user_id' => $user->id, 'text' => Str::random()]))->save();
|
||||
// create some questions asked by user 2 to test the correct assignment
|
||||
(new Question(['user_id' => $user2->id, 'text' => Str::random()]))->save();
|
||||
(new Question(['user_id' => $user2->id, 'text' => Str::random()]))->save();
|
||||
|
||||
$questionIds = $user->questionsAsked()->pluck('id')->toArray();
|
||||
$this->assertCount(2, $questionIds);
|
||||
$this->assertContains($question1->id, $questionIds);
|
||||
$this->assertContains($question2->id, $questionIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \Engelsystem\Models\User\User::questionsAnswered
|
||||
*/
|
||||
public function testQuestionsAnswered(): void
|
||||
{
|
||||
($user = new User($this->data))->save();
|
||||
($user2 = new User(array_merge($this->data, ['name' => 'dolor', 'email' => 'dolor@bar.batz'])))->save();
|
||||
|
||||
$questionData = ['user_id' => $user->id, 'text' => Str::random()];
|
||||
$answerData = ['answerer_id' => $user2->id, 'answer' => Str::random()];
|
||||
($question1 = new Question(array_merge($questionData, $answerData)))->save();
|
||||
($question2 = new Question(array_merge($questionData, $answerData)))->save();
|
||||
// Create some questions asked by user 2 to test the correct assignment
|
||||
(new Question(array_merge($questionData, $answerData, ['answerer_id' => $user->id])))->save();
|
||||
(new Question($questionData))->save();
|
||||
(new Question($questionData))->save();
|
||||
|
||||
$answers = $user2->questionsAnswered()->pluck('id')->toArray();
|
||||
$this->assertCount(2, $answers);
|
||||
$this->assertContains($question1->id, $answers);
|
||||
$this->assertContains($question2->id, $answers);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare test
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue