Example #1
0
 def test_w_mixed(self):
     from guillotina.schema import Text
     from guillotina.schema import Bytes
     from guillotina.schema import Int
     from guillotina.schema import Float
     from guillotina.schema import Decimal
     self.assertEqual(self._callFUT([Text(), 0]), False)
     self.assertEqual(
         self._callFUT([Text(),
                        Bytes(),
                        Int(),
                        Float(),
                        Decimal(), 0]), False)
Example #2
0
 def test_w_fields(self):
     from guillotina.schema import Text
     from guillotina.schema import Bytes
     from guillotina.schema import Int
     from guillotina.schema import Float
     from guillotina.schema import Decimal
     self.assertEqual(self._callFUT([Text()]), True)
     self.assertEqual(self._callFUT([Bytes()]), True)
     self.assertEqual(self._callFUT([Int()]), True)
     self.assertEqual(self._callFUT([Float()]), True)
     self.assertEqual(self._callFUT([Decimal()]), True)
     self.assertEqual(
         self._callFUT([Text(), Bytes(),
                        Int(), Float(),
                        Decimal()]), True)
Example #3
0
    def test_w_read_and_write_accessors(self):
        from zope.interface import Interface
        from guillotina.schema import Text
        field = Text(title='Hmm')

        class IFoo(Interface):
            getter, setter = self._callFUT(field)

        getter = IFoo['getter']
        self.assertEqual(getter.__name__, 'getter')
        self.assertEqual(getter.getSignatureString(), '()')
        info = getter.getSignatureInfo()
        self.assertEqual(info['positional'], ())
        self.assertEqual(info['required'], ())
        self.assertEqual(info['optional'], ())
        self.assertEqual(info['varargs'], None)
        self.assertEqual(info['kwargs'], None)
        setter = IFoo['setter']
        self.assertEqual(setter.__name__, 'setter')
        self.assertEqual(setter.getSignatureString(), '(newvalue)')
        info = setter.getSignatureInfo()
        self.assertEqual(info['positional'], ('newvalue', ))
        self.assertEqual(info['required'], ('newvalue', ))
        self.assertEqual(info['optional'], ())
        self.assertEqual(info['varargs'], None)
        self.assertEqual(info['kwargs'], None)
 def test_field_event(self):
     # fieldproperties are everywhere including in field themselfs
     # so event are triggered
     from guillotina.schema import Text
     from guillotina.component.event import sync_subscribers
     from guillotina.schema.fieldproperty import FieldUpdatedEvent
     log = []
     sync_subscribers.append(log.append)
     self.assertEqual(log, [])
     field = Text(
         __name__='testing',
         description='DESCRIPTION',
         default='DEFAULT',
         readonly=True,
         required=True,
     )
     self.assertEqual(len(log), 6)
     # these are fieldproperties in the field
     self.assertEqual(
         [ev.field.__name__ for ev in log],
         ['min_length', 'max_length', 'title', 'description', 'required', 'readonly'])
     event = log[0]
     self.assertTrue(isinstance(event, FieldUpdatedEvent))
     self.assertEqual(event.inst, field)
     self.assertEqual(event.old_value, 0)
     self.assertEqual(event.new_value, 0)
    def test_field_event_update(self):
        from guillotina.schema import Text
        from guillotina.component.event import sync_subscribers
        from guillotina.schema.fieldproperty import FieldUpdatedEvent
        field = Text(
            __name__='testing',
            description='DESCRIPTION',
            default='DEFAULT',
            required=True,
        )
        prop = self._makeOne(field=field)

        class Foo(object):
            testing = prop
        foo = Foo()

        log = []
        sync_subscribers.append(log.append)
        foo.testing = 'Bar'
        foo.testing = 'Foo'
        self.assertEqual(len(log), 2)
        event = log[1]
        self.assertTrue(isinstance(event, FieldUpdatedEvent))
        self.assertEqual(event.inst, foo)
        self.assertEqual(event.field, field)
        self.assertEqual(event.old_value, 'Bar')
        self.assertEqual(event.new_value, 'Foo')
