ScoringGuide Test

This commit is contained in:
Matt Young 2024-07-01 12:47:38 -05:00
parent 218d7bc142
commit 1b37aa65c3
3 changed files with 69 additions and 3 deletions

View File

@ -2,6 +2,7 @@
namespace Database\Factories;
use App\Models\ScoringGuide;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
@ -16,8 +17,45 @@ class SubscoreDefinitionFactory extends Factory
*/
public function definition(): array
{
$sg = ScoringGuide::factory()->create();
return [
//
'scoring_guide_id' => $sg->id,
'name' => $this->faker->word,
'max_score' => 100,
'weight' => $this->faker->numberBetween(1, 4),
'display_order' => $this->faker->numberBetween(1, 20),
'tiebreak_order' => $this->faker->numberBetween(1, 20),
'for_seating' => 1,
'for_advance' => 1,
];
}
public function seatingOnly(): self
{
return $this->state(
fn (array $attributes) => ['for_advance' => 0]
);
}
public function advanceOnly(): self
{
return $this->state(
fn (array $attributes) => ['for_seating' => 0]
);
}
public function displayFirst(): self
{
return $this->state(
fn (array $attributes) => ['display_order' => 0]
);
}
public function tiebreakFirst(): self
{
return $this->state(
fn (array $attributes) => ['tiebreak_order' => 0]
);
}
}

View File

@ -69,8 +69,7 @@ it('has entries', function () {
}
// Act & Assert
expect($school->entries->count())->toBe(9)
->and($school->entries->first())->toBeInstanceOf(Entry::class)
->and($school->entries->first()->student->first_name)->toBe($student->first_name);
->and($school->entries->first())->toBeInstanceOf(Entry::class);
// Assert
});

View File

@ -0,0 +1,29 @@
<?php
use App\Models\Audition;
use App\Models\ScoringGuide;
use App\Models\SubscoreDefinition;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
it('has auditions in score order', function () {
// Arrange
$scoringGuide = ScoringGuide::factory()->create();
Audition::factory()->count(5)->create(['scoring_guide_id' => $scoringGuide->id]);
$audition = Audition::factory()->create(['scoring_guide_id' => $scoringGuide->id, 'score_order' => 0]);
// Act & Assert
expect($scoringGuide->auditions->count())->toBe(6)
->and($scoringGuide->auditions->first()->id)->toBe($audition->id)
->and($scoringGuide->auditions->first())->toBeInstanceOf(Audition::class);
});
it('has subscores', function () {
// Arrange
$sg = ScoringGuide::factory()->create();
SubscoreDefinition::factory()->count(5)->create(['scoring_guide_id' => $sg->id]);
// Act & Assert
expect($sg->subscores->count())->toBe(5)
->and($sg->subscores->first())->toBeInstanceOf(SubscoreDefinition::class);
});