class Test_FieldSet( unittest.TestCase ): def setUp( self ): self.fs = FieldSet([ Field( 'id', IntegerFieldType(), defaultValue = 1, key = True ), Field( 'name', StringFieldType(), defaultValue = 'John doe' ), Field( 'email', StringFieldType(), key = True ), Field( 'birth_date', DateFieldType(), field_final_type = StringFieldType() ), Field( 'favourite_number', FloatFieldType() ), Field( 'created', DateTimeFieldType(), defaultValue = '2013-04-04 18:44:32' ), Field( 'updated', DateTimeFieldType(), defaultValue = '2013-04-04 18:44:32' ) ]) self.fm = FieldMap({ 'id': 0, 'name': 1, 'email': 2, 'birth_date': 3, 'favourite_number': 4, 'created': 5, 'updated': 6, 'not_existing_field_name': 6 }) def test_field_exists( self ): with self.assertRaises( FieldNotExistsError ): self.fs.getField( 'key' ) self.assertTrue( self.fs.hasField( 'id' ) ) self.assertFalse( self.fs.hasField( 'key' ) ) self.assertIsNotNone( self.fs.getField( 'id' ) ) self.assertEqual( len( self.fs.getFields() ), 7 ) def test_field_names( self ): self.assertEqual( self.fs.getFieldNames(), ['id','name','email','birth_date','favourite_number','created','updated'] ) def test_field_manipulation( self ): with self.assertRaises( FieldNotExistsError ): self.fs.deleteField( 'key' ) with self.assertRaises( TypeError ): self.fs.addField( 'key' ) self.assertEqual( len( self.fs.getFields() ), 7 ) self.fs.deleteField( 'birth_date' ) self.assertEqual( len( self.fs.getFields() ), 6 ) self.fs.addField( Field( 'language', StringFieldType() ) ) self.assertEqual( len( self.fs.getFields() ), 7 ) def test_field_key_and_id( self ): self.assertEqual( self.fs.getKeyFieldList(), ['id','email'] ) self.assertEqual( self.fs.getKey(), '1-' ) self.assertEqual( self.fs.getHash(), -1351344983494022270 ) self.assertEqual( self.fs.getID(), '1-:-1351344983494022270' ) self.fs.getField('email').setValue('*****@*****.**') self.assertEqual( self.fs.getKey(), '*****@*****.**' ) self.assertEqual( self.fs.getHash(), -2046033589228461811 ) self.assertEqual( self.fs.getID(), '[email protected]:-2046033589228461811' ) def test_fieldmap( self ): with self.assertRaises( TypeError ): self.fs.setFieldMap( 'fieldmap' ) self.assertIsNotNone( self.fs.getFieldMap() ) self.assertEqual( self.fs.getFieldMap().getRules(), { 'id': 'id', 'name': 'name', 'email': 'email', 'birth_date': 'birth_date', 'favourite_number': 'favourite_number', 'created': 'created', 'updated': 'updated' } ) self.fs.setFieldMap( self.fm ) self.assertEqual( self.fs.getFieldMap().getRules(), self.fm.getRules() ) def test_values( self ): self.assertEqual( self.fs.getValues(), { 'id': 1, 'name': 'John doe', 'email': None, 'favourite_number': None, 'birth_date': None, 'created': datetime.datetime( 2013, 4, 4, 18, 44, 32 ), 'updated': datetime.datetime( 2013, 4, 4, 18, 44, 32 ) } ) self.assertEqual( self.fs.getValuesList(), [ 1, 'John doe', None, None, None, datetime.datetime( 2013, 4, 4, 18, 44, 32 ), datetime.datetime( 2013, 4, 4, 18, 44, 32 ) ] ) def test_values_without_none( self ): self.assertEqual( self.fs.getValues( without_none = True ), { 'id': 1, 'name': 'John doe', 'created': datetime.datetime( 2013, 4, 4, 18, 44, 32 ), 'updated': datetime.datetime( 2013, 4, 4, 18, 44, 32 ) } ) def test_values_class_to_string( self ): self.assertEqual( self.fs.getValues( class_to_string = True ), { 'id': 1, 'name': 'John doe', 'email': None, 'favourite_number': None, 'birth_date': None, 'created': '2013-04-04 18:44:32', 'updated': '2013-04-04 18:44:32' } ) self.assertEqual( self.fs.getValuesList( class_to_string = True ), [ 1, 'John doe', None, None, None, '2013-04-04 18:44:32', '2013-04-04 18:44:32' ] ) def test_values_to_string( self ): self.assertEqual( self.fs.getValues( to_string = True ), { 'id': '1', 'name': 'John doe', 'email': '', 'favourite_number': '', 'birth_date': '', 'created': '2013-04-04 18:44:32', 'updated': '2013-04-04 18:44:32' } ) self.assertEqual( self.fs.getValuesList( to_string = True ), [ '1', 'John doe', '', '', '', '2013-04-04 18:44:32', '2013-04-04 18:44:32' ] ) def test_value_setter( self ): self.fs.setFieldMap( self.fm ) self.fs.setValues([ 2, 'Foo Bar', '*****@*****.**', '1976-05-12', 3.22 ]) self.assertEqual( self.fs.getValuesList(), [ 2, 'Foo Bar', '*****@*****.**', datetime.date( 1976, 5, 12 ), 3.22, None, None ] ) self.fs.setValues([ 2, 'Foo Bar', '*****@*****.**', '1976-05-12', 3.22, None, None, 'test data', 'more test data' ]) self.assertEqual( self.fs.getValuesList(), [ 2, 'Foo Bar', '*****@*****.**', datetime.date( 1976, 5, 12 ), 3.22, None, None ] ) def test_transform( self ): self.fs.setFieldMap( self.fm ) self.fs.getField('name').setTransforms([ TitleTransform ]) self.fs.getField('email').setTransforms([ LowerCaseTransform ]) self.fs.setValues([ 2, 'John doe', '*****@*****.**', '1976-05-12', 3.22 ]) self.assertEqual( self.fs.getField('birth_date').getValue(), datetime.date( 1976, 5, 12 ) ) self.fs.transform() self.assertEqual( self.fs.getField('name').getValue(), 'John Doe' ) self.assertEqual( self.fs.getField('email').getValue(), '*****@*****.**' ) self.assertEqual( self.fs.getField('birth_date').getValue(), '1976-05-12' )
class Test_FieldSet(unittest.TestCase): def setUp(self): self.fs = FieldSet([ Field('id', IntegerFieldType(), defaultValue=1, key=True), Field('name', StringFieldType(), defaultValue='John doe'), Field('email', StringFieldType(), key=True), Field('birth_date', DateFieldType(), field_final_type=StringFieldType()), Field('favourite_number', FloatFieldType()), Field('created', DateTimeFieldType(), defaultValue='2013-04-04 18:44:32'), Field('updated', DateTimeFieldType(), defaultValue='2013-04-04 18:44:32') ]) self.fm = FieldMap({ 'id': 0, 'name': 1, 'email': 2, 'birth_date': 3, 'favourite_number': 4, 'created': 5, 'updated': 6, 'not_existing_field_name': 6 }) def test_field_exists(self): with self.assertRaises(FieldNotExistsError): self.fs.getField('key') self.assertTrue(self.fs.hasField('id')) self.assertFalse(self.fs.hasField('key')) self.assertIsNotNone(self.fs.getField('id')) self.assertEqual(len(self.fs.getFields()), 7) def test_field_names(self): self.assertEqual(self.fs.getFieldNames(), [ 'id', 'name', 'email', 'birth_date', 'favourite_number', 'created', 'updated' ]) def test_field_manipulation(self): with self.assertRaises(FieldNotExistsError): self.fs.deleteField('key') with self.assertRaises(TypeError): self.fs.addField('key') self.assertEqual(len(self.fs.getFields()), 7) self.fs.deleteField('birth_date') self.assertEqual(len(self.fs.getFields()), 6) self.fs.addField(Field('language', StringFieldType())) self.assertEqual(len(self.fs.getFields()), 7) def test_field_key_and_id(self): self.assertEqual(self.fs.getKeyFieldList(), ['id', 'email']) self.assertEqual(self.fs.getKey(), '1-') self.assertEqual(self.fs.getHash(), -1351344983494022270) self.assertEqual(self.fs.getID(), '1-:-1351344983494022270') self.fs.getField('email').setValue('*****@*****.**') self.assertEqual(self.fs.getKey(), '*****@*****.**') self.assertEqual(self.fs.getHash(), -2046033589228461811) self.assertEqual(self.fs.getID(), '[email protected]:-2046033589228461811') def test_fieldmap(self): with self.assertRaises(TypeError): self.fs.setFieldMap('fieldmap') self.assertIsNotNone(self.fs.getFieldMap()) self.assertEqual( self.fs.getFieldMap().getRules(), { 'id': 'id', 'name': 'name', 'email': 'email', 'birth_date': 'birth_date', 'favourite_number': 'favourite_number', 'created': 'created', 'updated': 'updated' }) self.fs.setFieldMap(self.fm) self.assertEqual(self.fs.getFieldMap().getRules(), self.fm.getRules()) def test_values(self): self.assertEqual( self.fs.getValues(), { 'id': 1, 'name': 'John doe', 'email': None, 'favourite_number': None, 'birth_date': None, 'created': datetime.datetime(2013, 4, 4, 18, 44, 32), 'updated': datetime.datetime(2013, 4, 4, 18, 44, 32) }) self.assertEqual(self.fs.getValuesList(), [ 1, 'John doe', None, None, None, datetime.datetime(2013, 4, 4, 18, 44, 32), datetime.datetime(2013, 4, 4, 18, 44, 32) ]) def test_values_without_none(self): self.assertEqual( self.fs.getValues(without_none=True), { 'id': 1, 'name': 'John doe', 'created': datetime.datetime(2013, 4, 4, 18, 44, 32), 'updated': datetime.datetime(2013, 4, 4, 18, 44, 32) }) def test_values_class_to_string(self): self.assertEqual( self.fs.getValues(class_to_string=True), { 'id': 1, 'name': 'John doe', 'email': None, 'favourite_number': None, 'birth_date': None, 'created': '2013-04-04 18:44:32', 'updated': '2013-04-04 18:44:32' }) self.assertEqual(self.fs.getValuesList(class_to_string=True), [ 1, 'John doe', None, None, None, '2013-04-04 18:44:32', '2013-04-04 18:44:32' ]) def test_values_to_string(self): self.assertEqual( self.fs.getValues(to_string=True), { 'id': '1', 'name': 'John doe', 'email': '', 'favourite_number': '', 'birth_date': '', 'created': '2013-04-04 18:44:32', 'updated': '2013-04-04 18:44:32' }) self.assertEqual(self.fs.getValuesList(to_string=True), [ '1', 'John doe', '', '', '', '2013-04-04 18:44:32', '2013-04-04 18:44:32' ]) def test_value_setter(self): self.fs.setFieldMap(self.fm) self.fs.setValues([2, 'Foo Bar', '*****@*****.**', '1976-05-12', 3.22]) self.assertEqual(self.fs.getValuesList(), [ 2, 'Foo Bar', '*****@*****.**', datetime.date(1976, 5, 12), 3.22, None, None ]) self.fs.setValues([ 2, 'Foo Bar', '*****@*****.**', '1976-05-12', 3.22, None, None, 'test data', 'more test data' ]) self.assertEqual(self.fs.getValuesList(), [ 2, 'Foo Bar', '*****@*****.**', datetime.date(1976, 5, 12), 3.22, None, None ]) def test_transform(self): self.fs.setFieldMap(self.fm) self.fs.getField('name').setTransforms([TitleTransform]) self.fs.getField('email').setTransforms([LowerCaseTransform]) self.fs.setValues( [2, 'John doe', '*****@*****.**', '1976-05-12', 3.22]) self.assertEqual( self.fs.getField('birth_date').getValue(), datetime.date(1976, 5, 12)) self.fs.transform() self.assertEqual(self.fs.getField('name').getValue(), 'John Doe') self.assertEqual( self.fs.getField('email').getValue(), '*****@*****.**') self.assertEqual( self.fs.getField('birth_date').getValue(), '1976-05-12')