def test_load_method(self):
        class MyContract(Contract):
            def load_method(self, value, context):
                return value

        field = fields.Method(load_method_name='load_method')
        field.bind('field', MyContract)

        self._load_equal(field, 'value', 'value')
 def test_load_method_passed_is_load_only(self):
     field = fields.Method(load_method_name='method_name')
     self.assertEqual(field.dump_only, False)
     self.assertEqual(field.load_only, True)
    def test_method_missing(self):
        class MyContract(Contract):
            dump_method = 'attribute'

        field = fields.Method(load_method_name='not_found')
        self.assertRaises(ValueError, field.bind, 'field', MyContract)
    def test_method_not_callable(self):
        class MyContract(Contract):
            dump_method = 'attribute'

        field = fields.Method(dump_method_name='dump_method')
        self.assertRaises(ValueError, field.bind, 'field', MyContract)
 def test_without_method(self):
     field = fields.Method()
     self._dump_equal(field, 'value', missing)
     self._load_equal(field, 'value', missing)