Exemplo n.º 1
0
def test_delete_weapon(player_wizard, browser): # noqa
    """As a player, I can delete a weapon."""
    print('As a player, I can delete a weapon.')

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, weapon_table.add_id)
        )
    )

    weapon_table.add.click()
    ut.select_from_autocomplete(
        weapon_add,
        'name',
        browser,
        has_search_term=False
    )
    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    rows = ut.get_table_rows(weapon_table, 'table', values=False)
    rows[0][7].find_element_by_tag_name('a').click()
    rows = ut.get_table_rows(weapon_table, 'table', values=False)

    assert rows[0][0].text.strip() == 'Add a new weapon'
Exemplo n.º 2
0
def test_reach_ft(player_wizard, browser): # noqa
    """As a player, if I add a weapon with property reach, 5 ft. is added
       after I close the modal."""
    print(('As a player, if I add a weapon with property reach, 5 ft. is '
           'added after I close the modal'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, weapon_table.add_id)
        )
    )

    weapon_table.add.click()
    weapon_add.name = 'Test name'
    weapon_add.type_ = 'Melee'
    weapon_add.property_ = 'Reach'
    weapon_add.range_ = '5'
    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    row = ut.get_table_row(weapon_table, 'table', values=False)

    assert row[4].text.strip() == '10 ft.'
Exemplo n.º 3
0
def test_weapon_magical_modifier(player_wizard, browser): # noqa
    """As a player, if weapon is magical, a badge indicating the modifier
       is present."""
    print(('As a player, if weapon is magical, a badge indicating the '
           'modifier is present.'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    weapon_add.name = 'Add Name'
    weapon_add.magical_modifier = 3

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, weapon_table.add_id)
        )
    )

    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    row = ut.get_table_row(weapon_table, 'table', 1)

    weapon_name_label = ' '.join([string.strip() for string in row.weapon.split()])

    assert weapon_name_label == 'Add Name + 3'
Exemplo n.º 4
0
def test_weapon_ogl_pre_pop(player_wizard, browser): # noqa
    """As a player, if I select from weapon name field, OGL data auto-completes
       and the remaining fields pre-populate."""
    print(('As a player, if I select from weapon name field, OGL data '
           'auto-completes and the remaining fields pre-populate.'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, weapon_table.add_id)
        )
    )

    weapon_table.add.click()
    ut.select_from_autocomplete(
        weapon_add,
        'name',
        browser,
        has_search_term=False
    )
    weapon_add.add.click()

    row = ut.get_table_row(weapon_table, 'table', 1)

    assert row.weapon.strip().strip() == 'Battleaxe'
    assert row.to_hit.strip() == '+ 6'
    assert row.damage.strip() == '1d8 or 1d10'
    assert row.damage_type.strip() == 'Slashing'
    assert row.range.strip() == '5 ft.'
    assert row.property.strip() == 'Versatile'
    assert row.quantity.strip() == '1'
Exemplo n.º 5
0
def test_autocomplete_weapon(player_wizard, browser):  # noqa
    """As a player, if I start typing in the autocomplete inputs, I can select suggested items in the dropdown."""
    print(
        'As a player, if I start typing in the autocomplete inputs, I can select suggested items in the dropdown.'
    )

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add, 'name', '', browser)
    ut.select_from_autocomplete(weapon_add, 'type_', '', browser)
    ut.select_from_autocomplete(weapon_add, 'handedness', '', browser)
    ut.select_from_autocomplete(weapon_add, 'proficiency', '', browser)
    ut.select_from_autocomplete(weapon_add, 'damage_type', '', browser)
    ut.select_from_autocomplete(weapon_add, 'property_', '', browser)

    assert weapon_add.name.get_attribute('value') == 'Battleaxe'
    assert weapon_add.type_.get_attribute('value') == 'Melee'
    assert weapon_add.handedness.get_attribute('value') == 'One or Two Handed'
    assert weapon_add.proficiency.get_attribute('value') == 'Martial'
    assert weapon_add.damage_type.get_attribute('value') == 'Acid'
    assert weapon_add.property_.get_attribute('value') == 'Ammunition'
