From fe44eb878ab25e54facb72fbdc5da6d8b32cd7b7 Mon Sep 17 00:00:00 2001 From: Taka Date: Sat, 1 Sep 2018 12:07:22 +0000 Subject: [PATCH] Added tests for date-based capabilities that change in the middle of a year. --- vasl_templates/webapp/static/snippets.js | 5 +- .../fixtures/data/ordnance/american.json | 13 ++ .../tests/fixtures/data/vehicles/russian.json | 6 + .../webapp/tests/test_capabilities.py | 120 +++++++++++++++--- .../webapp/tests/test_vehicles_ordnance.py | 18 +-- vasl_templates/webapp/tests/utils.py | 2 +- 6 files changed, 132 insertions(+), 32 deletions(-) diff --git a/vasl_templates/webapp/static/snippets.js b/vasl_templates/webapp/static/snippets.js index de8c1d1..e0e1d43 100644 --- a/vasl_templates/webapp/static/snippets.js +++ b/vasl_templates/webapp/static/snippets.js @@ -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 diff --git a/vasl_templates/webapp/tests/fixtures/data/ordnance/american.json b/vasl_templates/webapp/tests/fixtures/data/ordnance/american.json index a76fc12..b5190d0 100644 --- a/vasl_templates/webapp/tests/fixtures/data/ordnance/american.json +++ b/vasl_templates/webapp/tests/fixtures/data/ordnance/american.json @@ -12,6 +12,19 @@ "capabilities2": { "H": 7, "s": 7, "WP": 8, "C": [ [7,"P"], "\u20201" ] }, "note_number": "15\u2020", "notes": [ "C\u20201" ] +}, + +{ "name": "M3A1 37mm AT Gun", + "capabilities": [ "NT", "QSU" ], + "capabilities2": { "C": [ [7,"A2+"], "\u20201" ] }, + "note_number": "6\u2020", + "notes": [ "C\u20201", "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" } ] diff --git a/vasl_templates/webapp/tests/fixtures/data/vehicles/russian.json b/vasl_templates/webapp/tests/fixtures/data/vehicles/russian.json index 21c3884..7ce190a 100644 --- a/vasl_templates/webapp/tests/fixtures/data/vehicles/russian.json +++ b/vasl_templates/webapp/tests/fixtures/data/vehicles/russian.json @@ -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\u20201", "LL" ] } ] diff --git a/vasl_templates/webapp/tests/test_capabilities.py b/vasl_templates/webapp/tests/test_capabilities.py index 1dfdb65..be144c4 100644 --- a/vasl_templates/webapp/tests/test_capabilities.py +++ b/vasl_templates/webapp/tests/test_capabilities.py @@ -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\u20201"' ) + + # 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\u20201" "H6" "WP8" "s7"' ) + _check_snippet( "PTO", "01/01/1945", "ordnance", '"NT" "C7\u20201" "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\u20201" "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 ) diff --git a/vasl_templates/webapp/tests/test_vehicles_ordnance.py b/vasl_templates/webapp/tests/test_vehicles_ordnance.py index 73b7294..47d7b6a 100644 --- a/vasl_templates/webapp/tests/test_vehicles_ordnance.py +++ b/vasl_templates/webapp/tests/test_vehicles_ordnance.py @@ -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"' ) # --------------------------------------------------------------------- diff --git a/vasl_templates/webapp/tests/utils.py b/vasl_templates/webapp/tests/utils.py index 96e7d11..e843f12 100644 --- a/vasl_templates/webapp/tests/utils.py +++ b/vasl_templates/webapp/tests/utils.py @@ -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" )