Exemplo n.º 1
0
    def test_build_object__if_index_has_changed__should_return_object(
            self, left_schema):
        right_schema = Schema({
            'Document1':
            Schema.Document(
                {
                    'field1': {
                        'param11': 'schemavalue11',
                        'param12': 'schemavalue12'
                    },
                    'field2': {
                        'param21': 'schemavalue21',
                        'param22': 'schemavalue22'
                    },
                },
                parameters={'collection': 'document1'},
                indexes={
                    'index1': {
                        'fields': [('field1', pymongo.ASCENDING)]
                    },
                    'index2': {
                        'fields': [('field1', pymongo.ASCENDING),
                                   ('field2', pymongo.DESCENDING)],
                        'name':
                        'index2',
                        'sparse':
                        False
                    }
                }),
            '~EmbeddedDocument2':
            Schema.Document({
                'field1': {
                    'param3': 'schemavalue3'
                },
                'field2': {
                    'param4': 'schemavalue4'
                },
            })
        })

        res = AlterIndex.build_object('Document1', 'index2', left_schema,
                                      right_schema)

        assert isinstance(res, AlterIndex)
        assert res.document_type == 'Document1'
        assert res.index_name == 'index2'
        assert res.parameters == {
            'fields': [('field1', pymongo.ASCENDING),
                       ('field2', pymongo.DESCENDING)],
            'name':
            'index2',
            'sparse':
            False,
        }
Exemplo n.º 2
0
    def test_build_object__if_document_not_in_both_schemas__should_return_none(
            self, left_schema, document_type):
        right_schema = Schema({
            'Document_new':
            Schema.Document(
                {
                    'field1': {
                        'param11': 'schemavalue11',
                        'param12': 'schemavalue12'
                    },
                    'field2': {
                        'param21': 'schemavalue21',
                        'param22': 'schemavalue22'
                    },
                    'field3': {
                        'param31': 'schemavalue31',
                        'param32': 'schemavalue32'
                    },
                },
                parameters={'collection': 'document1'},
                indexes={
                    'index1': {
                        'fields': [('field1', pymongo.ASCENDING)]
                    },
                    'index2': {
                        'fields': [('field1', pymongo.ASCENDING),
                                   ('field2', pymongo.DESCENDING)],
                        'name':
                        'index2',
                        'sparse':
                        False
                    }
                }),
            '~EmbeddedDocument2':
            Schema.Document({
                'field1': {
                    'param3': 'schemavalue3'
                },
                'field2': {
                    'param4': 'schemavalue4'
                },
            })
        })

        res = AlterIndex.build_object(document_type, 'index2', left_schema,
                                      right_schema)

        assert res is None
Exemplo n.º 3
0
    def test_build_object__if_index_in_embedded_document__should_return_none(
            self, left_schema):
        right_schema = Schema({
            'Document1':
            Schema.Document(
                {
                    'field1': {
                        'param11': 'schemavalue11',
                        'param12': 'schemavalue12'
                    },
                    'field3': {
                        'param31': 'schemavalue31',
                        'param32': 'schemavalue32'
                    },
                },
                parameters={'collection': 'document1'}),
            '~EmbeddedDocument2':
            Schema.Document(
                {
                    'field1': {
                        'param3': 'schemavalue3'
                    },
                    'field2': {
                        'param4': 'schemavalue4'
                    },
                },
                indexes={
                    'index3': {
                        'fields': [('field1', pymongo.ASCENDING)]
                    }
                })
        })

        res = AlterIndex.build_object('~EmbeddedDocument2', 'index3',
                                      left_schema, right_schema)

        assert res is None