Exemplo n.º 6
0
def test_preview_weapon(player_wizard, browser):  # noqa
    """As a player, I can select a row in the weapon table and view the item in the preview tab."""
    print(
        'As a player, I can select a row in the weapon table and view the item in the preview tab'
    )

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    weapon_preview = weapon.WeaponPreviewModal(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add, 'name', '', browser)
    weapon_add.add.click()

    time.sleep(.3)
    row = ut.get_table_row(weapon_table, 'table', values=False)
    time.sleep(.3)
    row[0].click()
    time.sleep(.5)

    assert weapon_preview.name.text == 'Battleaxe'
    assert weapon_preview.magical_modifier.text == ''
    assert weapon_preview.damage.text == '1d8 or 1d10'
    assert weapon_preview.to_hit_modifier.text == '0'
    assert weapon_preview.range_.text == '5 ft.'
    assert weapon_preview.type_.text == 'Melee'
    assert weapon_preview.proficiency.text == 'Martial'
    assert weapon_preview.handedness.text == 'One or Two Handed'
    assert weapon_preview.weight.text == '4 lbs.'
    assert weapon_preview.range_.text == '5 ft.'
    assert weapon_preview.damage_type.text == 'Slashing'
    assert weapon_preview.property_.text == 'Versatile'
    assert '' in weapon_preview.description.text
Exemplo n.º 7
0
def test_add_weapon(player_wizard, browser): # noqa
    """As a player, I can add a weapon."""
    print('As a player, I can add a weapon.')

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, weapon_table.add_id)
        )
    )

    weapon_table.add.click()
    weapon_add.name = 'Add Name'
    weapon_add.damage = 'Add Damage'
    weapon_add.magical_modifier = 1
    weapon_add.to_hit_modifier = 2
    weapon_add.type_ = 'Ranged'
    weapon_add.handedness = 'Add Handedness'
    weapon_add.proficiency = 'Add Proficiency'
    weapon_add.price = 200
    weapon_add.currency_denomination = 'GP'
    weapon_add.weight = 100
    weapon_add.range_ = '20/40'
    weapon_add.damage_type = 'Add Damage Type'
    weapon_add.property_ = 'Add Property'
    weapon_add.quantity = 2
    weapon_add.description = 'Add Description'

    assert weapon_add.name.get_attribute('value').strip() == 'Add Name'
    assert weapon_add.damage.get_attribute('value').strip() == 'Add Damage'
    assert weapon_add.magical_modifier.get_attribute('value').strip() == '1'
    assert weapon_add.to_hit_modifier.get_attribute('value').strip() == '2'
    assert weapon_add.handedness.get_attribute('value').strip() == 'Add Handedness'
    assert weapon_add.proficiency.get_attribute('value').strip() == 'Add Proficiency'
    assert weapon_add.price.get_attribute('value').strip() == '200'
    assert weapon_add.currency_denomination.get_attribute('value').strip() == 'GP'
    assert weapon_add.weight.get_attribute('value').strip() == '100'
    assert weapon_add.range_.get_attribute('value').strip() == '20/40'
    assert weapon_add.damage_type.get_attribute('value').strip() == 'Add Damage Type'
    assert weapon_add.property_.get_attribute('value').strip() == 'Add Property'
    assert weapon_add.quantity.get_attribute('value').strip() == '2'
    assert weapon_add.description.get_attribute('value').strip() == 'Add Description'

    weapon_add.add.click()

    row = ut.get_table_row(weapon_table, 'table', 1)
    assert ' '.join(row.weapon.split()) == 'Add Name + 1'
    assert row.to_hit.strip() == '+ 9'
    assert row.damage.strip() == 'Add Damage'
    assert row.damage_type.strip() == 'Add Damage Type'
    assert row.range.strip() == '20/40 ft.'
    assert row.property.strip() == 'Add Property'
    assert row.quantity.strip() == '2'
