fix(ingestion): stop fabricating missing player positions
This commit is contained in:
@ -66,6 +66,14 @@ class ScoutingSearchViewsTests(TestCase):
|
||||
cls.player_wing.roles.add(cls.role_3d)
|
||||
cls.player_wing.specialties.add(cls.specialty_offball)
|
||||
|
||||
cls.player_unknown_position = Player.objects.create(
|
||||
full_name="No Position Prospect",
|
||||
birth_date=date(2001, 3, 3),
|
||||
position=None,
|
||||
height_cm=Decimal("180.00"),
|
||||
weight_kg=Decimal("88.00"),
|
||||
)
|
||||
|
||||
cls.ctx_pg_good = PlayerSeason.objects.create(
|
||||
player=cls.player_pg,
|
||||
season=cls.season_2025,
|
||||
@ -144,6 +152,24 @@ class ScoutingSearchViewsTests(TestCase):
|
||||
self.assertContains(response, self.player_pg.full_name)
|
||||
self.assertNotContains(response, self.player_wing.full_name)
|
||||
|
||||
def test_players_with_null_position_are_searchable_by_other_fields(self):
|
||||
response = self.client.get(
|
||||
reverse("scouting:player_list"),
|
||||
{"name": "No Position"},
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, self.player_unknown_position.full_name)
|
||||
|
||||
def test_position_filter_excludes_players_with_null_position(self):
|
||||
response = self.client.get(
|
||||
reverse("scouting:player_list"),
|
||||
{"position": "SG"},
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertNotContains(response, self.player_unknown_position.full_name)
|
||||
|
||||
def test_filter_by_wingspan_thresholds(self):
|
||||
response = self.client.get(
|
||||
reverse("scouting:player_list"),
|
||||
@ -550,6 +576,23 @@ class FirstPublicEuropeanImporterTests(TestCase):
|
||||
self.assertTrue(PlayerSeason.objects.filter(player__full_name="Muhammad-Ali Abdur-Rahkman").exists())
|
||||
self.assertTrue(PlayerSeasonStats.objects.filter(player_season__player__full_name="Muhammad-Ali Abdur-Rahkman").exists())
|
||||
|
||||
def test_importer_does_not_assign_fake_position_when_source_position_is_missing(self):
|
||||
self.run_import()
|
||||
|
||||
player = Player.objects.get(full_name="Muhammad-Ali Abdur-Rahkman")
|
||||
self.assertIsNone(player.position)
|
||||
|
||||
def test_importer_preserves_existing_real_position_when_source_position_is_missing(self):
|
||||
self.run_import()
|
||||
player = Player.objects.get(full_name="Muhammad-Ali Abdur-Rahkman")
|
||||
player.position = Player.Position.PG
|
||||
player.save(update_fields=["position", "updated_at"])
|
||||
|
||||
self.run_import()
|
||||
player.refresh_from_db()
|
||||
|
||||
self.assertEqual(player.position, Player.Position.PG)
|
||||
|
||||
def test_importer_is_idempotent_for_same_input(self):
|
||||
self.run_import()
|
||||
first_counts = {
|
||||
|
||||
Reference in New Issue
Block a user