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_default_scenario.py

105 lines
4.6 KiB

"""Test the loading of the default scenario."""
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from vasl_templates.webapp.tests.utils import select_tab, find_child, get_sortable_entry_text, \
wait_for, init_webapp
# ---------------------------------------------------------------------
def test_default_scenario( webapp, webdriver ):
"""Test loading the default scenario."""
# initialize
webapp.control_tests.set_default_scenario( "new-default-scenario.json" )
init_webapp( webapp, webdriver )
# wait for the scenario to load
elem = find_child( "input[name='SCENARIO_NAME']" )
wait_for( 5, lambda: elem.get_attribute("value") != "" )
def check_textbox( field_name, expected ):
"""Check that a field has been loaded correctly."""
elem = find_child( "input[name='{}']".format( field_name ) )
assert elem.get_attribute( "value" ) == expected
def check_textarea( field_name, expected ):
"""Check that a field has been loaded correctly."""
elem = find_child( "textarea[name='{}']".format( field_name ) )
assert elem.get_attribute( "value" ) == expected
def check_droplist( field_name, expected ):
"""Check that a field has been loaded correctly."""
elem = find_child( "select[name='{}']".format( field_name ) )
assert Select(elem).first_selected_option.get_attribute("value") == expected
select_tab( "scenario" )
# check the scenario fields
check_textbox( "SCENARIO_NAME", "default scenario name" )
check_textbox( "SCENARIO_LOCATION", "default location" )
check_textbox( "SCENARIO_DATE", "12/25/2000" )
check_textbox( "SCENARIO_WIDTH", "1px" )
# check the player fields
check_droplist( "PLAYER_1", "american" )
check_droplist( "PLAYER_1_ELR", "1" )
check_droplist( "PLAYER_1_SAN", "2" )
check_droplist( "PLAYER_2", "japanese" )
check_droplist( "PLAYER_2_ELR", "3" )
check_droplist( "PLAYER_2_SAN", "4" )
check_textbox( "PLAYERS_WIDTH", "" )
# check the victory conditions
check_textarea( "VICTORY_CONDITIONS", "default victory conditions" )
check_textbox( "VICTORY_CONDITIONS_WIDTH", "123px" )
# check the scenario notes
assert get_sortable_entry_text( find_child( "#scenario_notes-sortable" ) ) \
== [ "default scenario note #{}".format(i) for i in [1,2,3] ]
# nb: should check the snippet widths as well (not really important for a default scenario)
# check the SSR's
assert get_sortable_entry_text( find_child( "#ssr-sortable" ) ) \
== [ "default SSR #{}".format(i) for i in [1,2,3] ]
check_textbox( "SSR_WIDTH", "999px" )
select_tab( "ob1" )
# check the OB setups/notes (player 1)
assert get_sortable_entry_text( find_child( "#ob_setups-sortable_1" ) ) \
== [ "default american OB setup #{}".format(i) for i in [1,2] ]
assert get_sortable_entry_text( find_child( "#ob_notes-sortable_1" ) ) \
== [ "default american OB note #{}".format(i) for i in [1,2] ]
# nb: should check the snippet widths as well (not really important for a default scenario)
# check the vehicles/ordnance (player 1)
assert get_sortable_entry_text( find_child( "#ob_vehicles-sortable_1" ) ) == []
check_textbox( "OB_VEHICLES_WIDTH_1", "110px" )
assert get_sortable_entry_text( find_child( "#ob_ordnance-sortable_1" ) ) == []
check_textbox( "OB_ORDNANCE_WIDTH_1", "120px" )
select_tab( "ob2" )
# check the OB setups/notes (player 2)
assert get_sortable_entry_text( find_child( "#ob_setups-sortable_2" ) ) \
== [ "default japanese OB setup #{}".format(i) for i in [1,2] ]
assert get_sortable_entry_text( find_child( "#ob_notes-sortable_2" ) ) \
== [ "default japanese OB note #{}".format(i) for i in [1,2] ]
# nb: should check the snippet widths as well (not really important for a default scenario)
# check the vehicles/ordnance (player 2)
assert get_sortable_entry_text( find_child( "#ob_vehicles-sortable_2" ) ) == []
check_textbox( "OB_VEHICLES_WIDTH_2", "210px" )
assert get_sortable_entry_text( find_child( "#ob_ordnance-sortable_2" ) ) == []
check_textbox( "OB_ORDNANCE_WIDTH_2", "211px" )
# check that the default OB setup/note width is being used
elem = find_child( "#ob_setups-add_2" )
elem.click()
elem = find_child( ".ui-dialog-buttonpane input[name='width']" )
assert elem.get_attribute( "value" ) == "900px"
elem.send_keys( Keys.ESCAPE )
elem = find_child( "#ob_notes-add_2" )
elem.click()
elem = find_child( ".ui-dialog-buttonpane input[name='width']" )
assert elem.get_attribute( "value" ) == "901px"