Exemplo n.º 8
0
def test_preview_weapon(player_wizard, browser): # noqa
    """As a player, I can select a row in the weapon table and view the item
       in the preview tab."""
    print(('As a player, I can select a row in the weapon '
           'table and view the item in the preview tab'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    weapon_preview = weapon.WeaponPreviewModal(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.ID, weapon_table.add_id)
        )
    )

    weapon_table.add.click()
    ut.select_from_autocomplete(
        weapon_add,
        'name',
        browser,
        has_search_term=False
    )
    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        modal_finished_closing()
    )

    row = ut.get_table_row(weapon_table, 'table', values=False)
    row[0].click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable(
            (By.XPATH, weapon_preview.done_xpath)
        )
    )

    assert weapon_preview.name.text.strip() == 'Battleaxe'
    assert weapon_preview.magical_modifier.text.strip() == ''
    assert weapon_preview.damage.text.strip() == '1d8 or 1d10'
    assert weapon_preview.to_hit_modifier.text.strip() == '0'
    assert weapon_preview.range_.text.strip() == '5 ft.'
    assert weapon_preview.type_.text.strip() == 'Melee'
    assert weapon_preview.proficiency.text.strip() == 'Martial'
    assert weapon_preview.handedness.text.strip() == 'One or Two Handed'
    assert weapon_preview.weight.text.strip() == '4 lbs.'
    assert weapon_preview.range_.text.strip() == '5 ft.'
    assert weapon_preview.damage_type.text.strip() == 'Slashing'
    assert weapon_preview.property_.text.strip() == 'Versatile'
    assert '' in weapon_preview.description.text.strip()
Exemplo n.º 9
0
def test_add_weapon_open_model_by_row(player_wizard, browser):  # noqa
    """As a player, I can click the first row in weapon table to open the weapon add modal."""
    print(
        'As a player, I can click the first row in weapon table to open the weapon add modal.'
    )

    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    rows = ut.get_table_rows(weapon_table, 'table', values=False)

    assert rows[0][0].is_enabled()
    assert rows[0][0].is_displayed()
Exemplo n.º 10
0
def test_weapon_persists(player_wizard, browser):  # noqa
    """As a player, all fields for weapon persist after page refresh."""
    print('As a player, all fields for weapon persist after page refresh.')

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_edit = weapon.WeaponEditModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    weapon_tabs = weapon.WeaponModalTabs(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add, 'name', '', browser)
    weapon_add.add.click()

    browser.refresh()

    row = ut.get_table_row(weapon_table, 'table', 1)

    assert row.weapon.strip() == 'Battleaxe'
    assert row.to_hit == '+ 6'
    assert row.damage == '1d8 or 1d10'
    assert row.damage_type == 'Slashing'
    assert row.range == '5 ft.'
    assert row.property == 'Versatile'
    assert row.quantity == '1'

    row = ut.get_table_row(weapon_table, 'table', values=False)
    time.sleep(.3)
    row[0].click()
    time.sleep(.3)
    weapon_tabs.edit.click()

    assert weapon_edit.name.get_attribute('value') == 'Battleaxe'
    assert weapon_edit.damage.get_attribute('value') == '1d8 or 1d10'
    assert weapon_edit.magical_modifier.get_attribute('value') == '0'
    assert weapon_edit.to_hit_modifier.get_attribute('value') == '0'
    assert weapon_edit.type_.get_attribute('value') == 'Melee'
    assert weapon_edit.handedness.get_attribute('value') == 'One or Two Handed'
    assert weapon_edit.proficiency.get_attribute('value') == 'Martial'
    assert weapon_edit.price.get_attribute('value') == '10'
    assert weapon_edit.currency_denomination.get_attribute('value') == 'GP'
    assert weapon_edit.weight.get_attribute('value') == '4'
    assert weapon_edit.range_.get_attribute('value') == ''
    assert weapon_edit.damage_type.get_attribute('value') == 'Slashing'
    assert weapon_edit.property_.get_attribute('value') == 'Versatile'
    assert weapon_edit.quantity.get_attribute('value') == '1'
    assert weapon_edit.description.get_attribute('value') == ''
Exemplo n.º 11
0
def test_autocomplete_weapon(player_wizard, browser):  # noqa
    """As a player, if I start typing in the autocomplete inputs, I can select
       suggested items in the dropdown."""
    print(('As a player, if I start typing in the autocomplete inputs, I can '
           ' select suggested items in the dropdown.'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, weapon_table.add_id)))

    weapon_table.add.click()

    ut.select_from_autocomplete(weapon_add,
                                'name',
                                browser,
                                has_search_term=False)
    ut.select_from_autocomplete(weapon_add,
                                'type_',
                                browser,
                                has_search_term=False)
    ut.select_from_autocomplete(weapon_add,
                                'handedness',
                                browser,
                                has_search_term=False)
    ut.select_from_autocomplete(weapon_add,
                                'proficiency',
                                browser,
                                has_search_term=False)
    ut.select_from_autocomplete(weapon_add,
                                'damage_type',
                                browser,
                                has_search_term=False)
    ut.select_from_autocomplete(weapon_add,
                                'property_',
                                browser,
                                has_search_term=False)

    assert weapon_add.name.get_attribute('value').strip() == 'Battleaxe'
    assert weapon_add.type_.get_attribute('value').strip() == 'Melee'
    assert weapon_add.handedness.get_attribute(
        'value').strip() == 'One or Two Handed'
    assert weapon_add.proficiency.get_attribute('value').strip() == 'Martial'
    assert weapon_add.damage_type.get_attribute('value').strip() == 'Acid'
    assert weapon_add.property_.get_attribute('value').strip() == 'Ammunition'
