Create attractive VASL scenarios, with loads of useful information embedded to assist with game play. https://vasl-templates.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
vasl-templates/vasl_templates/webapp/tests/test_aslrb2.py

117 lines
3.9 KiB

""" Test integration with asl-rulebook2. """
import os
from vasl_templates.webapp.tests.utils import init_webapp, find_child, find_children
from vasl_templates.webapp.tests.test_scenario_persistence import load_scenario
# ---------------------------------------------------------------------
def test_chapter_h( webapp, webdriver ):
"""Test links to Chapter H vehicle/ordnance notes."""
# initialize
webapp.control_tests.set_app_config_val( "ASL_RULEBOOK2_BASE_URL",
os.path.join( os.path.dirname(__file__), "fixtures/asl-rulebook2/vo-note-targets.json" )
)
init_webapp( webapp, webdriver, scenario_persistence=1 )
base_url = "{}/asl-rulebook2/".format( webapp.base_url )
# test normal vehicles/ordnance
load_scenario( {
"PLAYER_1": "german",
"OB_VEHICLES_1": [ { "name": "a german vehicle" }, { "name": "another german vehicle" } ],
"PLAYER_2": "russian",
"OB_ORDNANCE_2": [ { "name": "a russian ordnance" }, { "name": "another russian ordnance" } ],
} )
urls = _unload_aslrb2_urls( base_url )
assert urls == [
[ [ "gv:1", None ], [] ],
[ [], [ None, "ro:2" ] ]
]
# test Allied/Axis Minor vehicles/ordnance
load_scenario( {
"PLAYER_1": "dutch",
"OB_VEHICLES_1": [ { "name": "dutch vehicle" }, { "name": "common allied minor vehicle" } ],
"PLAYER_2": "romanian",
"OB_ORDNANCE_2": [ { "name": "romanian ordnance" }, { "name": "common axis minor ordnance" } ],
} )
urls = _unload_aslrb2_urls( base_url )
assert urls == [
[ [ "dv:1", "almv:101" ], [] ],
[ [], [ "ro:4", "axmo:104", ] ]
]
# test Landing Craft
load_scenario( {
"PLAYER_1": "american",
"OB_VEHICLES_1": [ { "name": "landing craft" } ],
"PLAYER_2": "japanese",
"OB_VEHICLES_2": [ { "name": "Daihatsu" } ],
} )
urls = _unload_aslrb2_urls( base_url )
assert urls == [
[ [ "lc:1" ], [] ],
[ [ "lc:2" ], [] ]
]
# test derived nationalities
load_scenario( {
"PLAYER_1": "chinese~gmd",
"OB_VEHICLES_1": [ { "name": "a chinese vehicle" } ],
} )
urls = _unload_aslrb2_urls( base_url )
assert urls == [
[ ["chv:1"], [] ],
[ [], [] ]
]
# test K:FW (UN Forces)
load_scenario( {
"PLAYER_1": "american",
"OB_VEHICLES_1": [ { "name": "kfw us vehicle" }, { "name": "kfw common vehicle" } ],
"PLAYER_2": "british",
"OB_ORDNANCE_2": [ { "name": "kfw british ordnance" }, { "name": "kfw common ordnance" } ],
} )
urls = _unload_aslrb2_urls( base_url )
assert urls == [
[ ["kfw-un:5","kfw-un:6"], [] ],
[ [], ["kfw-un:7","kfw-un:8"] ]
]
# test K:FW (Communist Forces)
load_scenario( {
"PLAYER_1": "kfw-kpa",
"OB_VEHICLES_1": [ { "name": "kpa vehicle" } ],
"PLAYER_2": "kfw-cpva",
"OB_ORDNANCE_2": [ { "name": "cpva ordnance" } ],
} )
urls = _unload_aslrb2_urls( base_url )
assert urls == [
[ ["kfw-comm:15"], [] ],
[ [], ["kfw-comm:16"] ]
]
# ---------------------------------------------------------------------
def _unload_aslrb2_urls( base_url ):
"""Unload the URL's to the asl-rulebook2 vehicle/ordnance notes."""
urls = [
[ [], [] ],
[ [], [] ]
]
for player_no in (1,2):
for vo_type_index, vo_type in enumerate(["vehicles","ordnance"]):
sortable = find_child( "#ob_{}-sortable_{}".format( vo_type, player_no ) )
urls2 = urls[ player_no-1 ][ vo_type_index ]
for vo_entry in find_children( ".vo-entry", sortable ):
link = find_child( "a.aslrb2", vo_entry )
if link:
url = link.get_attribute( "href" )
if url.startswith( base_url ):
url = url[ len(base_url): ]
else:
url = None
urls2.append( url )
return urls