class TestFormMultiSubmit(unittest.TestCase): def setUp(self): self.html = ''' <form> <input type="submit" name="submit1" value="value1" /> <input type="submit" name="submit2" value="value2" /> <button type="submit" name="submit3" value="value3" /> <button type="submit" name="submit4" value="value4" /> </form> ''' self.form = Form(self.html) def test_serialize_multi_no_submit_specified(self): assert_raises( exceptions.InvalidSubmitError, lambda: self.form.serialize() ) def test_serialize_multi_wrong_submit_specified(self): fake_submit = fields.Submit('<input type="submit" name="fake" />') assert_raises( exceptions.InvalidSubmitError, lambda: self.form.serialize(submit=fake_submit) ) def test_serialize_multi(self): submit = self.form.submit_fields['submit1'] serialized = self.form.serialize(submit) assert_equal(serialized.data['submit1'], 'value1') assert_false('submit2' in serialized.data) assert_false('submit3' in serialized.data) assert_false('submit4' in serialized.data)
def setUp(self): self.html = ''' <form> <input type="submit" name="submit1" value="value1" /> <input type="submit" name="submit2" value="value2" /> </form> ''' self.form = Form(self.html)
class TestForm(unittest.TestCase): def setUp(self): self.html = ''' <form> <input name="vocals" /> <input name="guitar" type="file" /> <select name="drums"> <option value="roger">Roger<br /> <option value="john">John<br /> </select> <input type="radio" name="bass" value="Roger">Roger<br /> <input type="radio" name="bass" value="John">John<br /> <input name="multi" value="multi1" /> <input name="multi" value="multi2" /> <input type="submit" name="submit" value="submit" /> </form> ''' self.form = Form(self.html) def test_fields(self): keys = set(('vocals', 'guitar', 'drums', 'bass', 'multi', 'submit')) assert_equal(set(self.form.fields.keys()), keys) assert_equal(set(self.form.keys()), keys) def test_add_field(self): html = '<input name="instrument" />' field = fields.Input(html) self.form.add_field(field) assert_true('instrument' in self.form.fields) def test_add_field_wrong_type(self): assert_raises(ValueError, lambda: self.form.add_field('freddie')) def test_repr(self): assert_equal( repr(self.form), '<RoboForm vocals=, guitar=, drums=roger, bass=, ' 'multi=multi1, multi=multi2, submit=submit>' ) def test_repr_empty(self): assert_equal( repr(Form('<form></form>')), '<RoboForm>' ) def test_repr_unicode(self): form = Form(u'<form><input name="drüms" value="bäss" /></form>') assert_equal( repr(form), '<RoboForm drüms=bäss>' ) def test_serialize(self): serialized = self.form.serialize() assert_equal(serialized.data.getlist('multi'), ['multi1', 'multi2']) assert_equal(serialized.data['submit'], 'submit')
def test_serialize_skips_disabled(self): html = ''' <form> <input name="vocals" /> <input name="guitar" disabled /> <input type="submit" name="submit" value="submit" /> </form> ''' form = Form(html) serialized = form.serialize() assert_false('guitar' in serialized.data)
def are_forms_equal(first: Form, second: Form) -> bool: first_keys = set(first.keys()) second_keys = set(second.keys()) if first_keys != second_keys: return False for k in first_keys: if first[k].value != second[k].value: return False return True
def setUp(self): self.html = ''' <form> <input name="vocals" /> <input name="guitar" type="file" /> <select name="drums"> <option value="roger">Roger<br /> <option value="john">John<br /> </select> <input type="radio" name="bass" value="Roger">Roger<br /> <input type="radio" name="bass" value="John">John<br /> </form> ''' self.form = Form(self.html)
class TestForm(unittest.TestCase): def setUp(self): self.html = ''' <form> <input name="vocals" /> <input name="guitar" type="file" /> <select name="drums"> <option value="roger">Roger<br /> <option value="john">John<br /> </select> <input type="radio" name="bass" value="Roger">Roger<br /> <input type="radio" name="bass" value="John">John<br /> <input name="multi" value="multi1" /> <input name="multi" value="multi2" /> <input type="submit" name="submit" value="submit" /> </form> ''' self.form = Form(self.html) def test_fields(self): keys = set(('vocals', 'guitar', 'drums', 'bass', 'multi', 'submit')) assert_equal(set(self.form.fields.keys()), keys) assert_equal(set(self.form.keys()), keys) def test_add_field(self): html = '<input name="instrument" />' field = fields.Input(html) self.form.add_field(field) assert_true('instrument' in self.form.fields) def test_add_field_wrong_type(self): assert_raises(ValueError, lambda: self.form.add_field('freddie')) def test_repr(self): assert_equal( repr(self.form), '<RoboForm vocals=, guitar=, drums=roger, bass=, ' 'multi=multi1, multi=multi2, submit=submit>') def test_repr_empty(self): assert_equal(repr(Form('<form></form>')), '<RoboForm>') def test_repr_unicode(self): form = Form(u'<form><input name="drüms" value="bäss" /></form>') assert_equal(repr(form), '<RoboForm drüms=bäss>') def test_serialize(self): serialized = self.form.serialize() assert_equal(serialized.data.getlist('multi'), ['multi1', 'multi2']) assert_equal(serialized.data['submit'], 'submit')
class TestForm(unittest.TestCase): def setUp(self): self.html = ''' <form> <input name="vocals" /> <input name="guitar" type="file" /> <select name="drums"> <option value="roger">Roger<br /> <option value="john">John<br /> </select> <input type="radio" name="bass" value="Roger">Roger<br /> <input type="radio" name="bass" value="John">John<br /> </form> ''' self.form = Form(self.html) def test_fields(self): keys = set(('vocals', 'guitar', 'drums', 'bass')) assert_equal(set(self.form.fields.keys()), keys) assert_equal(set(self.form.keys()), keys) def test_repr(self): assert_equal( repr(self.form), '<RoboForm vocals=, guitar=, drums=roger, bass=>' ) def test_repr_empty(self): assert_equal( repr(Form('<form></form>')), '<RoboForm>' )
class TestForm(unittest.TestCase): def setUp(self): self.html = ''' <form> <input name="vocals" /> <input name="guitar" type="file" /> <select name="drums"> <option value="roger">Roger<br /> <option value="john">John<br /> </select> <input type="radio" name="bass" value="Roger">Roger<br /> <input type="radio" name="bass" value="John">John<br /> </form> ''' self.form = Form(self.html) def test_fields(self): keys = set(('vocals', 'guitar', 'drums', 'bass')) assert_equal(set(self.form.fields.keys()), keys) assert_equal(set(self.form.keys()), keys) def test_repr(self): assert_equal(repr(self.form), '<RoboForm vocals=, guitar=, drums=roger, bass=>') def test_repr_empty(self): assert_equal(repr(Form('<form></form>')), '<RoboForm>')
def get_forms(self, *args, **kwargs): """Find forms by standard BeautifulSoup arguments. :args: Positional arguments to `BeautifulSoup::find_all` :args: Keyword arguments to `BeautifulSoup::find_all` :return: List of BeautifulSoup tags """ forms = self.find_all(_form_ptn, *args, **kwargs) return [Form(form) for form in forms]
def get_forms(self, *args, **kwargs): """Find forms by standard BeautifulSoup arguments. :return: List of BeautifulSoup tags """ forms = self.find_all(_form_ptn, *args, **kwargs) return [ Form(form) for form in forms ]
def get_form(self, id=None, *args, **kwargs): """Find form by ID, as well as standard BeautifulSoup arguments. :param str id: Form ID :return: BeautifulSoup tag if found, else None """ if id: kwargs['id'] = id form = self.find(_form_ptn, *args, **kwargs) if form is not None: return Form(form)
class TestFormMultiSubmit(unittest.TestCase): def setUp(self): self.html = ''' <form> <input type="submit" name="submit1" value="value1" /> <input type="submit" name="submit2" value="value2" /> </form> ''' self.form = Form(self.html) def test_serialize_multi_no_submit_specified(self): assert_raises(exceptions.InvalidSubmitError, lambda: self.form.serialize()) def test_serialize_multi_wrong_submit_specified(self): fake_submit = fields.Submit('<input type="submit" name="fake" />') assert_raises(exceptions.InvalidSubmitError, lambda: self.form.serialize(submit=fake_submit)) def test_serialize_multi(self): submit = self.form.submit_fields['submit1'] serialized = self.form.serialize(submit) assert_equal(serialized.data['submit1'], 'value1') assert_false('submit2' in serialized.data)
def test_method(self): form = Form('<form method="put"></form>') assert_equal(form.method, 'put')
def __init__(self, browser, selector): self.browser = browser self.form_el = self.browser.select(selector)[0] self.form = Form(self.form_el)
def setUp(self): self.form = Form('<form></form>')
def test_repr_unicode(self): form = Form(u'<form><input name="drüms" value="bäss" /></form>') assert_equal(repr(form), '<RoboForm drüms=bäss>')
def test_repr_empty(self): assert_equal(repr(Form('<form></form>')), '<RoboForm>')
def test_action(self): form = Form('<form action="/"></form>') assert_equal(form.action, '/')