Exemplo n.º 12
0
def test_melee_ft(player_wizard, browser):  # noqa
    """As a player, if I add a melee weapon, the range of 5 ft. is assigned
       after I close the modal."""
    print(('As a player, if I add a melee weapon, the range of 5 ft. is '
           'assigned after I close the modal'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, weapon_table.add_id)))

    weapon_table.add.click()

    weapon_add.name = 'Test name'
    weapon_add.damage = '4d6'
    weapon_add.type_ = 'Melee'
    weapon_add.magical_modifier = 1
    weapon_add.to_hit_modifier = 2
    weapon_add.handedness = 'Handedness'
    weapon_add.proficiency = 'Proficiency'
    weapon_add.price = 200
    weapon_add.currency_denomination = 'GP'
    weapon_add.weight = 100
    weapon_add.range_ = '0'
    weapon_add.damage_type = 'Damage Type'
    weapon_add.property_ = 'Property'
    weapon_add.quantity = 2
    weapon_add.description = 'Description'

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, weapon_add.add_id)))

    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_has_data(weapon_table))

    row = ut.get_table_row(weapon_table, 'table', values=False)

    assert row[4].text.strip() == '5 ft.'
Exemplo n.º 13
0
def test_delete_weapon(player_wizard, browser):  # noqa
    """As a player, I can delete a weapon."""
    print('As a player, I can delete a weapon.')

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add, 'name', '', browser)
    weapon_add.add.click()

    rows = ut.get_table_rows(weapon_table, 'table', values=False)
    time.sleep(.3)
    rows[0][7].find_element_by_tag_name('a').click()
    rows = ut.get_table_rows(weapon_table, 'table', values=False)

    assert rows[0][0].text == 'Add a new weapon'
Exemplo n.º 14
0
def test_weapon_magical_modifier(player_wizard, browser):  # noqa
    """As a player, if weapon is magical, a badge indicating the modifier is present."""
    print(
        'As a player, if weapon is magical, a badge indicating the modifier is present.'
    )

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    weapon_add.name = 'Add Name'
    weapon_add.magical_modifier = 3

    weapon_add.add.click()
    time.sleep(.5)

    row = ut.get_table_row(weapon_table, 'table', 1)
    assert row.weapon == 'Add Name  + 3'
Exemplo n.º 15
0
def test_weapon_magical_modifier(player_wizard, browser):  # noqa
    """As a player, if weapon is magical, a badge indicating the modifier
       is present."""
    print(('As a player, if weapon is magical, a badge indicating the '
           'modifier is present.'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()

    ut.select_from_autocomplete(weapon_add,
                                'name',
                                browser,
                                has_search_term=False)

    weapon_add.name = 'Add Name'

    weapon_add.magical_modifier = 3

    weapon_add.name.send_keys(Keys.TAB)

    time.sleep(.5)

    # TODO: Pending bug fix will persist magical modifier

    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_has_data(weapon_table))

    row = ut.get_table_row(weapon_table, 'table', 1)

    weapon_name_label = ' '.join(
        [string.strip() for string in row.weapon.split()])

    assert weapon_name_label == 'Add Name + 3'
Exemplo n.º 16
0
def test_melee_ft(player_wizard, browser):  # noqa
    """As a player, if I add a melee weapon, the range of 5 ft. is assigned after I close the modal."""
    print(
        'As a player, if I add a melee weapon, the range of 5 ft. is assigned after I close the modal'
    )

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    weapon_add.name = 'Test name'
    weapon_add.type_ = 'Melee'
    time.sleep(.3)
    weapon_add.add.click()

    time.sleep(.3)

    row = ut.get_table_row(weapon_table, 'table', values=False)
    assert row[4].text == '5 ft.'
Exemplo n.º 17
0
def test_weapon_total_weight(player_wizard, browser):  # noqa
    """As a player, in the weapon table, total weight is calculated
       correctly."""
    print(('As a player, in the armor table, total weight is calculated '
           'correctly'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, weapon_table.add_id)))

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add,
                                'name',
                                browser,
                                has_search_term=False)

    weapon_add.name.send_keys(Keys.TAB)

    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    weapon_table.add.click()

    ut.select_from_autocomplete(weapon_add,
                                'name',
                                browser,
                                has_search_term=False)

    weapon_add.name.send_keys(Keys.TAB)

    weapon_add.add.click()

    time.sleep(1)

    assert weapon_table.total_weight.text.strip() == '8 (lbs)'