Example #6
0
    def test_w_read_and_write_accessors(self):
        from zope.interface import Interface
        from guillotina.schema import Text

        field = Text(title="Hmm")

        class IFoo(Interface):
            getter, setter = self._callFUT(field)

        getter = IFoo["getter"]  # type: ignore
        self.assertEqual(getter.__name__, "getter")
        self.assertEqual(getter.getSignatureString(), "()")
        info = getter.getSignatureInfo()
        self.assertEqual(info["positional"], ())
        self.assertEqual(info["required"], ())
        self.assertEqual(info["optional"], ())
        self.assertEqual(info["varargs"], None)
        self.assertEqual(info["kwargs"], None)
        setter = IFoo["setter"]  # type: ignore
        self.assertEqual(setter.__name__, "setter")
        self.assertEqual(setter.getSignatureString(), "(newvalue)")
        info = setter.getSignatureInfo()
        self.assertEqual(info["positional"], ("newvalue", ))
        self.assertEqual(info["required"], ("newvalue", ))
        self.assertEqual(info["optional"], ())
        self.assertEqual(info["varargs"], None)
        self.assertEqual(info["kwargs"], None)
 def _makeOne(self, field=None, name=None):
     from guillotina.schema import Text
     if field is None:
         field = Text(__name__='testing')
     if name is None:
         return self._getTargetClass()(field)
     return self._getTargetClass()(field, name)
Example #8
0
 def test_ctor_not_created_inside_interface(self):
     from guillotina.schema import Text
     field = Text(title='Hmm')
     wrapped = self._makeOne(field)
     self.assertTrue(wrapped.field is field)
     self.assertEqual(wrapped.__name__, '')  # __name__ set when in iface
     self.assertEqual(wrapped.__doc__, 'get Hmm')
Example #9
0
    def test_ctor_created_inside_interface(self):
        from zope.interface import Interface
        from guillotina.schema import Text
        field = Text(title='Hmm')

        class IFoo(Interface):
            getter = self._makeOne(field)

        getter = IFoo['getter']
        self.assertEqual(getter.__name__, 'getter')
        self.assertEqual(getter.__doc__, 'get Hmm')
Example #10
0
 def test_w_normal_fields(self):
     from guillotina.schema import Text
     from guillotina.schema import Bytes
     from guillotina.schema import Int
     from guillotina.schema import Float
     from guillotina.schema import Decimal
     self.assertEqual(self._callFUT(Text()), True)
     self.assertEqual(self._callFUT(Bytes()), True)
     self.assertEqual(self._callFUT(Int()), True)
     self.assertEqual(self._callFUT(Float()), True)
     self.assertEqual(self._callFUT(Decimal()), True)
Example #11
0
    def test_setValue(self):
        from guillotina.schema import Text

        class Foo(object):
            pass

        foo = Foo()
        prop = self._makeOne()
        field = Text(__name__="testing")
        prop.setValue(foo, field, "123")
        self.assertEqual(foo.testing, "123")
Example #12
0
    def test_queryValue_miss(self):
        from guillotina.schema import Text

        class Foo(object):
            pass

        foo = Foo()
        prop = self._makeOne()
        field = Text(__name__="testing")
        default = object()
        value = prop.queryValue(foo, field, default)
        self.assertTrue(value is default)
Example #13
0
    def test_getValue_hit(self):
        from guillotina.schema import Text

        class Foo(object):
            pass

        foo = Foo()
        foo.testing = "123"
        prop = self._makeOne()
        field = Text(__name__="testing")
        value = prop.getValue(foo, field)
        self.assertEqual(value, "123")
