Added tests for date-based capabilities that change in the middle of a year.

master
Pacman Ghost 6 years ago
parent c228db45b8
commit fe44eb878a
  1. 5
      vasl_templates/webapp/static/snippets.js
  2. 13
      vasl_templates/webapp/tests/fixtures/data/ordnance/american.json
  3. 6
      vasl_templates/webapp/tests/fixtures/data/vehicles/russian.json
  4. 120
      vasl_templates/webapp/tests/test_capabilities.py
  5. 18
      vasl_templates/webapp/tests/test_vehicles_ordnance.py
  6. 2
      vasl_templates/webapp/tests/utils.py

@ -362,8 +362,11 @@ function select_capability_by_date( capabilities, scenario_theater, scenario_yea
{
var MONTH_NAMES = { F:2, J:6, A:8 } ;
var val = null ;
// initialize
capabilities = capabilities.slice() ;
var ref = has_ref( capabilities ) ;
var val = null ;
for ( var i=0 ; i < capabilities.length ; ++i ) {
// check for a ETO/PTO-only flag

@ -12,6 +12,19 @@
"capabilities2": { "H": 7, "s": 7, "WP": 8, "C": [ [7,"P"], "\u2020<sup>1</sup>" ] },
"note_number": "15\u2020",
"notes": [ "C\u2020<sup>1</sup>" ]
},
{ "name": "M3A1 37mm AT Gun",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "C": [ [7,"A2+"], "\u2020<sup>1</sup>" ] },
"note_number": "6\u2020",
"notes": [ "C\u2020<sup>1</sup>", "N" ]
},
{ "name": "M1 57mm AT Gun",
"capabilities": [ "NT", "QSU" ],
"capabilities2": { "HE": [ [7,"J4E"], [7,5], "\u2020" ], "D": [ [4,"J4+E"], "\u2020" ] },
"note_number": "7\u2020"
}
]

@ -21,6 +21,12 @@
"capabilities2": { "D": [ [6,"J4"], [7,5], "\u2020" ], "HE": [ [7,"F3"], [8,"4+"], "\u2020" ], "sD": [ [6,"4+"] ], "sM": "8\u2020" },
"note_number": "53\u2020",
"notes": [ "N", "LL" ]
},
{ "name": "Sherman III(a)",
"CS#": "5:brewup",
"capabilities2": { "s": 8, "WP": [ [6,"J4+"], "\u2020" ] },
"note_number": "50\u2020",
"notes": [ "N", "O", "R\u2020<sup>1</sup>", "LL" ]
}
]

