1
- import json
2
1
import mock
3
2
4
- from django .test import TestCase
5
- from django .test .client import RequestFactory
3
+ from rest_framework .test import APIRequestFactory , APITestCase
6
4
7
5
from readthedocs .core .middleware import FooterNoSessionMiddleware
8
-
9
6
from readthedocs .rtd_tests .mocks .paths import fake_paths_by_regex
10
7
from readthedocs .projects .models import Project
8
+ from readthedocs .restapi .views .footer_views import footer_html
9
+
11
10
11
+ class Testmaker (APITestCase ):
12
+ fixtures = ['test_data' ]
13
+ url = '/api/v2/footer_html/?project=pip&version=latest&page=index'
14
+ factory = APIRequestFactory ()
12
15
13
- class Testmaker (TestCase ):
14
- fixtures = ["eric" , "test_data" ]
16
+ @classmethod
17
+ def setUpTestData (cls ):
18
+ cls .pip = Project .objects .get (slug = 'pip' )
19
+ cls .latest = cls .pip .versions .create_latest ()
15
20
16
- def setUp (self ):
17
- self .client .login (username = 'eric' , password = 'test' )
18
- self .pip = Project .objects .get (slug = 'pip' )
19
- self .latest = self .pip .versions .create_latest ()
21
+ def render (self ):
22
+ request = self .factory .get (self .url )
23
+ response = footer_html (request )
24
+ response .render ()
25
+ return response
20
26
21
27
def test_footer (self ):
22
- r = self .client .get ('/api/v2/footer_html/?project=pip&version=latest&page=index' , {})
23
- resp = json .loads (r .content )
24
- self .assertEqual (resp ['version_active' ], True )
25
- self .assertEqual (resp ['version_compare' ]['is_highest' ], True )
26
- self .assertEqual (resp ['version_supported' ], True )
28
+ r = self .client .get (self .url )
29
+ self .assertTrue (r .data ['version_active' ])
30
+ self .assertTrue (r .data ['version_compare' ]['is_highest' ])
31
+ self .assertTrue (r .data ['version_supported' ])
27
32
self .assertEqual (r .context ['main_project' ], self .pip )
28
33
self .assertEqual (r .status_code , 200 )
29
34
30
35
self .latest .active = False
31
36
self .latest .save ()
32
- r = self .client .get ('/api/v2/footer_html/?project=pip&version=latest&page=index' , {})
33
- resp = json .loads (r .content )
34
- self .assertEqual (resp ['version_active' ], False )
37
+ r = self .render ()
38
+ self .assertFalse (r .data ['version_active' ])
35
39
self .assertEqual (r .status_code , 200 )
36
40
37
41
def test_footer_uses_version_compare (self ):
@@ -40,51 +44,43 @@ def test_footer_uses_version_compare(self):
40
44
get_version_compare_data .return_value = {
41
45
'MOCKED' : True
42
46
}
43
-
44
- r = self .client .get ('/api/v2/footer_html/?project=pip&version=latest&page=index' , {})
47
+ r = self .render ()
45
48
self .assertEqual (r .status_code , 200 )
46
-
47
- resp = json .loads (r .content )
48
- self .assertEqual (resp ['version_compare' ], {'MOCKED' : True })
49
+ self .assertEqual (r .data ['version_compare' ], {'MOCKED' : True })
49
50
50
51
def test_pdf_build_mentioned_in_footer (self ):
51
52
with fake_paths_by_regex ('\.pdf$' ):
52
- response = self .client .get (
53
- '/api/v2/footer_html/?project=pip&version=latest&page=index' , {})
54
- self .assertContains (response , 'pdf' )
53
+ response = self .render ()
54
+ self .assertIn ('pdf' , response .data ['html' ])
55
55
56
56
def test_pdf_not_mentioned_in_footer_when_build_is_disabled (self ):
57
57
self .pip .enable_pdf_build = False
58
58
self .pip .save ()
59
59
with fake_paths_by_regex ('\.pdf$' ):
60
- response = self .client .get (
61
- '/api/v2/footer_html/?project=pip&version=latest&page=index' , {})
62
- self .assertNotContains (response , 'pdf' )
60
+ response = self .render ()
61
+ self .assertNotIn ('pdf' , response .data ['html' ])
63
62
64
63
def test_epub_build_mentioned_in_footer (self ):
65
64
with fake_paths_by_regex ('\.epub$' ):
66
- response = self .client .get (
67
- '/api/v2/footer_html/?project=pip&version=latest&page=index' , {})
68
- self .assertContains (response , 'epub' )
65
+ response = self .render ()
66
+ self .assertIn ('epub' , response .data ['html' ])
69
67
70
68
def test_epub_not_mentioned_in_footer_when_build_is_disabled (self ):
71
69
self .pip .enable_epub_build = False
72
70
self .pip .save ()
73
71
with fake_paths_by_regex ('\.epub$' ):
74
- response = self .client .get (
75
- '/api/v2/footer_html/?project=pip&version=latest&page=index' , {})
76
- self .assertNotContains (response , 'epub' )
72
+ response = self .render ()
73
+ self .assertNotIn ('epub' , response .data ['html' ])
77
74
78
75
def test_no_session_logged_out (self ):
79
76
mid = FooterNoSessionMiddleware ()
80
- factory = RequestFactory ()
81
77
82
78
# Null session here
83
- request = factory .get ('/api/v2/footer_html/' )
79
+ request = self . factory .get ('/api/v2/footer_html/' )
84
80
mid .process_request (request )
85
81
self .assertEqual (request .session , {})
86
82
87
83
# Proper session here
88
- home_request = factory .get ('/' )
84
+ home_request = self . factory .get ('/' )
89
85
mid .process_request (home_request )
90
- self .assertTrue (home_request .session .TEST_COOKIE_NAME , 'testcookie' )
86
+ self .assertEqual (home_request .session .TEST_COOKIE_NAME , 'testcookie' )
0 commit comments