Example #14
0
    def test_getValue_miss(self):
        from guillotina.schema import Text
        from guillotina.schema.fieldproperty import _marker

        class Foo(object):
            pass

        foo = Foo()
        prop = self._makeOne()
        field = Text(__name__="testing")
        value = prop.getValue(foo, field)
        self.assertTrue(value is _marker)
Example #15
0
 def test___provides___w_field_w_provides(self):
     from zope.interface import implementedBy
     from zope.interface import providedBy
     from guillotina.schema import Text
     field = Text()
     field_provides = list(providedBy(field))
     wrapped = self._makeOne(field)
     wrapped_provides = list(providedBy(wrapped))
     self.assertEqual(wrapped_provides[:len(field_provides)],
                      list(providedBy(field)))
     for iface in list(implementedBy(self._getTargetClass())):
         self.assertTrue(iface in wrapped_provides)
    def test___get___from_instance_hit(self):
        from guillotina.schema import Text
        field = Text(__name__='testing')
        prop = self._makeOne(field, name='other')

        class Foo(object):
            testing = prop

        foo = Foo()
        foo.__dict__['__st_testing_st'] = '456'
        foo.other = '123'
        self.assertEqual(foo.testing, '456')
 def test_ctor_defaults(self):
     from guillotina.schema import Text
     field = Text(__name__='testing')
     cname = self._getTargetClass().__name__
     prop = self._makeOne(field)
     self.assertTrue(getattr(prop, '_%s__field' % cname) is field)
     self.assertEqual(getattr(prop, '_%s__name' % cname), 'testing')
     self.assertEqual(prop.__name__, 'testing')
     self.assertEqual(prop.description, field.description)
     self.assertEqual(prop.default, field.default)
     self.assertEqual(prop.readonly, field.readonly)
     self.assertEqual(prop.required, field.required)
Example #18
0
    def test_ctor_created_inside_interface(self):
        from zope.interface import Interface
        from guillotina.schema import Text

        field = Text(title="Hmm")

        class IFoo(Interface):
            getter = self._makeOne(field)

        getter = IFoo["getter"]  # type: ignore
        self.assertEqual(getter.__name__, "getter")
        self.assertEqual(getter.__doc__, "get Hmm")
Example #19
0
    def test___get___from_instance_hit(self):
        from guillotina.schema import Text

        field = Text(__name__="testing")
        prop = self._makeOne(field, name="other")

        class Foo(object):
            testing = prop

        foo = Foo()
        foo.__dict__["__st_testing_st"] = "456"
        foo.other = "123"
        self.assertEqual(foo.testing, "456")
    def test_queryValue_hit(self):
        from guillotina.schema import Text

        class Foo(object):
            pass

        foo = Foo()
        foo.testing = '123'
        prop = self._makeOne()
        field = Text(__name__='testing')
        default = object()
        value = prop.queryValue(foo, field, default)
        self.assertEqual(value, '123')
Example #21
0
    def test_query_value_without_default(self):
        from guillotina.schema import Text

        field = Text(__name__="testing", description="DESCRIPTION", readonly=True, required=True)

        prop = self._makeOne(field=field)

        class Foo(object):
            testing = prop

        foo = Foo()
        # field initialize its default to None if it hasn't any default
        # it should be guillotina.schema.NO_VALUE as 'None' has another semantic
        self.assertEqual(prop.queryValue(foo, "test"), None)
Example #22
0
    def test_ctor_explicit(self):
        from guillotina.schema import Text

        field = Text(
            __name__="testing", description="DESCRIPTION", default="DEFAULT", readonly=True, required=True
        )
        cname = self._getTargetClass().__name__
        prop = self._makeOne(field, name="override")
        self.assertTrue(getattr(prop, "_%s__field" % cname) is field)
        self.assertEqual(getattr(prop, "_%s__name" % cname), "override")
        self.assertEqual(prop.description, field.description)
        self.assertEqual(prop.default, field.default)
        self.assertEqual(prop.readonly, field.readonly)
        self.assertEqual(prop.required, field.required)
