82 lines
2.8 KiB
Python
82 lines
2.8 KiB
Python
import sys
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
if str(ROOT) not in sys.path:
|
|
sys.path.insert(0, str(ROOT))
|
|
|
|
from titan_odds import (
|
|
build_titan_odds_items,
|
|
parse_titan_odds_script,
|
|
parse_titan_schedule_script,
|
|
)
|
|
|
|
|
|
SCHEDULE_SCRIPT = r"""
|
|
var arrCup = [75,'世界杯','世界盃','World Cup','世界杯','世界盃','World Cup','2026'];
|
|
jh["G27976"] = [[2907402,75,0,'2026-07-12 05:00',640,744,'','','19','4',-0.5,-0.25,'2.5','1']];
|
|
var arrTeam = [
|
|
[640,'挪威','挪威','Norway','','images/norway.png'],
|
|
[744,'英格兰','英格蘭','England','','images/england.png']
|
|
];
|
|
var lastUpdateTime = '2026-07-11 10:00:12';
|
|
"""
|
|
|
|
ODDS_SCRIPT = """
|
|
oddsData["O_2907402"]=[[545,3.5,3.6,2.01],[16,3.3,3.55,2.13]];
|
|
oddsData["L_2907402"]=[[3,0.88,-0.5,0.94],[16,0.86,-0.5,0.98]];
|
|
oddsData["T_2907402"]=[[3,0.92,2.5,0.88],[16,0.93,2.5,0.87]];
|
|
"""
|
|
|
|
|
|
class TitanOddsTest(unittest.TestCase):
|
|
def test_parse_schedule_and_odds_builds_normalized_item(self):
|
|
schedule = parse_titan_schedule_script(SCHEDULE_SCRIPT)
|
|
odds = parse_titan_odds_script(ODDS_SCRIPT)
|
|
|
|
items = build_titan_odds_items(
|
|
schedule,
|
|
odds,
|
|
source_url="https://zq.titan007.com/cn/CupMatch/75.html",
|
|
company_id=3,
|
|
euro_company_id=545,
|
|
company_name="Crown",
|
|
)
|
|
|
|
self.assertEqual(len(items), 1)
|
|
item = items[0]
|
|
self.assertEqual(item["source_site"], "titan007")
|
|
self.assertEqual(item["source_match_id"], "2907402")
|
|
self.assertEqual(item["league_name"], "世界杯")
|
|
self.assertEqual(item["home_team"], "挪威")
|
|
self.assertEqual(item["away_team"], "英格兰")
|
|
self.assertEqual(item["show_type"], "early")
|
|
self.assertEqual(item["strong_side"], "C")
|
|
self.assertEqual(item["handicap_line"], "0.5")
|
|
self.assertEqual(item["handicap_home_odds"], "0.88")
|
|
self.assertEqual(item["handicap_away_odds"], "0.94")
|
|
self.assertEqual(item["total_line"], "2.5")
|
|
self.assertEqual(item["home_win_odds"], "3.5")
|
|
self.assertEqual(item["draw_odds"], "3.6")
|
|
self.assertEqual(item["away_win_odds"], "2.01")
|
|
self.assertEqual(item["raw_data"]["selected_company_id"], 3)
|
|
self.assertEqual(item["raw_data"]["selected_euro_company_id"], 545)
|
|
|
|
def test_sparse_schedule_rows_are_parsed_without_eval(self):
|
|
script = r"""
|
|
var arrCup = [75,'世界杯','','','','','','2026'];
|
|
jh["G27977"] = [[2907405,75,0,'2026-07-16 03:00',77068,77069,'','','','',,,'','']];
|
|
var arrTeam = [[77068,'99胜者'],[77069,'100胜者']];
|
|
"""
|
|
|
|
parsed = parse_titan_schedule_script(script)
|
|
|
|
self.assertIn("2907405", parsed["matches"])
|
|
self.assertEqual(parsed["matches"]["2907405"]["home_team"], "99胜者")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|