Exemplo n.º 18
0
def test_weapon_total_weight(player_wizard, browser):  # noqa
    """As a player, in the weapon table, total weight is calculated correctly."""
    print(
        'As a player, in the armor table, total weight is calculated correctly'
    )

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add, 'name', '', browser)
    weapon_add.add.click()

    time.sleep(.3)

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add, 'name', '', browser)
    weapon_add.add.click()

    assert weapon_table.total_weight.text == '8 (lbs)'
Exemplo n.º 19
0
def test_ranged_ft(player_wizard, browser):  # noqa
    """As a player, if I add a ranged weapon, ft. is appended to the range after I close the modal."""
    print(
        'As a player, if I add a ranged weapon, ft. is appended to the range after I close the modal'
    )

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    weapon_add.name = 'Test name'
    weapon_add.type_ = 'Ranged'
    weapon_add.range_ = '25'
    time.sleep(.3)
    weapon_add.add.click()

    time.sleep(.3)

    row = ut.get_table_row(weapon_table, 'table', values=False)
    assert row[4].text == '25 ft.'
Exemplo n.º 20
0
def test_reach_ft(player_wizard, browser):  # noqa
    """As a player, if I add a weapon with property reach, 5 ft. is added after I close the modal."""
    print(
        'As a player, if I add a weapon with property reach, 5 ft. is added after I close the modal'
    )

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    weapon_add.name = 'Test name'
    weapon_add.type_ = 'Melee'
    weapon_add.property_ = 'Reach'
    weapon_add.range_ = '5'
    weapon_add.add.click()

    time.sleep(.5)

    row = ut.get_table_row(weapon_table, 'table', values=False)
    assert row[4].text == '10 ft.'
Exemplo n.º 21
0
def test_weapon_ogl_pre_pop(player_wizard, browser):  # noqa
    """As a player, if I select from weapon name field, OGL data auto-completes and the remaining fields pre-populate."""
    print(
        'As a player, if I select from weapon name field, OGL data auto-completes and the remaining fields pre-populate.'
    )

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add, 'name', '', browser)
    weapon_add.add.click()

    row = ut.get_table_row(weapon_table, 'table', 1)

    assert row.weapon.strip() == 'Battleaxe'
    assert row.to_hit == '+ 6'
    assert row.damage == '1d8 or 1d10'
    assert row.damage_type == 'Slashing'
    assert row.range == '5 ft.'
    assert row.property == 'Versatile'
    assert row.quantity == '1'