Example #23
0
class IRole(Interface):
    """A role object."""

    id = TextLine(title=u"Id",
                  description=u"Id as which this role will be known and used.",
                  readonly=True,
                  required=True)

    title = TextLine(title=u"Title",
                     description=u"Provides a title for the role.",
                     required=True)

    description = Text(title=u"Description",
                       description=u"Provides a description for the role.",
                       required=False)
Example #24
0
    def test_ctor_defaults(self):
        from guillotina.schema import Text

        field = Text(__name__="testing")
        cname = self._getTargetClass().__name__
        prop = self._makeOne(field)
        self.assertTrue(isinstance(prop.field, field.__class__))
        self.assertFalse(prop.field is field)
        self.assertEqual(prop.field.__name__, "__st_testing_st")
        self.assertEqual(prop.__name__, "__st_testing_st")
        self.assertEqual(getattr(prop, "_%s__name" % cname), "testing")
        self.assertEqual(prop.description, field.description)
        self.assertEqual(prop.default, field.default)
        self.assertEqual(prop.readonly, field.readonly)
        self.assertEqual(prop.required, field.required)
Example #25
0
    def test_set_readonly(self):
        from zope.interface import Interface
        from guillotina.schema import Text
        field = Text(readonly=True)

        class IFoo(Interface):
            getter = self._makeOne(field)

        getter = IFoo['getter']

        class Foo(object):
            def getter(self):
                return '123'

        self.assertRaises(TypeError, getter.set, Foo(), '456')
Example #26
0
class IRole(Interface):  # pylint: disable=E0239
    """A role object."""

    id = TextLine(title='Id',
                  description='Id as which this role will be known and used.',
                  readonly=True,
                  required=True)

    title = TextLine(title='Title',
                     description='Provides a title for the role.',
                     required=True)

    description = Text(title='Description',
                       description='Provides a description for the role.',
                       required=False)
Example #27
0
    def test_query_value_with_default(self):
        from guillotina.schema import Text

        field = Text(
            __name__="testing", description="DESCRIPTION", default="DEFAULT", readonly=True, required=True
        )

        prop = self._makeOne(field=field)

        class Foo(object):
            testing = prop

        foo = Foo()
        self.assertEqual(prop.queryValue(foo, "test"), "DEFAULT")
        foo.testing = "NO"
        self.assertEqual(prop.queryValue(foo, "test"), "NO")
Example #28
0
class IPermission(Interface):
    """A permission object."""

    id = TextLine(
        title=_("Id"),
        description=_("Id as which this permission will be known and used."),
        readonly=True,
        required=True)

    title = TextLine(title=_("Title"),
                     description=_("Provides a title for the permission."),
                     required=True)

    description = Text(
        title=_("Description"),
        description=_("Provides a description for the permission."),
        required=False)
Example #29
0
class IPermission(Interface):  # pylint: disable=E0239
    """A permission object."""

    id = TextLine(
        title=_('Id'),
        description=_('Id as which this permission will be known and used.'),
        readonly=True,
        required=True)

    title = TextLine(title=_('Title'),
                     description=_('Provides a title for the permission.'),
                     required=True)

    description = Text(
        title=_('Description'),
        description=_('Provides a description for the permission.'),
        required=False)
 def test_ctor_explicit(self):
     from guillotina.schema import Text
     field = Text(
         __name__='testing',
         description='DESCRIPTION',
         default='DEFAULT',
         readonly=True,
         required=True,
     )
     cname = self._getTargetClass().__name__
     prop = self._makeOne(field, name='override')
     self.assertTrue(getattr(prop, '_%s__field' % cname) is field)
     self.assertEqual(getattr(prop, '_%s__name' % cname), 'override')
     self.assertEqual(prop.description, field.description)
     self.assertEqual(prop.default, field.default)
     self.assertEqual(prop.readonly, field.readonly)
     self.assertEqual(prop.required, field.required)