Promote anal hardcore action routing
This commit is contained in:
@@ -295,7 +295,7 @@ HARDCORE_ROUTE_CASES = (
|
||||
"subcategory": "Anal and double penetration",
|
||||
"focus": "anal_only",
|
||||
"family": "anal",
|
||||
"expected_route": {"position_family": "anal"},
|
||||
"expected_route": {"action_family": "anal", "position_family": "anal"},
|
||||
"expected_terms": {
|
||||
"krea": ("anal",),
|
||||
"sdxl": ("anal sex",),
|
||||
|
||||
@@ -4909,6 +4909,10 @@ def smoke_hardcore_position_config_policy() -> None:
|
||||
category_template_metadata.template_action_family({"action_family": "manual stimulation"}) == "manual",
|
||||
"Template action-family normalizer should accept subcategory-style aliases",
|
||||
)
|
||||
_expect(
|
||||
category_template_metadata.template_action_family({"action_family": "anal sex"}) == "anal",
|
||||
"Template action-family normalizer should accept anal aliases",
|
||||
)
|
||||
_expect(
|
||||
category_template_metadata.template_position_family({"position_family": "penetration"}) == "penetrative",
|
||||
"Template position-family normalizer should accept action-style aliases",
|
||||
@@ -5520,6 +5524,7 @@ def smoke_hardcore_category_routes() -> None:
|
||||
("hardcore_penetration", "Penetrative sex", "penetration_only", "penetrative", {"penetration", "default"}, "penetrative sex", "penetrative action"),
|
||||
("hardcore_oral", "Oral sex", "oral_only", "oral", {"oral"}, "oral sex", "oral action"),
|
||||
("hardcore_manual", "Manual stimulation", "manual_only", "manual", {"manual"}, "manual stimulation", "manual action"),
|
||||
("hardcore_anal", "Anal and double penetration", "anal_only", "anal", {"anal", "toy_double"}, "anal sex", "anal action"),
|
||||
("hardcore_outercourse", "Outercourse and genital teasing", "outercourse_only", "outercourse", {"outercourse"}, "outercourse", "non-penetrative action"),
|
||||
("hardcore_foreplay", "Foreplay and teasing", "foreplay_only", "foreplay", {"foreplay"}, "foreplay", "foreplay action"),
|
||||
("hardcore_aftercare", "Aftercare and cleanup", "interaction_only", "interaction", {"foreplay"}, "interaction", "interaction beat"),
|
||||
@@ -6708,6 +6713,7 @@ def smoke_pov_anal_position_routes() -> None:
|
||||
_expect_pair(pair, name)
|
||||
hard_row = pair.get("hardcore_row") or {}
|
||||
_expect(hard_row.get("position_family") == "anal", f"{name} position_family should be anal")
|
||||
_expect(hard_row.get("action_family") == "anal", f"{name} action_family should be anal")
|
||||
_expect(position_key in (hard_row.get("position_keys") or []), f"{name} lost position key {position_key!r}")
|
||||
role_graph = _expect_text(f"{name}.source_role_graph", hard_row.get("source_role_graph"), 40).lower()
|
||||
for term in role_terms:
|
||||
@@ -6752,6 +6758,7 @@ def smoke_double_front_back_route() -> None:
|
||||
_expect_pair(pair, "double_front_back_route")
|
||||
hard_row = pair.get("hardcore_row") or {}
|
||||
_expect(hard_row.get("position_family") == "anal", "double route position_family should be anal")
|
||||
_expect(hard_row.get("action_family") == "toy_double", "double route action_family should stay toy_double")
|
||||
_expect("front_back" in (hard_row.get("position_keys") or []), "double route lost front_back key")
|
||||
role_graph = _expect_text("double_front_back_route.source_role_graph", hard_row.get("source_role_graph"), 40).lower()
|
||||
_expect("second penetration point from the front" in role_graph, f"double route role graph lost front/back placement: {role_graph}")
|
||||
|
||||
Reference in New Issue
Block a user