|
|
|
@ -1,8 +1,10 @@ |
|
|
|
|
""" Test generating OB SETUP snippets. """ |
|
|
|
|
|
|
|
|
|
import types |
|
|
|
|
|
|
|
|
|
from selenium.webdriver.support.ui import Select |
|
|
|
|
|
|
|
|
|
from vasl_templates.webapp.tests.utils import get_clipboard, find_child |
|
|
|
|
from vasl_templates.webapp.tests.utils import get_nationalities, get_clipboard, get_stored_msg, find_child |
|
|
|
|
|
|
|
|
|
# --------------------------------------------------------------------- |
|
|
|
|
|
|
|
|
@ -52,3 +54,114 @@ def test_ob_setup( webapp, webdriver ): |
|
|
|
|
select_ob_tab( 2 ) |
|
|
|
|
btn2.click() |
|
|
|
|
assert get_clipboard().strip() == "[setup there.] (col=[OBCOL:french/OBCOL2:french])" |
|
|
|
|
|
|
|
|
|
# --------------------------------------------------------------------- |
|
|
|
|
|
|
|
|
|
def test_nationality_specific( webapp, webdriver ): |
|
|
|
|
"""Check that nationality-specific buttons are shown/hidden correctly.""" |
|
|
|
|
|
|
|
|
|
# initialize |
|
|
|
|
webdriver.get( webapp.url_for( "main", store_msgs=1 ) ) |
|
|
|
|
nationalities = get_nationalities( webapp ) |
|
|
|
|
|
|
|
|
|
# initialize |
|
|
|
|
def set_scenario_date( date ): |
|
|
|
|
"""Set the scenario date.""" |
|
|
|
|
elem = find_child( webdriver, "#tabs .ui-tabs-nav a[href='#tabs-scenario']" ) |
|
|
|
|
elem.click() |
|
|
|
|
elem = find_child( webdriver, "#panel-scenario input[name='scenario_date']" ) |
|
|
|
|
elem.clear() |
|
|
|
|
elem.send_keys( "{:02}/01/{:04}".format( date[1], date[0] ) ) |
|
|
|
|
|
|
|
|
|
# initialize |
|
|
|
|
def check_pf_snippets(): |
|
|
|
|
"""Check that the PF snippets are generated correctly.""" |
|
|
|
|
def do_test( date, expected, warning ): #pylint: disable=missing-docstring |
|
|
|
|
# test snippet generation |
|
|
|
|
set_scenario_date( date ) |
|
|
|
|
elem = find_child( webdriver, "#tabs .ui-tabs-nav a[href='#tabs-ob1']" ) |
|
|
|
|
elem.click() |
|
|
|
|
elem = find_child( webdriver, "input[type='button'][data-id='pf']" ) |
|
|
|
|
elem.click() |
|
|
|
|
assert get_clipboard().strip() == expected |
|
|
|
|
# check if a warning was issued |
|
|
|
|
last_warning = get_stored_msg( "_last-warning_" ) or "" |
|
|
|
|
if warning: |
|
|
|
|
assert last_warning.startswith( "PF are only available" ) |
|
|
|
|
else: |
|
|
|
|
assert last_warning == "" |
|
|
|
|
do_test( (1942,1), "PF: range=[1] ; check=[4] (drm=[+1])", True ) |
|
|
|
|
do_test( (1943,9), "PF: range=[1] ; check=[4] (drm=[+1])", True ) |
|
|
|
|
do_test( (1943,10), "PF: range=[1] ; check=[3]", False ) |
|
|
|
|
do_test( (1944,5), "PF: range=[1] ; check=[3]", False ) |
|
|
|
|
do_test( (1944,6), "PF: range=[2] ; check=[3]", False ) |
|
|
|
|
do_test( (1944,12), "PF: range=[2] ; check=[3]", False ) |
|
|
|
|
do_test( (1945,1), "PF: range=[3] ; check=[4] (drm=[-1])", False ) |
|
|
|
|
do_test( (1946,1), "PF: range=[3] ; check=[4] (drm=[-1])", False ) |
|
|
|
|
|
|
|
|
|
# initialize |
|
|
|
|
def check_baz_snippets(): |
|
|
|
|
"""Check that the BAZ snippets are generated correctly.""" |
|
|
|
|
def do_test( date, expected ): #pylint: disable=missing-docstring |
|
|
|
|
# test snippet generation |
|
|
|
|
set_scenario_date( date ) |
|
|
|
|
elem = find_child( webdriver, "#tabs .ui-tabs-nav a[href='#tabs-ob1']" ) |
|
|
|
|
elem.click() |
|
|
|
|
elem = find_child( webdriver, "input[type='button'][data-id='baz']" ) |
|
|
|
|
elem.click() |
|
|
|
|
assert get_clipboard().strip() == expected |
|
|
|
|
# check if a warning was issued |
|
|
|
|
last_warning = get_stored_msg( "_last-warning_" ) or "" |
|
|
|
|
if expected == "BAZ: none": |
|
|
|
|
assert last_warning.startswith( "BAZ are only available" ) |
|
|
|
|
else: |
|
|
|
|
assert last_warning == "" |
|
|
|
|
do_test( (1941,1), "BAZ: none" ) |
|
|
|
|
do_test( (1942,10), "BAZ: none" ) |
|
|
|
|
do_test( (1942,11), "BAZ: '43 ; range=[4] ; X#=[10] ; TK#=[13]" ) |
|
|
|
|
do_test( (1943,1), "BAZ: '43 ; range=[4] ; X#=[10] ; TK#=[13]" ) |
|
|
|
|
do_test( (1944,1), "BAZ: '44 ; range=[4] ; X#=[11] ; TK#=[16]" ) |
|
|
|
|
do_test( (1945,1), "BAZ: '45 ; range=[5] ; X#=[11] ; TK#=[16] ; WP#=[6]" ) |
|
|
|
|
do_test( (1946,1), "BAZ: '45 ; range=[5] ; X#=[11] ; TK#=[16] ; WP#=[6]" ) |
|
|
|
|
|
|
|
|
|
# initialize |
|
|
|
|
nationality_specific_buttons = { |
|
|
|
|
"mol": [ "russian", "Burn, baby, burn!" ], |
|
|
|
|
"mol-p": [ "russian", "mol-p template" ], |
|
|
|
|
"pf": [ "german", check_pf_snippets ], |
|
|
|
|
"psk": [ "german", "====> whoosh!" ], |
|
|
|
|
"atmm": [ "german", "Kaboom!!!" ], |
|
|
|
|
"baz": [ "american", check_baz_snippets ], |
|
|
|
|
"piat": [ "british", "piat template" ], |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# iterate through each nationality |
|
|
|
|
for nat in nationalities: |
|
|
|
|
|
|
|
|
|
# change the nationality for player 1 |
|
|
|
|
elem = find_child( webdriver, "#tabs .ui-tabs-nav a[href='#tabs-scenario']" ) |
|
|
|
|
elem.click() |
|
|
|
|
sel = Select( |
|
|
|
|
find_child( webdriver, "select[name='player_1']" ) |
|
|
|
|
) |
|
|
|
|
sel.select_by_value( nat ) |
|
|
|
|
elem = find_child( webdriver, "#tabs .ui-tabs-nav a[href='#tabs-ob1']" ) |
|
|
|
|
elem.click() |
|
|
|
|
|
|
|
|
|
# check the nationality-specific buttons |
|
|
|
|
for button_id,expected in nationality_specific_buttons.items(): |
|
|
|
|
elem = find_child( webdriver, "input[type='button'][data-id='{}']".format( button_id ) ) |
|
|
|
|
if nat == expected[0]: |
|
|
|
|
# the button should be shown for this nationality |
|
|
|
|
assert elem.is_displayed() |
|
|
|
|
# make sure that the template works |
|
|
|
|
elem.click() |
|
|
|
|
if isinstance( expected[1], str ): |
|
|
|
|
assert get_clipboard().strip() == expected[1] |
|
|
|
|
elif isinstance( expected[1], types.FunctionType ): |
|
|
|
|
expected[1]() #pylint: disable=not-callable |
|
|
|
|
else: |
|
|
|
|
assert False |
|
|
|
|
else: |
|
|
|
|
# it should be hidden for all other nationalities |
|
|
|
|
assert not elem.is_displayed() |
|
|
|
|