File tree Expand file tree Collapse file tree 11 files changed +138
-20
lines changed Expand file tree Collapse file tree 11 files changed +138
-20
lines changed Original file line number Diff line number Diff line change 1- """
2- Example app URLs
3- """
4- from django .conf .urls import patterns , include , url
5- from rest_framework import routers
6- from .resources .identity import Identity , GenericIdentity
7-
8- router = routers .DefaultRouter (trailing_slash = False )
9-
10- router .register (r'identities' , Identity )
11-
12- urlpatterns = router .urls
13-
14- urlpatterns += patterns ('' ,
15- url (r'identities/default/(?P<pk>\d+)' ,
16- GenericIdentity .as_view (), name = 'user-default' ),
17- )
18-
Original file line number Diff line number Diff line change 1+ # -*- encoding: utf-8 -*-
2+ from __future__ import unicode_literals
3+
4+ import factory
5+
6+ from example .models import Blog
7+
8+
9+ class BlogFactory (factory .django .DjangoModelFactory ):
10+ class Meta :
11+ model = Blog
12+
13+ name = "Blog 1"
Original file line number Diff line number Diff line change 1+ # -*- encoding: utf-8 -*-
2+ from __future__ import unicode_literals
3+
4+ from django .db import models
5+ from django .utils .encoding import python_2_unicode_compatible
6+
7+
8+ class BaseModel (models .Model ):
9+ """
10+ I hear RoR has this by default, who doesn't need these two fields!
11+ """
12+ created_at = models .DateTimeField (auto_now_add = True )
13+ modified_at = models .DateTimeField (auto_now = True )
14+
15+ class Meta :
16+ abstract = True
17+
18+
19+ @python_2_unicode_compatible
20+ class Blog (BaseModel ):
21+ name = models .CharField (max_length = 100 )
22+ tagline = models .TextField ()
23+
24+ def __str__ (self ):
25+ return self .name
26+
27+
28+ @python_2_unicode_compatible
29+ class Author (BaseModel ):
30+ name = models .CharField (max_length = 50 )
31+ email = models .EmailField ()
32+
33+ def __str__ (self ):
34+ return self .name
35+
36+
37+ @python_2_unicode_compatible
38+ class Entry (BaseModel ):
39+ blog = models .ForeignKey (Blog )
40+ headline = models .CharField (max_length = 255 )
41+ body_text = models .TextField ()
42+ pub_date = models .DateField ()
43+ mod_date = models .DateField ()
44+ authors = models .ManyToManyField (Author )
45+ n_comments = models .IntegerField ()
46+ n_pingbacks = models .IntegerField ()
47+ rating = models .IntegerField ()
48+
49+ def __str__ (self ):
50+ return self .headline
Original file line number Diff line number Diff line change 1+ from rest_framework import serializers
2+
3+
4+ class BlogSerializer (serializers .Serializer ):
5+
6+ class Meta :
7+ fields = ('name' , )
Original file line number Diff line number Diff line change 2222 'django.contrib.auth' ,
2323 'django.contrib.admin' ,
2424 'rest_framework' ,
25- 'example.api ' ,
25+ 'example' ,
2626]
2727
28- ROOT_URLCONF = 'example.api. urls'
28+ ROOT_URLCONF = 'example.urls'
2929
3030SECRET_KEY = 'abc123'
3131
Original file line number Diff line number Diff line change 1+ from pytest_factoryboy import register
2+
3+ from example .factories import BlogFactory
4+
5+ register (BlogFactory )
Original file line number Diff line number Diff line change 1+ import pytest
2+
3+ from example .models import Blog
4+ from example .factories import BlogFactory
5+
6+ pytestmark = pytest .mark .django_db
7+
8+
9+ def test_factory_instance (blog_factory ):
10+
11+ assert blog_factory == BlogFactory
12+
13+
14+ def test_model_instance (blog ):
15+
16+ assert isinstance (blog , Blog )
17+
18+
19+ def test_blog_name (blog ):
20+ assert blog .name == 'Blog 1'
21+
22+
23+ def test_multiple_blog (blog_factory ):
24+ another_blog = blog_factory (name = 'Cool Blog' )
25+ new_blog = blog_factory (name = 'Awesome Blog' )
26+
27+ assert another_blog .name == 'Cool Blog'
28+ assert new_blog .name == 'Awesome Blog'
Original file line number Diff line number Diff line change 1+ from django .conf .urls import include , url
2+ from rest_framework import routers
3+
4+ from example .views import BlogViewSet
5+ from .api .resources .identity import Identity , GenericIdentity
6+
7+ router = routers .DefaultRouter (trailing_slash = False )
8+
9+ router .register (r"blogs" , BlogViewSet )
10+
11+ # for the old tests
12+ router .register (r'identities' , Identity )
13+
14+
15+ urlpatterns = [
16+
17+ url (r'^' , include (router .urls )),
18+
19+ # old tests
20+ url (r'identities/default/(?P<pk>\d+)' ,
21+ GenericIdentity .as_view (), name = 'user-default' ),
22+
23+ ]
Original file line number Diff line number Diff line change 1+ from rest_framework import viewsets
2+ from example .models import Blog
3+ from example .serializers import BlogSerializer
4+
5+
6+ class BlogViewSet (viewsets .ModelViewSet ):
7+
8+ queryset = Blog .objects .all ()
9+ serializer_class = BlogSerializer
You can’t perform that action at this time.
0 commit comments