@@ -280,3 +280,127 @@ def test_no_content_response(self):
280
280
response = self .client .delete (url )
281
281
assert response .status_code == 204 , response .rendered_content .decode ()
282
282
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/{}/relationships'
373
+ '/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/{}/relationships'
381
+ '/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/{}/relationships'
398
+ '/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