| import unittest |
| from app.services.player_linking_service import match_players_against_roster |
| from app.models.stats import PlayerStatRow |
|
|
| class TestPlayerLinking(unittest.TestCase): |
| def setUp(self): |
| self.roster = [ |
| {"id": "user1", "name": "Norbert Okidi", "jersey_number": 16}, |
| {"id": "user2", "name": "Michael Jordan", "jersey_number": 23}, |
| {"id": "user3", "name": "LeBron James", "jersey_number": 6}, |
| {"id": "user4", "name": "Stephen Curry", "jersey_number": 30}, |
| ] |
|
|
| def test_exact_match(self): |
| extracted = [PlayerStatRow(name_raw="Norbert Okidi", jersey_number=16)] |
| result = match_players_against_roster(extracted, self.roster) |
| |
| self.assertEqual(result[0].linked_player_profile_id, "user1") |
| self.assertEqual(result[0].link_reason, "Jersey + Fuzzy Name") |
| self.assertGreater(result[0].link_confidence, 0.9) |
|
|
| def test_fuzzy_name_with_jersey(self): |
| |
| extracted = [PlayerStatRow(name_raw="Norber Okdi", jersey_number=16)] |
| result = match_players_against_roster(extracted, self.roster) |
| |
| self.assertEqual(result[0].linked_player_profile_id, "user1") |
|
|
| def test_fuzzy_name_no_jersey(self): |
| |
| extracted = [PlayerStatRow(name_raw="Stephen Curri")] |
| result = match_players_against_roster(extracted, self.roster) |
| |
| self.assertEqual(result[0].linked_player_profile_id, "user4") |
| self.assertEqual(result[0].link_reason, "Fuzzy Name Only") |
| |
| def test_initials_matching(self): |
| |
| |
| extracted = [PlayerStatRow(name_raw="M. Jordan", jersey_number=23)] |
| result = match_players_against_roster(extracted, self.roster) |
| |
| self.assertEqual(result[0].linked_player_profile_id, "user2") |
|
|
| def test_no_match(self): |
| extracted = [PlayerStatRow(name_raw="Random Player", jersey_number=99)] |
| result = match_players_against_roster(extracted, self.roster) |
| |
| self.assertIsNone(result[0].linked_player_profile_id) |
| self.assertEqual(result[0].link_reason, "No confident match") |
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|