コード例 #1
0
ファイル: embedded.py プロジェクト: vlad-ki/yadm
 def get_fake(self, document, faker, depth):
     return create_fake(
         self.embedded_document_class,
         __parent__=document,
         __name__=self.name,
         __faker__=faker,
         __depth__=depth)
コード例 #2
0
ファイル: test_fields_simple.py プロジェクト: zzzsochi/yadm
    def test_faker(self):
        doc = create_fake(self.Doc)
        assert doc.int == 13
        assert doc.str == 'string'

        with pytest.raises(AttributeError):
            doc.int = 666
コード例 #3
0
ファイル: test_testing.py プロジェクト: nndii/yadm
def test_simple(db):
    doc = create_fake(SimpleDoc)

    assert doc.__db__ is None

    assert hasattr(doc, 'oid')
    assert hasattr(doc, 'b')
    assert hasattr(doc, 's')
    assert hasattr(doc, 'i')
    assert hasattr(doc, 'e')
    assert hasattr(doc, 'email')
    assert not hasattr(doc, 'not_set')

    assert isinstance(doc.oid, ObjectId)
    assert isinstance(doc.b, bool)
    assert isinstance(doc.s, str)
    assert isinstance(doc.i, int)
    assert isinstance(doc.e, str)
    assert isinstance(doc.email, str)

    assert len(doc.s) > 0
    assert '@' in doc.e
    assert '@' in doc.email

    assert db(SimpleDoc).count_documents() == 0
コード例 #4
0
def test_to__skip_not_loaded(db):
    doc = create_fake(Doc)
    db.insert_one(doc)

    doc = db(Doc).find_one(doc.id, {'s': False})
    raw = to_mongo(doc, skip_not_loaded=True)
    assert raw == {
        '_id': doc.id,
        'i': doc.i,
        'e': {
            'ii': doc.e.ii,
            'ss': doc.e.ss,
        }
    }

    doc = db(Doc).find_one(doc.id, {'e.ss': False})
    raw = to_mongo(doc, skip_not_loaded=True)
    assert raw == {
        '_id': doc.id,
        'i': doc.i,
        's': doc.s,
        # 'e': {  # TODO: must create part of embedded document
        #     'ii': doc.e.ii,
        # }
    }
コード例 #5
0
ファイル: test_testing.py プロジェクト: zzzsochi/yadm
def test_simple(db):
    doc = create_fake(SimpleDoc)

    assert doc.__db__ is None

    assert hasattr(doc, 'oid')
    assert hasattr(doc, 'b')
    assert hasattr(doc, 's')
    assert hasattr(doc, 'i')
    assert hasattr(doc, 'e')
    assert hasattr(doc, 'email')
    assert not hasattr(doc, 'not_set')

    assert isinstance(doc.oid, ObjectId)
    assert isinstance(doc.b, bool)
    assert isinstance(doc.s, str)
    assert isinstance(doc.i, int)
    assert isinstance(doc.e, str)
    assert isinstance(doc.email, str)

    assert len(doc.s) > 0
    assert '@' in doc.e
    assert '@' in doc.email

    assert db(SimpleDoc).count_documents() == 0
コード例 #6
0
ファイル: reference.py プロジェクト: nndii/yadm
 def get_fake(self, document, faker, depth):
     """ Try create referenced document.
     """
     return create_fake(self.reference_document_class,
                        __db__=document.__db__,
                        __faker__=faker,
                        __depth__=depth)
コード例 #7
0
ファイル: test_fields_simple.py プロジェクト: nndii/yadm
    def test_faker(self):
        doc = create_fake(self.Doc)
        assert doc.int == 13
        assert doc.str == 'string'

        with pytest.raises(AttributeError):
            doc.int = 666
コード例 #8
0
ファイル: test_fields_simple.py プロジェクト: zzzsochi/yadm
    def test_faker_save(self, db):
        doc = create_fake(self.Doc, db)
        assert doc.int == 13
        assert doc.str == 'string'

        raw = db.db[self.Doc.__collection__].find_one()
        assert raw['int'] == 13
        assert raw['str'] == 'string'
