1
0
mirror of https://github.com/scrapy/scrapy.git synced 2025-02-25 12:43:41 +00:00

complete the newitem tests

This commit is contained in:
Ismael Carnales 2009-07-09 13:03:54 -03:00
parent 25b53df191
commit 32c25f5a36

View File

@ -3,6 +3,7 @@ import decimal
import unittest
from scrapy.contrib_exp.newitem import *
from scrapy.contrib_exp.newitem.fields import BaseField
class NewItemTest(unittest.TestCase):
@ -25,8 +26,54 @@ class NewItemTest(unittest.TestCase):
i.names = ['name1', 'name2']
assert i.names == ['name1', 'name2']
def test_invalid_field(self):
class TestItem(Item):
pass
i = TestItem()
def set_invalid_field():
i.field = 'text'
self.assertRaises(AttributeError, set_invalid_field)
def get_invalid_field():
return i.field
self.assertRaises(AttributeError, get_invalid_field)
def test_default_value(self):
class TestItem(Item):
name = StringField(default='John')
i = TestItem()
assert i.name == 'John'
def test_topython_iter(self):
class TestItem(Item):
name = StringField()
i = TestItem()
i.name = ('John', 'Doe')
assert i.name == 'John Doe'
def test_repr(self):
class TestItem(Item):
name = StringField()
i = TestItem()
i.name = 'John Doe'
assert i.__repr__() == "TestItem({'name': 'John Doe'})"
class NewItemFieldsTest(unittest.TestCase):
def test_base_field(self):
f = BaseField()
assert f.default == None
assert f.assign(1) == 1
assert f.to_python(1) == 1
def test_boolean_field(self):
class TestItem(Item):
field = BooleanField()
@ -35,11 +82,13 @@ class NewItemFieldsTest(unittest.TestCase):
i.field = True
assert i.field == True
i.field = 1
assert i.field == True
i.field = False
assert i.field == False
i.field = 0
assert i.field == False
@ -49,13 +98,27 @@ class NewItemFieldsTest(unittest.TestCase):
i = TestItem()
today = datetime.date.today()
i.field = today
assert i.field == today
d_today = datetime.date.today()
i.field = d_today
assert i.field == d_today
dt_today = datetime.datetime.today()
i.field = dt_today
assert i.field == dt_today.date()
i.field = '2009-05-21'
assert i.field == datetime.date(2009, 5, 21)
def set_invalid_format():
i.field = '21-05-2009'
self.assertRaises(ValueError, set_invalid_format)
def set_invalid_date():
i.field = '2009-05-51'
self.assertRaises(ValueError, set_invalid_date)
def test_datetime_field(self):
class TestItem(Item):
field = DateTimeField()
@ -70,6 +133,9 @@ class NewItemFieldsTest(unittest.TestCase):
i.field = d_today
assert i.field == datetime.datetime(d_today.year, d_today.month,
d_today.day)
i.field = '2009-05-21 11:08:10.100'
assert i.field == datetime.datetime(2009, 5, 21, 11, 8, 10, 100)
i.field = '2009-05-21 11:08:10'
assert i.field == datetime.datetime(2009, 5, 21, 11, 8, 10)
@ -80,6 +146,21 @@ class NewItemFieldsTest(unittest.TestCase):
i.field = '2009-05-21'
assert i.field == datetime.datetime(2009, 5, 21)
def set_invalid_usecs():
i.field = '2009-05-21 11:08:10.usecs'
self.assertRaises(ValueError, set_invalid_usecs)
def set_invalid_format():
i.field = '21-05-2009'
self.assertRaises(ValueError, set_invalid_format)
def set_invalid_date():
i.field = '2009-05-51'
self.assertRaises(ValueError, set_invalid_date)
def test_decimal_field(self):
class TestItem(Item):
field = DecimalField()
@ -91,6 +172,11 @@ class NewItemFieldsTest(unittest.TestCase):
i.field = '3.14'
assert i.field == decimal.Decimal('3.14')
def set_invalid_value():
i.field = 'text'
self.assertRaises(ValueError, set_invalid_value)
def test_float_field(self):
class TestItem(Item):
@ -103,6 +189,11 @@ class NewItemFieldsTest(unittest.TestCase):
i.field = '3.14'
assert i.field == 3.14
def set_invalid_value():
i.field = 'text'
self.assertRaises(ValueError, set_invalid_value)
def test_integer_field(self):
class TestItem(Item):
@ -116,7 +207,12 @@ class NewItemFieldsTest(unittest.TestCase):
i.field = '3'
assert i.field == 3
def test_sting_field(self):
def set_invalid_value():
i.field = 'text'
self.assertRaises(ValueError, set_invalid_value)
def test_string_field(self):
class TestItem(Item):
field = StringField()
@ -125,3 +221,8 @@ class NewItemFieldsTest(unittest.TestCase):
i.field = 'hello'
assert i.field == 'hello'
def set_invalid_value():
i.field = 3
self.assertRaises(ValueError, set_invalid_value)