forked from klen/mixer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_mongoengine.py
98 lines (70 loc) · 2.42 KB
/
test_mongoengine.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
from __future__ import absolute_import
from mongoengine import *
import datetime
class User(Document):
created_at = DateTimeField(default=datetime.datetime.now)
email = EmailField(required=True)
first_name = StringField(max_length=50)
last_name = StringField(max_length=50)
class Comment(EmbeddedDocument):
content = StringField()
name = StringField(max_length=120)
class Post(Document):
title = StringField(max_length=120, required=True)
author = ReferenceField(User)
category = StringField(choices=(
('S', 'Super'), ('M', 'Medium')), required=True)
size = StringField(
max_length=3, choices=('S', 'M', 'L', 'XL', 'XXL'), required=True)
tags = ListField(StringField(max_length=30))
comments = ListField(EmbeddedDocumentField(Comment))
rating = DecimalField(precision=4, required=True)
url = URLField(required=True)
uuid = UUIDField(required=True)
place = PointField()
meta = {'allow_inheritance': True}
class Bookmark(Document):
user = ReferenceField(User)
bookmark = GenericReferenceField()
def test_generators():
from mixer.backend.mongoengine import get_polygon
polygon = get_polygon()
assert polygon['coordinates']
def test_base():
from mixer.backend.mongoengine import Mixer
mixer = Mixer(commit=False)
assert mixer
now = datetime.datetime.now()
user = mixer.blend(User)
assert user.id
assert user.email
assert user.created_at
assert user.created_at >= now
def test_typemixer():
from mixer.backend.mongoengine import TypeMixer
tm = TypeMixer(Post)
post = tm.blend(comments=tm.RANDOM, place=tm.RANDOM)
assert post.id
assert post.title
assert post.tags == []
assert post.comments
assert post.comments[0]
assert isinstance(post.comments[0], Comment)
assert post.author
assert post.author.email
assert post.rating
assert post.category in ('S', 'M')
assert '/' in post.url
assert '-' in post.uuid
assert 'coordinates' in post.place
def test_relation():
from mixer.backend.mongoengine import Mixer
mixer = Mixer(commit=False)
post = mixer.blend(
'tests.test_mongoengine.Post', author__username='foo')
assert post.author.username == 'foo'
bookmark = mixer.blend(Bookmark)
assert not bookmark.bookmark
bookmark = mixer.blend(Bookmark, bookmark=mixer.RANDOM)
assert bookmark.bookmark
# pylama:ignore=W0401,W0614