Exemplo n.º 22
0
def test_edit_weapon(player_wizard, browser):  # noqa
    """As a player, I can edit a weapon."""
    print('As a player, I can edit a weapon.')

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_edit = weapon.WeaponEditModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    weapon_tabs = weapon.WeaponModalTabs(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add, 'name', '', browser)
    weapon_add.add.click()

    rows = ut.get_table_rows(weapon_table, 'table', values=False)
    time.sleep(.3)
    rows[0][0].click()
    time.sleep(.3)
    weapon_tabs.edit.click()
    time.sleep(.3)

    weapon_edit.name = 'Edit Name'
    weapon_edit.damage = '1d10'
    weapon_edit.magical_modifier = 2
    weapon_edit.to_hit_modifier = 2
    weapon_edit.type_ = 'Melee'
    weapon_edit.handedness = 'One-Handed'
    weapon_edit.proficiency = 'Simple'
    weapon_edit.price = 200
    weapon_edit.currency_denomination = 'GP'
    weapon_edit.weight = 200
    weapon_edit.range_ = 5
    weapon_edit.damage_type = 'Slashing'
    weapon_edit.property_ = 'Versatile'
    weapon_edit.quantity = 2
    weapon_edit.description = 'Edit Description'

    assert weapon_edit.name.get_attribute('value') == 'Edit Name'
    assert weapon_edit.damage.get_attribute('value') == '1d10'
    assert weapon_edit.magical_modifier.get_attribute('value') == '2'
    assert weapon_edit.to_hit_modifier.get_attribute('value') == '2'
    assert weapon_edit.type_.get_attribute('value') == 'Melee'
    assert weapon_edit.handedness.get_attribute('value') == 'One-Handed'
    assert weapon_edit.proficiency.get_attribute('value') == 'Simple'
    assert weapon_edit.price.get_attribute('value') == '200'
    assert weapon_edit.currency_denomination.get_attribute('value') == 'GP'
    assert weapon_edit.weight.get_attribute('value') == '200'
    assert weapon_edit.range_.get_attribute('value') == '5'
    assert weapon_edit.damage_type.get_attribute('value') == 'Slashing'
    assert weapon_edit.property_.get_attribute('value') == 'Versatile'
    assert weapon_edit.quantity.get_attribute('value') == '2'
    assert weapon_edit.description.get_attribute('value') == 'Edit Description'
    weapon_edit.done.click()
    time.sleep(.3)
    row = ut.get_table_row(weapon_table, 'table', 1)
    assert row.weapon == 'Edit Name  + 2'
    assert row.to_hit == '+ 10'
    assert row.damage == '1d10'
    assert row.damage_type == 'Slashing'
    assert row.range == '5 ft.'
    assert row.property == 'Versatile'
    assert row.quantity == '2'
Exemplo n.º 23
0
def test_weapon_persists(player_wizard, browser):  # noqa
    """As a player, all fields for weapon persist after page refresh."""
    print('As a player, all fields for weapon persist after page refresh.')

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_edit = weapon.WeaponEditModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    weapon_tabs = weapon.WeaponModalTabs(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, weapon_table.add_id)))

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add,
                                'name',
                                browser,
                                has_search_term=False)

    weapon_add.name.send_keys(Keys.TAB)

    weapon_add.add.click()

    browser.refresh()

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_has_data(weapon_table))

    # TODO need a custom wait until to hit is + 6, for some reason it's + 4 at first
    time.sleep(3)

    row = ut.get_table_row(weapon_table, 'table', 1)

    assert row.weapon.strip().strip() == 'Battleaxe'
    assert row.to_hit.strip() == '+ 6'
    assert row.damage.strip() == '1d8 or 1d10'
    assert row.damage_type.strip() == 'Slashing'
    assert row.range.strip() == '5 ft.'
    assert row.property.strip() == 'Versatile'
    assert row.quantity.strip() == '1'

    row = ut.get_table_row(weapon_table, 'table', values=False)
    row[0].click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, weapon_tabs.edit_id)))

    time.sleep(3)

    weapon_tabs.edit.click()

    assert weapon_edit.name.get_attribute('value').strip() == 'Battleaxe'
    assert weapon_edit.damage.get_attribute('value').strip() == '1d8 or 1d10'
    assert weapon_edit.magical_modifier.get_attribute('value').strip() == '0'
    assert weapon_edit.to_hit_modifier.get_attribute('value').strip() == '0'
    assert weapon_edit.type_.get_attribute('value').strip() == 'Melee'
    assert weapon_edit.handedness.get_attribute(
        'value').strip() == 'One or Two Handed'
    assert weapon_edit.proficiency.get_attribute('value').strip() == 'Martial'
    assert weapon_edit.price.get_attribute('value').strip() == '10'
    assert weapon_edit.currency_denomination.get_attribute(
        'value').strip() == 'GP'
    assert weapon_edit.weight.get_attribute('value').strip() == '4'
    assert weapon_edit.range_.get_attribute('value').strip() == ''
    assert weapon_edit.damage_type.get_attribute('value').strip() == 'Slashing'
    assert weapon_edit.property_.get_attribute('value').strip() == 'Versatile'
    assert weapon_edit.quantity.get_attribute('value').strip() == '1'
    assert weapon_edit.description.get_attribute('value').strip() == ''
