예제 #1
0
    def test_dehydrate_resources(self):
        obj = BaseResource(resolwe=self.resolwe_mock, id=1)
        obj2 = DescriptorSchema(resolwe=self.resolwe_mock, slug='foo', id=2)

        self.assertEqual(obj._dehydrate_resources(obj), {'id': 1})
        self.assertEqual(obj._dehydrate_resources([obj]), [{'id': 1}])
        self.assertEqual(obj._dehydrate_resources({'key': obj}),
                         {'key': {
                             'id': 1
                         }})
        self.assertEqual(obj._dehydrate_resources({'key': [obj]}),
                         {'key': [{
                             'id': 1
                         }]})

        self.assertEqual(obj._dehydrate_resources(obj2), {'id': 2})
        self.assertEqual(obj._dehydrate_resources([obj2]), [{'id': 2}])
        self.assertEqual(obj._dehydrate_resources({'key': obj2}),
                         {'key': {
                             'id': 2
                         }})
        self.assertEqual(obj._dehydrate_resources({'key': [obj2]}),
                         {'key': [{
                             'id': 2
                         }]})

        # Imitate creation (obj.id=None) - resource has to be given by slug
        obj = BaseResource(resolwe=self.resolwe_mock, id=None)
        self.assertEqual(obj._dehydrate_resources(obj2), {'slug': 'foo'})
예제 #2
0
    def test_dehydrate_resources(self):
        obj = BaseResource(resolwe=self.resolwe_mock, id=1)
        obj2 = DescriptorSchema(resolwe=self.resolwe_mock, slug="foo", id=2)

        self.assertEqual(obj._dehydrate_resources(obj), {"id": 1})
        self.assertEqual(obj._dehydrate_resources([obj]), [{"id": 1}])
        self.assertEqual(obj._dehydrate_resources({"key": obj}),
                         {"key": {
                             "id": 1
                         }})
        self.assertEqual(obj._dehydrate_resources({"key": [obj]}),
                         {"key": [{
                             "id": 1
                         }]})

        self.assertEqual(obj._dehydrate_resources(obj2), {"id": 2})
        self.assertEqual(obj._dehydrate_resources([obj2]), [{"id": 2}])
        self.assertEqual(obj._dehydrate_resources({"key": obj2}),
                         {"key": {
                             "id": 2
                         }})
        self.assertEqual(obj._dehydrate_resources({"key": [obj2]}),
                         {"key": [{
                             "id": 2
                         }]})

        # Imitate creation (obj.id=None) - resource has to be given by slug
        obj = BaseResource(resolwe=self.resolwe_mock, id=None)
        self.assertEqual(obj._dehydrate_resources(obj2), {"slug": "foo"})
예제 #3
0
    def test_eq(self):
        obj_1 = BaseResource(resolwe=self.resolwe_mock, id=1)
        obj_2 = BaseResource(resolwe=self.resolwe_mock, id=1)
        obj_3 = BaseResource(resolwe=self.resolwe_mock, id=2)
        obj_4 = BaseResolweResource(resolwe=self.resolwe_mock, id=1)

        self.assertEqual(obj_1 == obj_2, True)
        self.assertEqual(obj_1 == obj_3, False)
        self.assertEqual(obj_1 == obj_4, False)
예제 #4
0
    def test_dehydrate_resources(self):
        obj = BaseResource(resolwe=self.resolwe_mock, id=1)

        self.assertEqual(obj._dehydrate_resources(obj), 1)
        self.assertEqual(obj._dehydrate_resources([obj]), [1])
        self.assertEqual(obj._dehydrate_resources({'key': obj}), {'key': 1})
        self.assertEqual(obj._dehydrate_resources({'key': [obj]}), {'key': [1]})
예제 #5
0
 def test_fields(self, attrgetter_mock):
     base_resource = BaseResource(resolwe=self.resolwe_mock)
     base_resource.WRITABLE_FIELDS = ('writable', )
     base_resource.UPDATE_PROTECTED_FIELDS = ('update_protected', )
     base_resource.READ_ONLY_FIELDS = ('read_only', )
     self.assertEqual(base_resource.fields(),
                      ('writable', 'update_protected', 'read_only'))
예제 #6
0
    def test_update_fileds(self):
        resource = BaseResource(resolwe=self.resolwe_mock)
        resource.WRITABLE_FIELDS = ('first_field', )
        resource.first_field = None

        payload = {'first_field': 42}

        resource._update_fields(payload)

        self.assertEqual(resource.first_field, 42)
예제 #7
0
    def test_field_constraints(self, attrgetter_mock):
        base_resource = BaseResource(resolwe=self.resolwe_mock)

        base_resource.WRITABLE_FIELDS = ('writable_scalar', )
        base_resource.READ_ONLY_FIELDS = ('read_only_scalar', )
        base_resource._original_values = {'writable_scalar': None, 'read_only_scalar': None}
        base_resource.writable_scalar = None
        base_resource.read_only_scalar = None

        message = 'Can not change read only field read_only_scalar'
        with six.assertRaisesRegex(self, ValueError, message):
            base_resource.read_only_scalar = 42

        base_resource.writable_scalar = '42'
        self.assertEqual(base_resource.writable_scalar, '42')
예제 #8
0
    def test_dehydrate_resources(self):
        obj = BaseResource(resolwe=self.resolwe_mock, id=1)
        obj2 = DescriptorSchema(resolwe=self.resolwe_mock, slug='foo')

        self.assertEqual(obj._dehydrate_resources(obj), 1)
        self.assertEqual(obj._dehydrate_resources([obj]), [1])
        self.assertEqual(obj._dehydrate_resources({'key': obj}), {'key': 1})
        self.assertEqual(obj._dehydrate_resources({'key': [obj]}),
                         {'key': [1]})

        self.assertEqual(obj._dehydrate_resources(obj2), 'foo')
        self.assertEqual(obj._dehydrate_resources([obj2]), ['foo'])
        self.assertEqual(obj._dehydrate_resources({'key': obj2}),
                         {'key': 'foo'})
        self.assertEqual(obj._dehydrate_resources({'key': [obj2]}),
                         {'key': ['foo']})