Added more tests for American vehicle capabilitiies.

master
Pacman Ghost 6 years ago
parent fbb8a48adc
commit b522762168
  1. 7
      vasl_templates/webapp/templates/vo-report.html
  2. 291
      vasl_templates/webapp/tests/test_capabilities.py
  3. 15
      vasl_templates/webapp/tests/test_vo_reports.py
  4. 9
      vasl_templates/webapp/vo.py

@ -38,10 +38,14 @@ $(document).ready( function () {
function load_vo_listings( objs ) function load_vo_listings( objs )
{ {
// initialize // initialize
var theater = "{{THEATER}}".toUpperCase() ;
var nat = "{{NATIONALITY}}" ; var nat = "{{NATIONALITY}}" ;
var year = {{YEAR}} ; var year = {{YEAR}} ;
var month = {{MONTH}} ; var month = {{MONTH}} ;
var $results = $("#results") ; var $results = $("#results") ;
var vo_name = getUrlParam( "name" ) ; // nb: restricts the report to a single vehicle/ordnance
if ( vo_name )
vo_name = decodeURIComponent( vo_name ).toLowerCase() ;
// check if there are any vehicles/ordnance for the specified nationality // check if there are any vehicles/ordnance for the specified nationality
if ( ! (nat in objs ) ) { if ( ! (nat in objs ) ) {
@ -61,6 +65,8 @@ function load_vo_listings( objs )
buf.push( "<th colspan='2'>Capabilities", "<th colspan='2'>Notes" ) ; buf.push( "<th colspan='2'>Capabilities", "<th colspan='2'>Notes" ) ;
for ( var i=0 ; i < objs[nat].length ; ++i ) { for ( var i=0 ; i < objs[nat].length ; ++i ) {
var obj = objs[nat][i] ; var obj = objs[nat][i] ;
if ( vo_name && obj.name.toLowerCase() != vo_name )
continue ;
buf.push( "<tr>" ) ; buf.push( "<tr>" ) ;
buf.push( "<td>", fmtval(obj.name) ) ; buf.push( "<td>", fmtval(obj.name) ) ;
if ( "{{VO_TYPE}}" === "vehicles" ) { if ( "{{VO_TYPE}}" === "vehicles" ) {
@ -68,7 +74,6 @@ function load_vo_listings( objs )
buf.push( "<td>", fmtval( obj.no_if ? "" : "&#10003;" ) ) ; buf.push( "<td>", fmtval( obj.no_if ? "" : "&#10003;" ) ) ;
buf.push( "<td>", fmtval(make_crew_survival(obj)) ) ; buf.push( "<td>", fmtval(make_crew_survival(obj)) ) ;
} }
var theater = "ETO" ;
var capabilities = make_capabilities( obj, theater, year, month, true, true ) ; var capabilities = make_capabilities( obj, theater, year, month, true, true ) ;
buf.push( "<td>", listval(capabilities) ) ; buf.push( "<td>", listval(capabilities) ) ;
var capabilities = make_capabilities( obj, theater, year, month, true, false ) ; var capabilities = make_capabilities( obj, theater, year, month, true, false ) ;

@ -1,167 +1,192 @@
""" Test snippet generation for capabilities. """ """ Test snippet generation for capabilities. """
from vasl_templates.webapp.tests.utils import \ import pytest
init_webapp, select_tab, new_scenario, load_scenario_params, \
find_child, wait_for_clipboard from vasl_templates.webapp.tests.test_vo_reports import get_vo_report
# --------------------------------------------------------------------- # ---------------------------------------------------------------------
@pytest.mark.skipif(
pytest.config.option.short_tests, #pylint: disable=no-member
reason = "--short-tests specified"
) #pylint: disable=too-many-statements
def test_month_capabilities( webapp, webdriver ): def test_month_capabilities( webapp, webdriver ):
"""Test date-based capabilities that change in the middle of a year.""" """Test date-based capabilities that change in the middle of a year."""
# initialize
init_webapp( webapp, webdriver )
# Sherman III(a): WP6(J4+)† s8 # Sherman III(a): WP6(J4+)† s8
load_scenario_params( { vehicle = [ "russian", "vehicles", "Sherman III(a)" ]
"scenario": { _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8" )
"PLAYER_1": "russian", _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8" )
}, _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP6\u2020 s8" )
"ob1": { _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP6\u2020 s8" )
"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† # Churchill III(b): D6(J4)/7(5)† ; HE7(F3)/8(4+)† ; sD6(4+) ; sM8†
new_scenario() vehicle = [ "russian", "vehicles", "Churchill III(b)" ]
load_scenario_params( { _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "sM8\u2020" )
"scenario": { _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "sM8\u2020" )
"PLAYER_1": "russian", _check_capabilities( webdriver, webapp, *vehicle, "ETO", "02/1943", "HE7\u2020 sM8\u2020" )
}, _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "HE8\u2020 sD6 sM8\u2020" )
"ob1": { _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "D6\u2020 HE8\u2020 sD6 sM8\u2020" )
"OB_VEHICLES_1": [ "Churchill III(b)" ], _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "D7\u2020 HE8\u2020 sD6 sM8\u2020" )
}
} )
_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 # M3A1 37mm AT Gun: NT, QSU, C7(A2+)†1
new_scenario() ordnance = [ "american", "ordnance", "M3A1 37mm AT Gun" ]
load_scenario_params( { _check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1941", "NT QSU" )
"scenario": { _check_capabilities( webdriver, webapp, *ordnance, "ETO", "07/1942", "NT QSU" )
"PLAYER_1": "american", _check_capabilities( webdriver, webapp, *ordnance, "ETO", "08/1942", "NT QSU C7\u2020<sup>1</sup>" )
},
"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)† # M1 57mm AT Gun: NT, QSU, HE7(J4E)/7(5)†, D4(J4+E)†
new_scenario() ordnance = [ "american", "ordnance", "M1 57mm AT Gun" ]
load_scenario_params( { _check_capabilities( webdriver, webapp, *ordnance, "ETO", "12/1943", "NT QSU" )
"scenario": { _check_capabilities( webdriver, webapp, *ordnance, "ETO", "05/1944", "NT QSU" )
"SCENARIO_THEATER": "ETO", _check_capabilities( webdriver, webapp, *ordnance, "ETO", "06/1944", "NT QSU D4\u2020 HE7\u2020" )
"PLAYER_1": "american", _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT QSU D4\u2020 HE7\u2020" )
}, _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1945", "NT QSU" )
"ob1": {
"OB_ORDNANCE_1": [ "M1 57mm AT Gun" ], # M3: C7(A2+)†2
} vehicle = [ "american", "vehicles", "M3" ]
} ) _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1941", "n/a", (1,3) )
_check_snippet( None, "01/01/1943", "ordnance", '"NT" "QSU"' ) _check_capabilities( webdriver, webapp, *vehicle, "ETO", "07/1942", "n/a", (1,3) )
_check_snippet( None, "05/31/1944", "ordnance", '"NT" "QSU"' ) _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1942", "C7\u2020<sup>2</sup>", (1,3) )
_check_snippet( None, "06/01/1944", "ordnance", '"NT" "QSU" "D4\u2020" "HE7\u2020"' ) _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "C7\u2020<sup>2</sup>", (1,3) )
_check_snippet( None, "01/01/1945", "ordnance", '"NT" "QSU" "D4\u2020" "HE7\u2020"' )
_check_snippet( "PTO", "01/01/1945", "ordnance", '"NT" "QSU"' ) # M4/M4A1/M4A2/M4A3: WP7(J4+)†3 s5(J4+) sM5(4+)
for vo_name in ("M4","M4A1","M4A2","M4A3"):
vehicle = [ "american", "vehicles", vo_name ]
ref = "\u2020<sup>{}</sup>".format( 2 if vo_name == "M4A2" else 3 )
sM = 4 if vo_name == "M4A3" else 5
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "n/a" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "sM{}".format(sM) )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP7{} s5 sM{}".format(ref,sM) )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP7{} s5 sM{}".format(ref,sM) )
# M4A3E2 (L): A4(4)/5(5), s5(5)
vehicle = [ "american", "vehicles", "M4A3E2 (L)" ]
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sM8" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "A4 sM8" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1944", "A4 sM8" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A5 s5 sM8" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1946", "A5 s5 sM8" )
# M4A1(76)W & M4A3(76)W: A4(A4)/5(5)†2, s5(5)
for vo_name in ("M4A1(76)W","M4A3(76)W"):
vehicle = [ "american", "vehicles", vo_name ]
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sM8" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "07/1944", "sM8" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "A4\u2020<sup>2</sup> sM8" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A5\u2020<sup>2</sup> s5 sM8" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1946", "A5\u2020<sup>2</sup> s5 sM8" )
# Sherman Crab: s5(J4+); WP7(J4+)†2
vehicle = [ "american", "vehicles", "Sherman Crab" ]
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sM4" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "sM4" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP7\u2020<sup>2</sup> s5 sM4" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP7\u2020<sup>2</sup> s5 sM4" )
# M8 HMC: C4(4+)†1
vehicle = [ "american", "vehicles", "M8 HMC" ]
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "H9 WP9" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "C4\u2020<sup>1</sup> H9 WP9" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "C4\u2020<sup>1</sup> H9 WP9" )
# --------------------------------------------------------------------- # ---------------------------------------------------------------------
@pytest.mark.skipif(
pytest.config.option.short_tests, #pylint: disable=no-member
reason = "--short-tests specified"
)
def test_scenario_theater( webapp, webdriver ): def test_scenario_theater( webapp, webdriver ):
"""Test ETO/PTO-only capabilities.""" """Test ETO/PTO-only capabilities."""
# initialize
init_webapp( webapp, webdriver )
# M2A1 105mm Howitzer: C7(4+P)†1 # M2A1 105mm Howitzer: C7(4+P)†1
load_scenario_params( { ordnance = [ "american", "ordnance", "M2A1 105mm Howitzer" ]
"scenario": { _check_capabilities( webdriver, webapp, *ordnance , "ETO", "12/1943", "NT H6 WP8 s7" )
"PLAYER_1": "american", _check_capabilities( webdriver, webapp, *ordnance , "ETO", "01/1944", "NT H6 WP8 s7" )
}, _check_capabilities( webdriver, webapp, *ordnance , "ETO", "01/1945", "NT H6 WP8 s7" )
"ob1": { _check_capabilities( webdriver, webapp, *ordnance , "PTO", "12/1943", "NT H6 WP8 s7" )
"OB_ORDNANCE_1": [ "M2A1 105mm Howitzer" ], _check_capabilities( webdriver, webapp, *ordnance , "PTO", "01/1944", "NT C7\u2020<sup>1</sup> H6 WP8 s7" )
} _check_capabilities( webdriver, webapp, *ordnance , "PTO", "01/1945", "NT C7\u2020<sup>1</sup> 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 # M3 105mm Howitzer: C7(P)†1
new_scenario() ordnance = [ "american", "ordnance", "M3 105mm Howitzer" ]
load_scenario_params( { _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1940", "NT H7 WP8 s7" )
"scenario": { _check_capabilities( webdriver, webapp, *ordnance, "PTO", "01/1940", "NT C7\u2020<sup>1</sup> H7 WP8 s7" )
"PLAYER_1": "american",
}, # M2A4: C10(P)†1
"ob1": { vehicle = [ "american", "vehicles", "M2A4" ]
"OB_ORDNANCE_1": [ "M3 105mm Howitzer" ], _check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C10\u2020<sup>1</sup>" )
} _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "n/a" )
} )
_check_snippet( "ETO", "01/01/1940", "ordnance", '"NT" "H7" "WP8" "s7"' ) # M4(105) & M4A3(105): C7P†1
_check_snippet( "PTO", "01/01/1940", "ordnance", '"NT" "C7\u2020<sup>1</sup>" "H7" "WP8" "s7"' ) for vo_name in ("M4(105)","M4A3(105)"):
vehicle = [ "american", "vehicles", vo_name ]
_check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C7\u2020<sup>1</sup> H9 WP9 s7 sM8" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "H9 WP9 s7 sM8" )
# NOTE: We do a bit of hackery for the APCR specification for the M10 GMC and M18 GMC, # NOTE: We do a bit of hackery for the APCR specification for the M10 GMC and M18 GMC,
# to flag them as ETO-only, so we make sure everything's working properly here. # to flag them as ETO-only, so we make sure everything's working properly here.
# M10 GMC: A(E)5(A4)/6(5)†1 # M10 GMC: A(E)5(A4)/6(5)†1
new_scenario() vehicle = [ "american", "vehicles", "M10 GMC" ]
load_scenario_params( { _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sP5" )
"scenario": { _check_capabilities( webdriver, webapp, *vehicle, "ETO", "07/1944", "sP5" )
"PLAYER_1": "american", _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "A5\u2020<sup>1</sup> sP5" )
}, _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A6\u2020<sup>1</sup> s5 sP5" )
"ob1": { _check_capabilities( webdriver, webapp, *vehicle, "other", "01/1945", "s5 sP5" )
"OB_VEHICLES_1": [ "M10 GMC" ],
}
} )
_check_snippet( "ETO", "07/31/1944", "vehicles", '"sP5"' )
_check_snippet( "ETO", "08/01/1944", "vehicles", '"A5\u2020<sup>1</sup>" "sP5"' )
_check_snippet( "ETO", "01/01/1945", "vehicles", '"A6\u2020<sup>1</sup>" "s5" "sP5"' )
_check_snippet( "other", "01/01/1945", "vehicles", '"s5" "sP5"' )
# M18 GMC: A(E)5(4)/6(5)†1 # M18 GMC: A(E)5(4)/6(5)†1
new_scenario() vehicle = [ "american", "vehicles", "M18 GMC" ]
load_scenario_params( { _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "sP5" )
"scenario": { _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "A5\u2020<sup>1</sup> sP5" )
"PLAYER_1": "american", _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A6\u2020<sup>1</sup> s5 sP5" )
}, _check_capabilities( webdriver, webapp, *vehicle, "other", "01/1945", "s5 sP5" )
"ob1": {
"OB_VEHICLES_1": [ "M18 GMC" ], # M7 HMC: C7(P)†1
} vehicle = [ "american", "vehicles", "M7 HMC" ]
} ) _check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C7\u2020<sup>1</sup> H7 WP8 s7" )
_check_snippet( "ETO", "12/31/1943", "vehicles", '"sP5"' ) _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "H7 WP8 s7" )
_check_snippet( "ETO", "01/01/1944", "vehicles", '"A5\u2020<sup>1</sup>" "sP5"' )
_check_snippet( "ETO", "01/01/1945", "vehicles", '"A6\u2020<sup>1</sup>" "s5" "sP5"' ) # LVT(A)1: C10(P)†2
_check_snippet( "other", "01/01/1945", "vehicles", '"s5" "sP5"' ) vehicle = [ "american", "vehicles", "LVT(A)1" ]
_check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C10\u2020<sup>2</sup>" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "n/a" )
# LVT(A)4: C7(P)†3
vehicle = [ "american", "vehicles", "LVT(A)4" ]
_check_capabilities( webdriver, webapp, *vehicle, "PTO", "01/1940", "C7\u2020<sup>3</sup> H8 WP9" )
_check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1940", "H8 WP9" )
# --------------------------------------------------------------------- # ---------------------------------------------------------------------
def _check_snippet( scenario_theater, scenario_date, vo_type, expected ): def _check_capabilities( webdriver, webapp,
"""Test snippet generation.""" nat, vo_type, vo_name, scenario_theater, scenario_date,
expected, row=None
# update the scenario parameters ): #pylint: disable=too-many-arguments
params = { """Check the vehicle/ordnance capabilities for the specified parameters.
"scenario": {
"SCENARIO_DATE": scenario_date, NOTE: We're only interested in checking the generated capabilities, not testing the UI,
} so we use a V/O report to get the information out of the webapp, which is significantly faster.
} """
if scenario_theater:
params["scenario"]["SCENARIO_THEATER"] = scenario_theater # FUDGE! There are a few vehicles with the same name :-/
load_scenario_params( params ) if row:
row_no, expected_rows = row
# generate and check the snippet else:
select_tab( "ob1" ) row_no = expected_rows = 1
btn = find_child( "button.generate[data-id='ob_{}_1']".format( vo_type ) )
btn.click() # generate the V/O report
wait_for_clipboard( 2, "capabilities: {}".format(expected), contains=True ) month, year = scenario_date.split( "/" )
results = get_vo_report( webapp, webdriver, scenario_theater, nat, vo_type, year, month, name=vo_name )
assert len(results) == 1+expected_rows
# check the capabilities
if vo_type == "vehicles":
assert "Capabilities" in results[0][4]
capabilities = results[row_no][5]
elif vo_type == "ordnance":
assert "Capabilities" in results[0][1]
capabilities = results[row_no][2]
else:
assert False
assert capabilities == expected

@ -18,7 +18,6 @@ def test_vo_reports( webapp, webdriver ):
"""Check the vehicle/ordnance reports.""" """Check the vehicle/ordnance reports."""
# initialize # initialize
test_utils._webdriver = webdriver #pylint: disable=protected-access
check_dir = os.path.join( os.path.split(__file__)[0], "fixtures/vo-reports/" ) check_dir = os.path.join( os.path.split(__file__)[0], "fixtures/vo-reports/" )
save_dir = None # nb: define this to save the generated reports save_dir = None # nb: define this to save the generated reports
@ -43,7 +42,7 @@ def test_vo_reports( webapp, webdriver ):
# get the next report # get the next report
buf = io.StringIO() buf = io.StringIO()
results = get_vo_report( webapp, webdriver, nat, vo_type, year ) results = get_vo_report( webapp, webdriver, "ETO", nat, vo_type, year, 1 )
# FUDGE! The "capabilities" and "notes" columns span 2 columns each, # FUDGE! The "capabilities" and "notes" columns span 2 columns each,
# so we add dummy header columns to stop tabulate from getting confused :-/ # so we add dummy header columns to stop tabulate from getting confused :-/
@ -80,7 +79,7 @@ def test_vo_reports( webapp, webdriver ):
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def get_vo_report( webapp, webdriver, nat, vo_type, year ): def get_vo_report( webapp, webdriver, theater, nat, vo_type, year, month, name=None ):
"""Get a vehicle/ordnance report. """Get a vehicle/ordnance report.
NOTE: We can't get the V/O report to return its results as, say, plain-text, for easy checking, NOTE: We can't get the V/O report to return its results as, say, plain-text, for easy checking,
@ -88,10 +87,14 @@ def get_vo_report( webapp, webdriver, nat, vo_type, year ):
the results are ready i.e. Selenium, not wget :-/ the results are ready i.e. Selenium, not wget :-/
""" """
# nb: in case the caller hasn't called init_webapp()
test_utils._webdriver = webdriver #pylint: disable=protected-access
# initialize # initialize
webdriver.get( url = webapp.url_for( "get_vo_report", theater=theater, nat=nat, vo_type=vo_type, year=year, month=month )
webapp.url_for( "get_vo_report", nat=nat, vo_type=vo_type, year=year ) if name:
) url += "?&name={}".format( name )
webdriver.get( url )
wait_for( 2, lambda: find_child("#results").is_displayed() ) wait_for( 2, lambda: find_child("#results").is_displayed() )
def tidy( cell ): def tidy( cell ):

@ -46,18 +46,19 @@ def _do_get_listings( listings_type ):
# --------------------------------------------------------------------- # ---------------------------------------------------------------------
@app.route( "/<vo_type>/<nat>/<int:year>", defaults={"month":1} ) @app.route( "/<vo_type>/<theater>/<nat>/<int:year>", defaults={"month":1} )
@app.route( "/<vo_type>/<nat>/<int:year>/<int:month>" ) @app.route( "/<vo_type>/<theater>/<nat>/<int:year>/<int:month>" )
def get_vo_report( nat, vo_type, year, month ): def get_vo_report( theater, nat, vo_type, year, month ):
"""Get a vehicle/ordnance report.""" """Get a vehicle/ordnance report."""
# generate the vehicle/ordnance report # generate the vehicle/ordnance report
if vo_type not in ("vehicles","ordnance"): if vo_type not in ("vehicles","ordnance"):
abort( 404 ) abort( 404 )
return render_template( "vo-report.html", return render_template( "vo-report.html",
THEATER = theater,
NATIONALITY = nat, NATIONALITY = nat,
VO_TYPE = vo_type, VO_TYPE = vo_type,
VO_TYPE0 = vo_type[:-1] if vo_type.endswith("s") else vo_type, VO_TYPE0 = vo_type[:-1] if vo_type.endswith("s") else vo_type,
YEAR = year, YEAR = year,
MONTH = month MONTH = month,
) )

Loading…
Cancel
Save