Exemplo n.º 24
0
def test_weapon_sorting(player_wizard, browser):  # noqa
    """As a player, I can sort the weapon table by clicking on the
       sortable columns."""
    print(('As a player, I can sort the weapon table by clicking on the '
           ' sortable columns'))

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, weapon_table.add_id)))

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add,
                                'name',
                                browser,
                                has_search_term=False)

    weapon_add.name.send_keys(Keys.TAB)

    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_has_data(weapon_table))

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add,
                                'name',
                                browser,
                                has_search_term=False,
                                arrow_down_count=2)

    weapon_add.name.send_keys(Keys.TAB)

    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    weapon_table.weapon_header.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        sorting_arrow_down(weapon_table.weapon_header_sorting_arrow, ))

    rows = ut.get_table_row(weapon_table, 'table', values=False)

    assert rows[0].text.strip() == 'Blowgun'

    weapon_table.to_hit_header.click()
    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        sorting_arrow_up(weapon_table.to_hit_header_sorting_arrow, ))

    rows = ut.get_table_row(weapon_table, 'table', values=False)

    assert rows[1].text.strip() == '+ 6'

    weapon_table.damage_header.click()
    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        sorting_arrow_up(weapon_table.damage_header_sorting_arrow, ))
    rows = ut.get_table_row(weapon_table, 'table', values=False)

    assert rows[2].text.strip() == '1'

    weapon_table.damage_type_header.click()
    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        sorting_arrow_up(weapon_table.damage_type_header_sorting_arrow, ))
    rows = ut.get_table_row(weapon_table, 'table', values=False)

    assert rows[3].text.strip() == 'Piercing'

    weapon_table.damage_type_header.click()
    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        sorting_arrow_down(weapon_table.damage_type_header_sorting_arrow, ))
    rows = ut.get_table_row(weapon_table, 'table', values=False)

    assert rows[3].text.strip() == 'Slashing'

    weapon_table.range_header.click()
    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        sorting_arrow_up(weapon_table.range_header_sorting_arrow, ))
    rows = ut.get_table_row(weapon_table, 'table', values=False)

    assert rows[4].text.strip() == '5 ft.'

    weapon_table.property_header.click()
    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        sorting_arrow_up(weapon_table.property_header_sorting_arrow, ))
    rows = ut.get_table_row(weapon_table, 'table', values=False)

    assert rows[5].text.strip() == 'Ranged, Ammunition, and Loading'

    weapon_table.quantity_header.click()
    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        sorting_arrow_up(weapon_table.quantity_header_sorting_arrow, ))
    rows = ut.get_table_row(weapon_table, 'table', values=False)

    assert rows[6].text.strip() == '1'
Exemplo n.º 25
0
def test_weapon_sorting(player_wizard, browser):  # noqa
    """As a player, I can sort the weapon table by clicking on the sortable columns."""
    print(
        'As a player, I can sort the weapon table by clicking on the sortable columns'
    )

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add, 'name', '', browser)
    weapon_add.add.click()

    time.sleep(.3)
    weapon_table.add.click()
    ut.select_from_autocomplete(weapon_add,
                                'name',
                                '',
                                browser,
                                arrow_down_count=2)
    weapon_add.add.click()

    time.sleep(.3)
    weapon_table.weapon_header.click()
    time.sleep(.3)
    rows = ut.get_table_row(weapon_table, 'table', values=False)
    assert rows[0].text.strip() == 'Blowgun'

    time.sleep(.3)
    weapon_table.to_hit_header.click()
    time.sleep(.3)
    rows = ut.get_table_row(weapon_table, 'table', values=False)
    assert rows[1].text.strip() == '+ 6'

    time.sleep(.3)
    weapon_table.damage_header.click()
    time.sleep(.3)
    rows = ut.get_table_row(weapon_table, 'table', values=False)
    assert rows[2].text.strip() == '1'

    time.sleep(.3)
    weapon_table.damage_type_header.click()
    time.sleep(.3)
    rows = ut.get_table_row(weapon_table, 'table', values=False)
    assert rows[3].text.strip() == 'Piercing'

    time.sleep(.3)
    weapon_table.damage_type_header.click()
    time.sleep(.3)
    rows = ut.get_table_row(weapon_table, 'table', values=False)
    assert rows[3].text.strip() == 'Slashing'

    time.sleep(.3)
    weapon_table.range_header.click()
    time.sleep(.3)
    rows = ut.get_table_row(weapon_table, 'table', values=False)
    assert rows[4].text.strip() == '5 ft.'

    time.sleep(.3)
    weapon_table.property_header.click()
    time.sleep(.3)
    rows = ut.get_table_row(weapon_table, 'table', values=False)
    assert rows[5].text.strip() == 'Ranged, Ammunition, and Loading'

    time.sleep(.3)
    weapon_table.quantity_header.click()
    time.sleep(.3)
    rows = ut.get_table_row(weapon_table, 'table', values=False)
    assert rows[6].text.strip() == '1'