コード例 #9
0
ファイル: test_testing.py プロジェクト: vlad-ki/yadm
def test_reference_circle(db):
    doc = create_fake(WithReferenceCircleDoc, __db__=db, __depth__=2)

    assert db(WithReferenceCircleDoc).count() == 3

    assert hasattr(doc, 'self')
    assert hasattr(doc.self, 'self')
    assert not hasattr(doc.self.self, 'self')
コード例 #10
0
ファイル: test_fields_simple.py プロジェクト: nndii/yadm
    def test_faker_save(self, db):
        doc = create_fake(self.Doc, db)
        assert doc.int == 13
        assert doc.str == 'string'

        raw = db.db[self.Doc.__collection__].find_one()
        assert raw['int'] == 13
        assert raw['str'] == 'string'
コード例 #11
0
ファイル: test_testing.py プロジェクト: zzzsochi/yadm
def test_reference_circle(db):
    doc = create_fake(WithReferenceCircleDoc, __db__=db, __depth__=2)

    assert db(WithReferenceCircleDoc).count_documents() == 3

    assert hasattr(doc, 'self')
    assert hasattr(doc.self, 'self')
    assert not hasattr(doc.self.self, 'self')
コード例 #12
0
ファイル: test_testing.py プロジェクト: nndii/yadm
def test_reference(db):
    doc = create_fake(WithReferenceDoc)

    assert hasattr(doc, 'ref')
    assert hasattr(doc.ref, 's')
    assert isinstance(doc.ref.s, str)

    assert db(WithReferenceDoc).count_documents() == 0
    assert db(SimpleDoc).count_documents() == 0
コード例 #13
0
ファイル: test_testing.py プロジェクト: zzzsochi/yadm
def test_reference_save(db):
    doc = create_fake(WithReferenceDoc, __db__=db)

    assert hasattr(doc, 'ref')
    assert hasattr(doc.ref, 's')
    assert isinstance(doc.ref.s, str)

    assert db(WithReferenceDoc).count_documents() == 1
    assert db(SimpleDoc).count_documents() == 1
コード例 #14
0
ファイル: test_testing.py プロジェクト: vlad-ki/yadm
def test_reference_save(db):
    doc = create_fake(WithReferenceDoc, __db__=db)

    assert hasattr(doc, 'ref')
    assert hasattr(doc.ref, 's')
    assert isinstance(doc.ref.s, str)

    assert db(WithReferenceDoc).count() == 1
    assert db(SimpleDoc).count() == 1
コード例 #15
0
def test_fake():
    doc = create_fake(Doc)
    assert isinstance(doc.e, (EDocOne, EDocTwo))

    if isinstance(doc.e, EDocOne):
        assert isinstance(doc.e.i, int)
    elif isinstance(doc.e, EDocTwo):
        assert isinstance(doc.e.s, str)
    else:
        raise AssertionError(doc.e, type(doc.e))
コード例 #16
0
def test_fake():
    doc = create_fake(Doc)
    assert isinstance(doc.e, (EDocOne, EDocTwo))

    if isinstance(doc.e, EDocOne):
        assert isinstance(doc.e.i, int)
    elif isinstance(doc.e, EDocTwo):
        assert isinstance(doc.e.s, str)
    else:
        raise AssertionError(doc.e, type(doc.e))
コード例 #17
0
def test_to__include():
    doc = create_fake(Doc)
    doc.extra_doc_value = 'not serialized'
    raw = to_mongo(doc, include=['i', 'e.ss'])

    assert raw == {
        'i': doc.i,
        'e': {
            'ss': doc.e.ss,
        }
    }
コード例 #18
0
def test_to__not_loaded_error(db):
    doc = create_fake(Doc)
    db.insert_one(doc)

    doc = db(Doc).find_one(doc.id, {'s': False})
    with pytest.raises(NotLoadedError):
        to_mongo(doc)

    doc = db(Doc).find_one(doc.id, {'e.ss': False})
    with pytest.raises(NotLoadedError):
        to_mongo(doc)
