@@ -280,3 +280,127 @@ def test_no_content_response(self):
280280 response = self .client .delete (url )
281281 assert response .status_code == 204 , response .rendered_content .decode ()
282282 assert len (response .rendered_content ) == 0 , response .rendered_content .decode ()
283+
284+
285+ class TestBlogViewSet (APITestCase ):
286+
287+ def setUp (self ):
288+ self .blog = Blog .objects .create (
289+ name = 'Some Blog' ,
290+ tagline = "It's a blog"
291+ )
292+ self .entry = Entry .objects .create (
293+ blog = self .blog ,
294+ headline = 'headline one' ,
295+ body_text = 'body_text two' ,
296+ )
297+
298+ def test_get_object_gives_correct_blog (self ):
299+ url = reverse ('entry-blog' , kwargs = {'entry_pk' : self .entry .id })
300+ resp = self .client .get (url )
301+ expected = {
302+ 'data' : {
303+ 'attributes' : {'name' : self .blog .name },
304+ 'id' : '{}' .format (self .blog .id ),
305+ 'links' : {'self' : 'http://testserver/blogs/{}' .format (self .blog .id )},
306+ 'meta' : {'copyright' : 2018 },
307+ 'relationships' : {'tags' : {'data' : []}},
308+ 'type' : 'blogs'
309+ },
310+ 'meta' : {'apiDocs' : '/docs/api/blogs' }
311+ }
312+ got = resp .json ()
313+ self .assertEqual (got , expected )
314+
315+
316+ class TestEntryViewSet (APITestCase ):
317+
318+ def setUp (self ):
319+ self .blog = Blog .objects .create (
320+ name = 'Some Blog' ,
321+ tagline = "It's a blog"
322+ )
323+ self .first_entry = Entry .objects .create (
324+ blog = self .blog ,
325+ headline = 'headline two' ,
326+ body_text = 'body_text two' ,
327+ )
328+ self .second_entry = Entry .objects .create (
329+ blog = self .blog ,
330+ headline = 'headline two' ,
331+ body_text = 'body_text two' ,
332+ )
333+ self .maxDiff = None
334+
335+ def test_get_object_gives_correct_entry (self ):
336+ url = reverse ('entry-featured' , kwargs = {'entry_pk' : self .first_entry .id })
337+ resp = self .client .get (url )
338+ expected = {
339+ 'data' : {
340+ 'attributes' : {
341+ 'bodyText' : self .second_entry .body_text ,
342+ 'headline' : self .second_entry .headline ,
343+ 'modDate' : self .second_entry .mod_date ,
344+ 'pubDate' : self .second_entry .pub_date
345+ },
346+ 'id' : '{}' .format (self .second_entry .id ),
347+ 'meta' : {'bodyFormat' : 'text' },
348+ 'relationships' : {
349+ 'authors' : {'data' : [], 'meta' : {'count' : 0 }},
350+ 'blog' : {
351+ 'data' : {
352+ 'id' : '{}' .format (self .second_entry .blog_id ),
353+ 'type' : 'blogs'
354+ }
355+ },
356+ 'blogHyperlinked' : {
357+ 'links' : {
358+ 'related' : 'http://testserver/entries/{}'
359+ '/blog' .format (self .second_entry .id ),
360+ 'self' : 'http://testserver/entries/{}'
361+ '/relationships/blog_hyperlinked' .format (self .second_entry .id )
362+ }
363+ },
364+ 'comments' : {
365+ 'data' : [],
366+ 'meta' : {'count' : 0 }
367+ },
368+ 'commentsHyperlinked' : {
369+ 'links' : {
370+ 'related' : 'http://testserver/entries/{}'
371+ '/comments' .format (self .second_entry .id ),
372+ 'self' : 'http://testserver/entries/{}'
373+ '/relationships/comments_hyperlinked' .format (self .second_entry .id )
374+ }
375+ },
376+ 'featuredHyperlinked' : {
377+ 'links' : {
378+ 'related' : 'http://testserver/entries/{}'
379+ '/featured' .format (self .second_entry .id ),
380+ 'self' : 'http://testserver/entries/{}'
381+ '/relationships/featured_hyperlinked' .format (self .second_entry .id )
382+ }
383+ },
384+ 'suggested' : {
385+ 'data' : [{'id' : '1' , 'type' : 'entries' }],
386+ 'links' : {
387+ 'related' : 'http://testserver/entries/{}'
388+ '/suggested/' .format (self .second_entry .id ),
389+ 'self' : 'http://testserver/entries/{}'
390+ '/relationships/suggested' .format (self .second_entry .id )
391+ }
392+ },
393+ 'suggestedHyperlinked' : {
394+ 'links' : {
395+ 'related' : 'http://testserver/entries/{}'
396+ '/suggested/' .format (self .second_entry .id ),
397+ 'self' : 'http://testserver/entries/{}'
398+ '/relationships/suggested_hyperlinked' .format (self .second_entry .id )
399+ }
400+ },
401+ 'tags' : {'data' : []}},
402+ 'type' : 'posts'
403+ }
404+ }
405+ got = resp .json ()
406+ self .assertEqual (got , expected )
0 commit comments