Exemplo n.º 26
0
def test_edit_weapon(player_wizard, browser):  # noqa
    """As a player, I can edit a weapon."""
    print('As a player, I can edit a weapon.')

    weapon_add = weapon.WeaponAddModal(browser)
    weapon_edit = weapon.WeaponEditModal(browser)
    weapon_table = weapon.WeaponTable(browser)
    weapon_tabs = weapon.WeaponModalTabs(browser)
    tabs = Tabs(browser)
    tabs.equipment.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, weapon_table.add_id)))

    weapon_table.add.click()

    ut.select_from_autocomplete(weapon_add,
                                'name',
                                browser,
                                has_search_term=False)

    weapon_add.name.send_keys(Keys.TAB)

    weapon_add.add.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    WebDriverWait(browser,
                  DEFAULT_WAIT_TIME).until(table_has_data(weapon_table))

    rows = ut.get_table_rows(weapon_table, 'table', values=False)
    rows[0][0].click()

    time.sleep(1)

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.element_to_be_clickable((By.ID, weapon_tabs.edit_id)))

    weapon_tabs.edit.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(
        EC.presence_of_element_located((By.ID, weapon_edit.name_id)))

    weapon_edit.name = 'Edit Name'
    weapon_edit.damage = '1d10'
    weapon_edit.magical_modifier = 2
    weapon_edit.to_hit_modifier = 2
    weapon_edit.type_ = 'Melee'
    weapon_edit.handedness = 'One-Handed'
    weapon_edit.proficiency = 'Simple'
    weapon_edit.price = 200
    weapon_edit.currency_denomination = 'GP'
    weapon_edit.weight = 200
    weapon_edit.range_ = 5
    weapon_edit.damage_type = 'Slashing'
    weapon_edit.property_ = 'Versatile'
    weapon_edit.quantity = 2
    weapon_edit.description = 'Edit Description'

    assert weapon_edit.name.get_attribute('value').strip() == 'Edit Name'
    assert weapon_edit.damage.get_attribute('value').strip() == '1d10'
    assert weapon_edit.magical_modifier.get_attribute('value').strip() == '2'
    assert weapon_edit.to_hit_modifier.get_attribute('value').strip() == '2'
    assert weapon_edit.type_.get_attribute('value').strip() == 'Melee'
    assert weapon_edit.handedness.get_attribute(
        'value').strip() == 'One-Handed'
    assert weapon_edit.proficiency.get_attribute('value').strip() == 'Simple'
    assert weapon_edit.price.get_attribute('value').strip() == '200'
    assert weapon_edit.currency_denomination.get_attribute(
        'value').strip() == 'GP'
    assert weapon_edit.weight.get_attribute('value').strip() == '200'
    assert weapon_edit.range_.get_attribute('value').strip() == '5'
    assert weapon_edit.damage_type.get_attribute('value').strip() == 'Slashing'
    assert weapon_edit.property_.get_attribute('value').strip() == 'Versatile'
    assert weapon_edit.quantity.get_attribute('value').strip() == '2'
    assert weapon_edit.description.get_attribute(
        'value').strip() == 'Edit Description'

    weapon_edit.done.click()

    WebDriverWait(browser, DEFAULT_WAIT_TIME).until(modal_finished_closing())

    time.sleep(.5)

    row = ut.get_table_row(weapon_table, 'table', 1)

    weapon_name_label = ' '.join(
        [string.strip() for string in row.weapon.split()])

    assert weapon_name_label == 'Edit Name + 2'
    assert row.to_hit.strip() == '+ 10'
    assert row.damage.strip() == '1d10'
    assert row.damage_type.strip() == 'Slashing'
    assert row.range.strip() == '5 ft.'
    assert row.property.strip() == 'Versatile'
    assert row.quantity.strip() == '2'