@ -6,25 +6,82 @@ from vasl_templates.webapp.tests.utils import \
# ---------------------------------------------------------------------
def test_month_capabilities( webapp, webdriver ):
"""Test date-based capabilities that change in the middle of a year."""
# initialize
init_webapp( webapp, webdriver )
# Sherman III(a): WP6(J4+)† s8
load_scenario_params( {
"scenario": {
"PLAYER_1": "russian",
},
"ob1": {
"OB_VEHICLES_1": [ "Sherman III(a)" ],
}
} )
_check_snippet( None, "01/01/1943", "vehicles", '"s8"' )
_check_snippet( None, "05/31/1944", "vehicles", '"s8"' )
_check_snippet( None, "06/01/1944", "vehicles", '"WP6\u2020" "s8"' )
_check_snippet( None, "01/01/1945", "vehicles", '"WP6\u2020" "s8"' )
# Churchill III(b): D6(J4)/7(5)† ; HE7(F3)/8(4+)† ; sD6(4+) ; sM8†
new_scenario()
load_scenario_params( {
"scenario": {
"PLAYER_1": "russian",
},
"ob1": {
"OB_VEHICLES_1": [ "Churchill III(b)" ],
}
} )
_check_snippet( None, "01/01/1942", "vehicles", '"sM8\u2020"' )
_check_snippet( None, "01/31/1943", "vehicles", '"sM8\u2020"' )
_check_snippet( None, "02/01/1943", "vehicles", '"HE7\u2020" "sM8\u2020"' )
_check_snippet( None, "05/31/1944", "vehicles", '"HE8\u2020" "sD6" "sM8\u2020"' )
_check_snippet( None, "06/01/1944", "vehicles", '"D6\u2020" "HE8\u2020" "sD6" "sM8\u2020"' )
_check_snippet( None, "01/01/1945", "vehicles", '"D7\u2020" "HE8\u2020" "sD6" "sM8\u2020"' )
# M3A1 37mm AT Gun: NT, QSU, C7(A2+)†1
new_scenario()
load_scenario_params( {
"scenario": {
"PLAYER_1": "american",
},
"ob1": {
"OB_ORDNANCE_1": [ "M3A1 37mm AT Gun" ],
}
} )
_check_snippet( None, "01/01/1941", "ordnance", '"NT" "QSU"' )
_check_snippet( None, "07/31/1942", "ordnance", '"NT" "QSU"' )
_check_snippet( None, "08/01/1942", "ordnance", '"NT" "QSU" "C7\u2020<sup>1</sup>"' )
# M1 57mm AT Gun: NT, QSU, HE7(J4E)/7(5)†, D4(J4+E)†
new_scenario()
load_scenario_params( {
"scenario": {
"SCENARIO_THEATER": "ETO",
"PLAYER_1": "american",
},
"ob1": {
"OB_ORDNANCE_1": [ "M1 57mm AT Gun" ],
}
} )
_check_snippet( None, "01/01/1943", "ordnance", '"NT" "QSU"' )
_check_snippet( None, "05/31/1944", "ordnance", '"NT" "QSU"' )
_check_snippet( None, "06/01/1944", "ordnance", '"NT" "QSU" "D4\u2020" "HE7\u2020"' )
_check_snippet( None, "01/01/1945", "ordnance", '"NT" "QSU" "D4\u2020" "HE7\u2020"' )
_check_snippet( "PTO", "01/01/1945", "ordnance", '"NT" "QSU"' )
# ---------------------------------------------------------------------
def test_scenario_theater( webapp, webdriver ):
"""Test ETO/PTO-only capabilities."""
# initialize
init_webapp( webapp, webdriver )
def do_test( scenario_theater, scenario_date, expected ):
"""Test snippet generation."""
load_scenario_params( {
"scenario": {
"SCENARIO_THEATER": scenario_theater,
"SCENARIO_DATE": scenario_date,
}
} )
select_tab( "ob1" )
btn = find_child( "button.generate[data-id='ob_ordnance_1']" )
btn.click()
wait_for_clipboard( 2, "capabilities: {}".format(expected), contains=True )
# M2A1 105mm Howitzer: C7(4+P)†1
load_scenario_params( {
"scenario": {
@ -34,12 +91,12 @@ def test_scenario_theater( webapp, webdriver ):
"OB_ORDNANCE_1": [ "M2A1 105mm Howitzer" ],
}
} )
do_test( "ETO", "01/01/1940", '"NT" "H6" "WP8" "s7"')
do_test( "ETO", "01/01/1944", '"NT" "H6" "WP8" "s7"')
do_test( "ETO", "01/01/1945", '"NT" "H6" "WP8" "s7"')
do_test( "PTO", "01/01/1940", '"NT" "H6" "WP8" "s7"')
do_test( "PTO", "01/01/1944", '"NT" "C7" "H6" "WP8" "s7"')
do_test( "PTO", "01/01/1945", '"NT" "C7" "H6" "WP8" "s7"')
_check_snippet( "ETO", "01/01/1940", "ordnance", '"NT" "H6" "WP8" "s7"' )
_check_snippet( "ETO", "01/01/1944", "ordnance", '"NT" "H6" "WP8" "s7"' )
_check_snippet( "ETO", "01/01/1945", "ordnance", '"NT" "H6" "WP8" "s7"' )
_check_snippet( "PTO", "01/01/1940", "ordnance", '"NT" "H6" "WP8" "s7"' )
_check_snippet( "PTO", "01/01/1944", "ordnance", '"NT" "C7\u2020<sup>1</sup>" "H6" "WP8" "s7"' )
_check_snippet( "PTO", "01/01/1945", "ordnance", '"NT" "C7\u2020<sup>1</sup>" "H6" "WP8" "s7"' )
# M3 105mm Howitzer: C7(P)†1
new_scenario()
@ -51,5 +108,26 @@ def test_scenario_theater( webapp, webdriver ):
"OB_ORDNANCE_1": [ "M3 105mm Howitzer" ],
}
} )
do_test( "ETO", "01/01/1940", '"NT" "H7" "WP8" "s7"')
do_test( "PTO", "01/01/1940", '"NT" "C7" "H7" "WP8" "s7"')
_check_snippet( "ETO", "01/01/1940", "ordnance", '"NT" "H7" "WP8" "s7"' )
_check_snippet( "PTO", "01/01/1940", "ordnance", '"NT" "C7\u2020<sup>1</sup>" "H7" "WP8" "s7"' )
# ---------------------------------------------------------------------
def _check_snippet( scenario_theater, scenario_date, vo_type, expected ):
"""Test snippet generation."""
# update the scenario parameters
params = {
"scenario": {
"SCENARIO_DATE": scenario_date,
}
}
if scenario_theater:
params["scenario"]["SCENARIO_THEATER"] = scenario_theater
load_scenario_params( params )
# generate and check the snippet
select_tab( "ob1" )
btn = find_child( "button.generate[data-id='ob_{}_1']".format( vo_type ) )
btn.click()
wait_for_clipboard( 2, "capabilities: {}".format(expected), contains=True )

