Canonicalize reward IDs during case-insensitive mapping
This commit is contained in:
parent
5fe39b96ae
commit
7f7ad80b46
9 changed files with 64 additions and 38 deletions
|
|
@ -1,8 +1,14 @@
|
|||
from tests.support import * # noqa: F401,F403
|
||||
from nte_history_exporter.decoder.arc import annotate_arc_groups
|
||||
from nte_history_exporter.decoder.arc import annotate_arc_groups, _resolve_arc_metadata
|
||||
|
||||
|
||||
class ArcDecodingTests(unittest.TestCase):
|
||||
def test_arc_mapping_lookup_is_case_insensitive_and_canonical(self):
|
||||
reward_id, metadata = _resolve_arc_metadata("fork_Wushoutieyu")
|
||||
|
||||
self.assertEqual(reward_id, "fork_wushoutieyu")
|
||||
self.assertEqual(metadata, {"name": "Raging Flames", "rank": "S"})
|
||||
|
||||
def test_page_split_timestamp_variants_form_one_ten_pull(self):
|
||||
rows = [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -71,6 +71,15 @@ class MysteryBoxDecodingTests(unittest.TestCase):
|
|||
self.assertEqual(rows[2]["reward_name"], "Beetle Coin")
|
||||
self.assertEqual(rows[2]["reward_rank"], "B")
|
||||
|
||||
def test_reward_mapping_lookup_is_case_insensitive_and_canonical(self):
|
||||
timestamp = datetime(2026, 7, 8, 19, 9, 33, tzinfo=timezone.utc)
|
||||
rows = parse_mystery_box_response(
|
||||
mystery_box_response([("Vehicle039", 1, timestamp)])
|
||||
)
|
||||
|
||||
self.assertEqual(rows[0]["reward_id"], "vehicle039")
|
||||
self.assertEqual(rows[0]["reward_name"], "Draco")
|
||||
|
||||
def test_live_session_accepts_partial_final_page(self):
|
||||
session = LiveHistorySession("192.168.0.10")
|
||||
request = mystery_box_request(3)
|
||||
|
|
|
|||
|
|
@ -157,6 +157,12 @@ class StructuredProtocolTests(unittest.TestCase):
|
|||
self.assertEqual(rows[0]["secondary_quantity"], 5)
|
||||
self.assertEqual(rows[0]["structured_pool_id"], "CardPool_Character")
|
||||
|
||||
def test_structured_reward_mapping_is_case_insensitive_and_canonical(self):
|
||||
row = decode_response_records(monopoly_payload("DICENORMAL,1"))[0]
|
||||
|
||||
self.assertEqual(row["reward_id"], "DiceNormal")
|
||||
self.assertEqual(row["reward_name"], "Fabricated Dice")
|
||||
|
||||
def test_structured_monopoly_parser_falls_back_when_heuristic_returns_no_rows(self):
|
||||
payload = monopoly_payload("Dice_ticket_02,50", roll_points=0)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue