コード例 #1
0
    def test_update_updates_calls_cascade_and_returns_updated_document_if_document_is_valid(
            self, after_update):
        _id = Collection.insert_one({'test': 'test1'})
        updated = Collection({'_id': _id, 'test': 'test2'}).update()

        self.assertEqual(updated, {'_id': _id, 'test': 'test2'})
        self.assertEqual(after_update.call_count, 1)
コード例 #2
0
    def test_insert_returns_errors_if_error_ocurred_during_insertion(self):
        Collection.collection.create_index('test', unique=True)
        Collection.insert_one({'test': 'test'})

        errors = Collection({'test': 'test'}).insert()

        self.assertEqual(errors['error_code'], 0)
        self.assertEqual(errors['error_type'], 'PyMongoError')

        Collection.drop_index('test_1')
コード例 #3
0
ファイル: collection.py プロジェクト: caputomarcos/mongorest
    def test_insert_returns_errors_if_error_ocurred_during_insertion(self):
        Collection.collection.create_index('test', unique=True)
        Collection.insert_one({'test': 'test'})

        errors = Collection({'test': 'test'}).insert()

        self.assertEqual(errors['error_code'], 0)
        self.assertEqual(errors['error_type'], 'PyMongoError')

        Collection.drop_index('test_1')
コード例 #4
0
ファイル: document.py プロジェクト: mathvaleriano/mongorest
    def test_save_returns_errors_if_error_ocurred_during_save(self):
        Collection.collection.create_index('test', unique=True)
        Collection.insert_one({'test': 'test'})

        document = Document(Collection)
        document.test = 'test'
        errors = document.save()

        self.assertEqual(errors['error_code'], 0)
        self.assertEqual(errors['error_type'], 'PyMongoError')

        Collection.drop_index('test_1')
コード例 #5
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_sets_correct_errors_on_document_if_length_error(self):
        document = Collection({'test': ['test', 'test']})
        document.schema = {
            'test': {
                'type': 'list',
                'items': [{
                    'type': 'string'
                }]
            }
        }

        self.assertFalse(self.validator.validate_document(document))
        self.assertEqual(
            document.errors,
            DocumentValidationError(collection='Collection',
                                    document=document.document,
                                    schema={
                                        'test': {
                                            'type': 'list',
                                            'items': [{
                                                'type': 'string'
                                            }]
                                        }
                                    },
                                    errors=[
                                        LengthError(collection='Collection',
                                                    field='test',
                                                    length=1)
                                    ]))
コード例 #6
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_type_objectid_sets_error_if_not_objectid(self):
        document = Collection({'test': 1})
        document.schema = {'test': {'type': 'objectid'}}

        self.assertFalse(self.validator.validate_document(document))
        self.assertEqual(self.validator.errors,
                         {'test': 'must be of ObjectId type'})
コード例 #7
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_type_objectid_does_not_set_error_if_type_is_correct(
            self):
        document = Collection({'test': ObjectId()})
        document.schema = {'test': {'type': 'objectid'}}

        self.assertTrue(self.validator.validate_document(document))
        self.assertEqual(self.validator.errors, {})
コード例 #8
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_sets_correct_errors_on_document_if_more_than_one_error(
            self):
        document = Collection({'test2': 1})
        document.schema = {
            'test1': {
                'required': True
            },
            'test2': {
                'type': ['list', 'string']
            },
        }

        self.assertFalse(self.validator.validate_document(document))
        self.assertEqual(
            document.errors,
            DocumentValidationError(
                collection='Collection',
                document=document.document,
                schema={
                    'test1': {
                        'required': True
                    },
                    'test2': {
                        'type': ['list', 'string']
                    }
                },
                errors=[
                    RequiredFieldError(collection='Collection', field='test1'),
                    FieldTypeError(collection='Collection',
                                   field='test2',
                                   field_type='list or string')
                ]))
コード例 #9
0
    def test_insert_returns_errors_if_document_is_not_valid(self):
        Collection.schema = {'test': {'required': True}}
        errors = Collection().insert()
        Collection.schema = {}

        self.assertEqual(
            errors, {
                'error_code':
                21,
                'error_type':
                'DocumentValidationError',
                'error_message':
                'Validation of document from collection \'Collection\' failed.',
                'errors': [
                    {
                        'error_code': 23,
                        'error_type': 'RequiredFieldError',
                        'error_message':
                        'Field \'test\' on collection \'Collection\' is required.',
                        'collection': 'Collection',
                        'field': 'test',
                    },
                ],
                'collection':
                'Collection',
                'schema': {
                    'test': {
                        'required': True
                    }
                },
                'document': {},
            })
コード例 #10
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_returns_false_if_errors_are_found(self):
        document = Collection({'test': 'test'})
        document.schema = {'test': {'type': 'objectid'}}

        self.assertFalse(self.validator.validate_document(document))
        self.assertEqual(self.validator.errors,
                         {'test': 'must be of ObjectId type'})
コード例 #11
0
    def test___setattr____correctly_sets__errors(self):
        document = Collection()

        self.assertEqual(document._errors, {})

        document._errors = {'error': 'error'}

        self.assertEqual(document._errors, {'error': 'error'})
コード例 #12
0
    def test___setattr____correctly_sets__document(self):
        document = Collection()

        self.assertEqual(document._document, {})

        document._document = {'test': 'test'}

        self.assertEqual(document._document, {'test': 'test'})
コード例 #13
0
    def test_delete_returns_before_if_before_update_returns_something(self):
        Collection.before_delete = lambda self: {
            'error_code': 9,
            'error_type': 'RestrictedDelete',
            'error_message': 'Document can not be deleted.'
        }

        Collection({'_id': 1}).insert()
        errors = Collection({'_id': 1}).delete()

        self.assertEqual(
            errors, {
                'error_code': 9,
                'error_type': 'RestrictedDelete',
                'error_message': 'Document can not be deleted.'
            })

        Collection.before_delete = lambda self: None
コード例 #14
0
    def test_update_returns_before_if_before_update_returns_something(self):
        Collection.before_update = lambda self, old: {
            'error_code': 7,
            'error_type': 'NotUnique',
            'error_message': 'Document is not unique.',
        }

        Collection({'_id': 1}).insert()
        errors = Collection({'_id': 1}).update()

        self.assertEqual(
            errors, {
                'error_code': 7,
                'error_type': 'NotUnique',
                'error_message': 'Document is not unique.'
            })

        Collection.before_update = lambda self, old: None
コード例 #15
0
    def test___setattr____correctly_sets_schema(self):
        document = Collection()

        self.assertEqual(document.schema, {})

        document.schema = {'test': {'required': True}}

        self.assertEqual(document.schema, {'test': {'required': True}})

        document.schema = {}
コード例 #16
0
    def test___setattr____correctly_sets_collection(self):
        document = Collection()

        self.assertEqual(document.collection, self.db['collection'])

        document.collection = self.db['test_collection']

        self.assertEqual(document.collection, self.db['test_collection'])

        document.collection = self.db['collection']
コード例 #17
0
    def test___setattr____correctly_sets_allow_unknown(self):
        document = Collection()

        self.assertEqual(document.allow_unknown, True)

        document.allow_unknown = False

        self.assertEqual(document.allow_unknown, False)

        document.allow_unknown = True
コード例 #18
0
ファイル: document.py プロジェクト: mathvaleriano/mongorest
    def test_update_returns_errors_if_error_ocurred_during_save(self):
        Collection.collection.create_index('test', unique=True)
        Collection.insert_one({'test': 'test1'})
        _id = Collection.insert_one({'test': 'test2'})

        errors = Document(Collection, {'_id': _id, 'test': 'test1'}).update()

        errors.pop('error_message')
        self.assertEqual(
            errors,
            {
                'error_code': 0,
                'error_type': 'PyMongoError',
                'operation': 'update',
                'collection': 'Collection',
                'document': {'_id': _id, 'test': 'test1'}
            }
        )

        Collection.drop_index('test_1')
コード例 #19
0
    def test_delete_returns_errors_if_document_not_found(self):
        errors = Collection({'_id': 1}).delete()

        self.assertEqual(
            errors, {
                'error_code': 12,
                'error_type': 'DocumentNotFoundError',
                'error_message':
                '1 is not a valid _id for a document from collection \'Collection\'.',
                'collection': 'Collection',
                '_id': 1,
            })
コード例 #20
0
    def test_delete_returns_errors_if_document_has_no_id(self):
        errors = Collection().delete()

        self.assertEqual(
            errors, {
                'error_code': 11,
                'error_type': 'UnidentifiedDocumentError',
                'error_message':
                'The given document from collection \'Collection\' has no _id.',
                'collection': 'Collection',
                'document': {},
            })
コード例 #21
0
    def test_insert_returns_error_if_restricted_unique(self):
        Collection.before_insert = lambda self: {
            'error_code': 7,
            'error_type': 'NotUnique',
            'error_message': 'Document is not unique.',
        }

        errors = Collection().insert()
        self.assertEqual(
            errors, {
                'error_code': 7,
                'error_type': 'NotUnique',
                'error_message': 'Document is not unique.'
            })

        Collection.before_insert = lambda self: None
コード例 #22
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_sets_correct_errors_on_document_if_unknown_field_error(
            self):
        document = Collection({'test': '1'})
        document.schema = {}
        self.validator.allow_unknown = False

        self.assertFalse(self.validator.validate_document(document))
        self.assertEqual(
            document.errors,
            DocumentValidationError(collection='Collection',
                                    document=document.document,
                                    schema={},
                                    errors=[
                                        UnknownFieldError(
                                            collection='Collection',
                                            field='test')
                                    ]))
コード例 #23
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_sets_correct_errors_on_document_if_read_only_field_error(
            self):
        document = Collection({'test': 'test'})
        document.schema = {'test': {'readonly': True}}

        self.assertFalse(self.validator.validate_document(document))
        self.assertEqual(
            document.errors,
            DocumentValidationError(collection='Collection',
                                    document=document.document,
                                    schema={'test': {
                                        'readonly': True
                                    }},
                                    errors=[
                                        ReadOnlyFieldError(
                                            collection='Collection',
                                            field='test')
                                    ]))