@ -200,15 +200,15 @@ def test_variable_capabilities( webapp, webdriver ):
wait_for_clipboard( 2, expected, transform=reformat )
do_test( 1, 1940, '"sM8\u2020"' )
do_test( 1, 1943, '"sM8\u2020"' )
do_test( 2, 1943, '"HE7" "sM8\u2020"' )
do_test( 12, 1943, '"HE7" "sM8\u2020"' )
do_test( 1, 1944, '"HE8" "sD6" "sM8\u2020"' )
do_test( 5, 1944, '"HE8" "sD6" "sM8\u2020"' )
do_test( 6, 1944, '"D6" "HE8" "sD6" "sM8\u2020"' )
do_test( 12, 1944, '"D6" "HE8" "sD6" "sM8\u2020"' )
do_test( 1, 1945, '"D7" "HE8" "sD6" "sM8\u2020"' )
do_test( 12, 1945, '"D7" "HE8" "sD6" "sM8\u2020"' )
do_test( 1, 1946, '"D7" "HE8" "sD6" "sM8\u2020"' )
do_test( 2, 1943, '"HE7\u2020" "sM8\u2020"' )
do_test( 12, 1943, '"HE7\u2020" "sM8\u2020"' )
do_test( 1, 1944, '"HE8\u2020" "sD6" "sM8\u2020"' )
do_test( 5, 1944, '"HE8\u2020" "sD6" "sM8\u2020"' )
do_test( 6, 1944, '"D6\u2020" "HE8\u2020" "sD6" "sM8\u2020"' )
do_test( 12, 1944, '"D6\u2020" "HE8\u2020" "sD6" "sM8\u2020"' )
do_test( 1, 1945, '"D7\u2020" "HE8\u2020" "sD6" "sM8\u2020"' )
do_test( 12, 1945, '"D7\u2020" "HE8\u2020" "sD6" "sM8\u2020"' )
do_test( 1, 1946, '"D7\u2020" "HE8\u2020" "sD6" "sM8\u2020"' )
# ---------------------------------------------------------------------

@ -114,7 +114,7 @@ def new_scenario():
"""Reset the scenario."""
select_menu_option( "new_scenario" )
# check if the webapp is asking for confirmation
if find_child( "#ask" ):
if find_child( "#ask" ).is_displayed():
# yup - make it so
click_dialog_button( "OK" )

Loading…
Cancel
Save