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:
parent
25b53df191
commit
32c25f5a36
@ -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)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user