コード例 #24
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_sets_correct_errors_on_document_if_field_type_error(
            self):
        document = Collection({'test': 'test'})
        document.schema = {'test': {'type': 'integer'}}

        self.assertFalse(self.validator.validate_document(document))
        self.assertEqual(
            document.errors,
            DocumentValidationError(collection='Collection',
                                    document=document.document,
                                    schema={'test': {
                                        'type': 'integer'
                                    }},
                                    errors=[
                                        FieldTypeError(collection='Collection',
                                                       field='test',
                                                       field_type='integer')
                                    ]))
コード例 #25
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_sets_correct_errors_on_document_if_max_value_error(self):
        document = Collection({'test': 11})
        document.schema = {'test': {'type': 'integer', 'max': 10}}

        self.assertFalse(self.validator.validate_document(document))
        self.assertEqual(
            document.errors,
            DocumentValidationError(
                collection='Collection',
                document=document.document,
                schema={'test': {
                    'type': 'integer',
                    'max': 10
                }},
                errors=[
                    MaxValueError(collection='Collection',
                                  field='test',
                                  max_value=10)
                ]))
コード例 #26
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_sets_correct_errors_on_document_if_values_not_allowed_error(
            self):
        document = Collection({'test': ['not_test', 'test']})
        document.schema = {'test': {'type': 'list', 'allowed': ['test']}}

        self.assertFalse(self.validator.validate_document(document))
        self.assertEqual(
            document.errors,
            DocumentValidationError(
                collection='Collection',
                document=document.document,
                schema={'test': {
                    'type': 'list',
                    'allowed': ['test']
                }},
                errors=[
                    ValuesNotAllowedError(collection='Collection',
                                          field='test',
                                          values='[\'not_test\']')
                ]))
コード例 #27
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_sets_correct_errors_on_document_if_max_length_error(
            self):
        document = Collection({'test': '1234'})
        document.schema = {'test': {'type': 'string', 'maxlength': 3}}

        self.assertFalse(self.validator.validate_document(document))
        self.assertEqual(
            document.errors,
            DocumentValidationError(
                collection='Collection',
                document=document.document,
                schema={'test': {
                    'type': 'string',
                    'maxlength': 3
                }},
                errors=[
                    MaxLengthError(collection='Collection',
                                   field='test',
                                   max_length=3)
                ]))
コード例 #28
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_sets_correct_errors_on_document_if_regex_match_error(
            self):
        document = Collection({'test': '123456'})
        document.schema = {'test': {'type': 'string', 'regex': '[a-z]+'}}

        self.assertFalse(self.validator.validate_document(document))
        self.assertEqual(
            document.errors,
            DocumentValidationError(
                collection='Collection',
                document=document.document,
                schema={'test': {
                    'type': 'string',
                    'regex': '[a-z]+'
                }},
                errors=[
                    RegexMatchError(collection='Collection',
                                    field='test',
                                    regex='[a-z]+')
                ]))
コード例 #29
0
    def test_update_returns_errors_if_error_ocurred_during_update(self):
        Collection.collection.create_index('test', unique=True)
        Collection.insert_one({'test': 'test1'})

        _id = Collection.insert_one({'test': 'test2'})

        errors = Collection({'_id': _id, 'test': 'test1'}).update()

        errors.pop('error_message')
        self.assertEqual(
            errors, {
                'error_code': 0,
                'error_type': 'PyMongoError',
                'operation': 'update',
                'collection': 'Collection',
                'document': {
                    '_id': _id,
                    'test': 'test1'
                }
            })

        Collection.drop_index('test_1')
コード例 #30
0
 def test_get_attr_raises_exception_if_can_not_find_attr(self):
     with self.assertRaises(AttributeError):
         Collection._()
コード例 #31
0
ファイル: collection.py プロジェクト: caputomarcos/mongorest
    def test_update_updates_calls_cascade_and_returns_updated_document_if_document_is_valid(self, after_update):
        _id = Collection.insert_one({'test': 'test1'})
        updated = Collection({'_id': _id, 'test': 'test2'}).update()

        self.assertEqual(updated, {'_id': _id, 'test': 'test2'})
        self.assertEqual(after_update.call_count, 1)
コード例 #32
0
    def test_init_sets_correct_fields(self):
        document = Collection({'test': 'test'})

        self.assertEqual(document.document, {'test': 'test'})
コード例 #33
0
 def test_get_attr_raises_exception_if_can_not_find_attr(self):
     with self.assertRaises(AttributeError):
         Collection._()
コード例 #34
0
    def test_insert_returns_document_if_is_valid(self):
        document = Collection()

        self.assertEqual(document.insert(), document.document)
コード例 #35
0
ファイル: validator.py プロジェクト: caputomarcos/mongorest
    def test_validate_returns_true_if_no_errors_are_found(self):
        document = Collection()
        document.schema = {}

        self.assertTrue(self.validator.validate_document(document))
        self.assertEqual(self.validator.errors, {})