コード例 #19
0
    def get_fake(self, document, faker, depth):
        """ Try create referenced document.
        """
        res = create_fake(self.reference_document_class,
                          __db__=document.__db__,
                          __faker__=faker,
                          __depth__=depth)

        if res is AttributeNotSet and self.smart_null:
            return None
        else:
            return res
コード例 #20
0
    def get_fake(self, document, faker, depth):
        type_name = random.choice(list(self.types))
        ed_class = self.get_embedded_document_class(
            document=document,
            value={self.type_field: type_name},
        )

        return create_fake(ed_class,
                           __parent__=document,
                           __name__=self.name,
                           __faker__=faker,
                           __depth__=depth,
                           **{self.type_field: type_name})
コード例 #21
0
def test_to__exclude():
    doc = create_fake(Doc)
    doc.extra_doc_value = 'not serialized'
    raw = to_mongo(doc, exclude=['i'])

    assert raw == {
        '_id': doc.id,
        's': doc.s,
        'e': {
            'ii': doc.e.ii,
            'ss': doc.e.ss,
        }
    }
コード例 #22
0
def test_faker():
    class Doc(Document):
        __collection__ = 'docs'

        int = fields.StaticField(13)
        str = fields.StaticField('string')

    doc = create_fake(Doc)
    assert doc.int == 13
    assert doc.str == 'string'

    with pytest.raises(AttributeError):
        doc.int = 666
コード例 #23
0
    async def test():
        doc = create_fake(Doc)
        b = doc.b
        await db.insert_one(doc)

        await db.db['testdocs'].update_one({'_id': doc.id},
                                           {'$set': {
                                               'b': not doc.b
                                           }})

        assert doc.b == b
        new_doc = await db.reload(doc, projection={'b': True})
        assert new_doc is doc
        assert doc.b != b
        assert 'i' in doc.__not_loaded__
コード例 #24
0
    async def test():
        doc = create_fake(Doc)
        b = doc.b
        await db.insert_one(doc)

        await db.db['testdocs'].update_one({'_id': doc.id},
                                           {'$set': {
                                               'b': not doc.b
                                           }})

        assert doc.b == b
        new_doc = await db.reload(doc, new_instance=True)
        assert new_doc is not doc
        assert doc.b == b
        assert new_doc.b != b
コード例 #25
0
ファイル: test_testing.py プロジェクト: nndii/yadm
def test_complex_fake_dict():
    class Doc(Document):
        i = IntegerField()
        s = StringField()

        def __fake__(self, values, faker, depth):
            assert values['i'] == 13
            assert 's' not in values
            new_values = values.copy()
            new_values['i'] += 1
            new_values['s'] = 'string'
            return new_values

    doc = create_fake(Doc, i=13)

    assert doc.i == 14
    assert doc.s == 'string'
コード例 #26
0
ファイル: test_testing.py プロジェクト: zzzsochi/yadm
def test_complex_fake_dict():
    class Doc(Document):
        i = IntegerField()
        s = StringField()

        def __fake__(self, values, faker, depth):
            assert values['i'] == 13
            assert 's' not in values
            new_values = values.copy()
            new_values['i'] += 1
            new_values['s'] = 'string'
            return new_values

    doc = create_fake(Doc, i=13)

    assert doc.i == 14
    assert doc.s == 'string'
コード例 #27
0
ファイル: test_testing.py プロジェクト: zzzsochi/yadm
def test_complex_fake_generator():
    class Doc(Document):
        i = IntegerField()
        s = StringField()

        def __fake__(self, values, faker, depth):
            assert values['i'] == 13
            assert 's' not in values
            new_values = values.copy()
            new_values['i'] += 1
            yield new_values
            self.s = 'string'
            yield

    doc = create_fake(Doc, i=13)

    assert doc.i == 14
    assert doc.s == 'string'
