diff --git a/.travis.yml b/.travis.yml
index ee28ff2..add7187 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,5 @@
-# Config file for automatic testing at travis-ci.org
-
language: python
+sudo: false
python:
- "3.4"
@@ -9,12 +8,13 @@ python:
- "2.6"
- "pypy"
-# command to install dependencies, e.g. pip install -r requirements.txt --use-mirrors
-install:
- - pip install -r requirements.txt
+install:
+ - python setup.py install
+ - pip install -U -r dev-requirements.txt
- pip install coverage coveralls nose responses
-# command to run tests, e.g. python setup.py test
+before_script: flake8 robobrowser
+
script: nosetests --with-coverage --cover-package=robobrowser
after_success: coveralls
diff --git a/HISTORY.rst b/HISTORY.rst
index 6d3885f..dd1a5fd 100644
--- a/HISTORY.rst
+++ b/HISTORY.rst
@@ -3,6 +3,35 @@
History
-------
+0.5.3
+++++++++++++++++++
+* Improve documentation. Thanks tpugsley and rcutmore for improvements!
+* Improve messages in error handling. Thanks again rcutmore!
+* Fix default values for
Roger
John
+
+
+
'''
self.form = Form(self.html)
def test_fields(self):
- keys = set(('vocals', 'guitar', 'drums', 'bass'))
+ keys = set(('vocals', 'guitar', 'drums', 'bass', 'multi', 'submit'))
assert_equal(set(self.form.fields.keys()), keys)
assert_equal(set(self.form.keys()), keys)
@@ -76,7 +81,8 @@ def test_add_field_wrong_type(self):
def test_repr(self):
assert_equal(
repr(self.form),
- ''
+ ''
)
def test_repr_empty(self):
@@ -85,6 +91,61 @@ def test_repr_empty(self):
''
)
+ def test_repr_unicode(self):
+ form = Form(u'')
+ assert_equal(
+ repr(form),
+ ''
+ )
+
+ 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 = Form(html)
+ serialized = form.serialize()
+ assert_false('guitar' in serialized.data)
+
+
+class TestFormMultiSubmit(unittest.TestCase):
+
+ def setUp(self):
+ self.html = '''
+
+ '''
+ 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('')
+ 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)
+
class TestParser(unittest.TestCase):
@@ -169,6 +230,16 @@ def test_parse_select(self):
assert_equal(len(_fields), 1)
assert_true(isinstance(_fields[0], fields.Select))
+ def test_parse_empty_select(self):
+ html = '''
+
+ '''
+ _fields = _parse_fields(BeautifulSoup(html))
+ assert_equal(len(_fields), 1)
+ assert_true(isinstance(_fields[0], fields.Select))
+ assert_equal(_fields[0].value, '')
+ assert_equal(_fields[0].options, [])
+
def test_parse_select_multi(self):
html = '''