コード例 #28
0
ファイル: test_testing.py プロジェクト: nndii/yadm
def test_complex_fake_generator():
    class Doc(Document):
        i = IntegerField()
        s = StringField()

        def __fake__(self, values, faker, depth):
            assert values['i'] == 13
            assert 's' not in values
            new_values = values.copy()
            new_values['i'] += 1
            yield new_values
            self.s = 'string'
            yield

    doc = create_fake(Doc, i=13)

    assert doc.i == 14
    assert doc.s == 'string'
コード例 #29
0
ファイル: test_testing.py プロジェクト: vlad-ki/yadm
def test_simple_save(db):
    doc = create_fake(SimpleDoc, __db__=db)

    assert doc.__db__ is db

    assert hasattr(doc, 'oid')
    assert hasattr(doc, 'b')
    assert hasattr(doc, 's')
    assert hasattr(doc, 'i')

    assert isinstance(doc.oid, ObjectId)
    assert isinstance(doc.b, bool)
    assert isinstance(doc.s, str)
    assert isinstance(doc.i, int)

    assert len(doc.s) > 0

    assert db(SimpleDoc).count() == 1
    assert db(SimpleDoc).find_one(doc.id)
コード例 #30
0
ファイル: test_testing.py プロジェクト: zzzsochi/yadm
def test_simple_save(db):
    doc = create_fake(SimpleDoc, __db__=db)

    assert doc.__db__ is db

    assert hasattr(doc, 'oid')
    assert hasattr(doc, 'b')
    assert hasattr(doc, 's')
    assert hasattr(doc, 'i')
    assert not hasattr(doc, 'not_set')

    assert isinstance(doc.oid, ObjectId)
    assert isinstance(doc.b, bool)
    assert isinstance(doc.s, str)
    assert isinstance(doc.i, int)

    assert len(doc.s) > 0

    assert db(SimpleDoc).count_documents() == 1
    assert db(SimpleDoc).find_one(doc.id)
コード例 #31
0
ファイル: test_create_fake.py プロジェクト: vlad-ki/yadm
def test_reference(db):
    doc = create_fake(Doc, db)
    assert isinstance(doc, Doc)
    assert isinstance(doc.ref, DocRef)
    assert doc.ref.id
コード例 #32
0
    def test_faker(self):
        doc = create_fake(self.Doc)

        assert isinstance(doc.td, timedelta)
        assert isinstance(doc.tdd, timedelta)
コード例 #33
0
ファイル: test_testing.py プロジェクト: vlad-ki/yadm
def test_embedded(db):
    doc = create_fake(WithEmbeddedDoc)

    assert hasattr(doc, 'emb')
    assert isinstance(doc.emb, EmbeddedDoc)
    assert isinstance(doc.emb.name, str)
コード例 #34
0
ファイル: test_testing.py プロジェクト: vlad-ki/yadm
def test_embedded_depth_limit(db):
    doc = create_fake(WithEmbeddedDoc, __depth__=0)

    assert hasattr(doc, 'emb')
    assert not hasattr(doc.emb, 'name')
コード例 #35
0
ファイル: test_testing.py プロジェクト: zzzsochi/yadm
def test_embedded(db):
    doc = create_fake(WithEmbeddedDoc)

    assert hasattr(doc, 'emb')
    assert isinstance(doc.emb, EmbeddedDoc)
    assert isinstance(doc.emb.name, str)
コード例 #36
0
ファイル: test_testing.py プロジェクト: zzzsochi/yadm
def test_embedded_depth_limit(db):
    doc = create_fake(WithEmbeddedDoc, __depth__=0)

    assert hasattr(doc, 'emb')
    assert not hasattr(doc.emb, 'name')
コード例 #37
0
def test_fake():
    doc = create_fake(Doc)
    assert isinstance(doc.e, EDoc)
    assert isinstance(doc.e.i, int)
    assert isinstance(doc.e.s, str)
    assert isinstance(doc.e.e, EDoc)
コード例 #38
0
ファイル: test_fields_embedded.py プロジェクト: zzzsochi/yadm
def test_fake():
    doc = create_fake(Doc)
    assert isinstance(doc.e, EDoc)
    assert isinstance(doc.e.i, int)
    assert isinstance(doc.e.s, str)
    assert isinstance(doc.e.e, EDoc)