API: champ 'shortname' manquant

master
Olivier DOSSMANN 2018-01-15 19:06:26 +01:00
parent a6dcad77d9
commit 91cc57f166
2 changed files with 34 additions and 57 deletions

View File

@ -1,4 +1,6 @@
from games.models import Game, Platform, Timeline
from games.models import Game
from games.models import Platform
from games.models import Timeline
from rest_framework import serializers
@ -12,8 +14,7 @@ class GameSerializer(serializers.HyperlinkedModelSerializer):
'playing',
'status',
'unplayed',
'wish',
)
'wish', )
class GameTimelineSerializer(serializers.HyperlinkedModelSerializer):
@ -22,11 +23,10 @@ class GameTimelineSerializer(serializers.HyperlinkedModelSerializer):
fields = (
'date',
'item',
'status',
)
'status', )
class PlatformSerializer(serializers.ModelSerializer):
class Meta:
model = Platform
fields = ('name',)
fields = ('name', 'shortname')

View File

@ -1,27 +1,28 @@
import json
from datetime import date
from datetime import datetime
from django.contrib.auth.models import User
from django.urls import reverse
from games.models import Game, Platform, Timeline
from games.models import Game
from games.models import Platform
from games.models import Timeline
from rest_framework import status
from rest_framework.test import APITestCase, force_authenticate
from datetime import date, datetime
import json
from rest_framework.test import APITestCase
class PlatformTest(APITestCase):
@classmethod
def setUpTestData(cls):
cls.superuser = User.objects.create_superuser(
'admin',
'admin@localhost',
'admin')
'admin', 'admin@localhost', 'admin')
def test_create_platform(self):
"""
Check we can create a platform object.
"""
url = reverse('platform-list')
data = {'name': 'GP2X'}
data = {'name': 'GP2X', 'shortname': 'GP2X'}
self.client.force_authenticate(user=self.superuser)
response = self.client.post(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
@ -39,21 +40,17 @@ class PlatformTest(APITestCase):
url = reverse('platform-list')
self.client.force_authenticate(user=self.superuser)
response = self.client.get(url, format='json')
sorted_platforms = list(
Platform.objects.all().order_by('name').values_list(
'name', flat=True))
sorted_platforms = list(Platform.objects.all().order_by('name')
.values_list('name', flat=True))
platforms = [x.get('name') for x in json.loads(response.content)]
self.assertEqual(platforms, sorted_platforms)
class GameTest(APITestCase):
@classmethod
def setUpTestData(cls):
cls.superuser = User.objects.create_superuser(
'admin',
'admin@localhost',
'admin')
'admin', 'admin@localhost', 'admin')
def test_create_game(self):
"""
@ -75,27 +72,19 @@ class GameTest(APITestCase):
self.assertEqual(Game.objects.get().name, 'Tetris')
self.assertEqual(Game.objects.get().collection_id, console.id)
def test_sorted_games(self):
"""
Check that game list is sorted.
"""
console = Platform.objects.create(name='BestPlatform4Ever')
Game.objects.create(
name='Pomperman',
collection=console)
Game.objects.create(
name='Vektoria',
collection=console)
Game.objects.create(
name='Qrackovitchya',
collection=console)
Game.objects.create(name='Pomperman', collection=console)
Game.objects.create(name='Vektoria', collection=console)
Game.objects.create(name='Qrackovitchya', collection=console)
url = reverse('game-list')
self.client.force_authenticate(user=self.superuser)
response = self.client.get(url, format='json')
sorted_games = list(
Game.objects.all().order_by('name').values_list(
'name', flat=True))
Game.objects.all().order_by('name').values_list('name', flat=True))
games = [x.get('name') for x in json.loads(response.content)]
self.assertEqual(games, sorted_games)
@ -103,7 +92,7 @@ class GameTest(APITestCase):
"""
Check that we cannot insert a not allowed status in a Game
"""
console = Platform.objects.create(name='BestPlatform4Ever')
Platform.objects.create(name='BestPlatform4Ever')
url = reverse('game-list')
data = {
'name': 'Vilebrequin',
@ -119,9 +108,7 @@ class TimelineTest(APITestCase):
@classmethod
def setUpTestData(cls):
cls.superuser = User.objects.create_superuser(
'admin',
'admin@localhost',
'admin')
'admin', 'admin@localhost', 'admin')
def test_create_timeline(self):
"""
@ -129,9 +116,7 @@ class TimelineTest(APITestCase):
"""
console = Platform.objects.create(name='BestPlatform4Ever')
game = Game.objects.create(
name='Cherubin',
collection=console,
status='created')
name='Cherubin', collection=console, status='created')
# By default a timeline is generated with current datetime.
# We need to change this date.
@ -147,10 +132,8 @@ class TimelineTest(APITestCase):
}
self.client.force_authenticate(user=self.superuser)
response = self.client.post(url, data, format='json')
self.assertEqual(
response.status_code,
status.HTTP_201_CREATED,
response.content)
self.assertEqual(response.status_code, status.HTTP_201_CREATED,
response.content)
self.assertEqual(Timeline.objects.count(), 2)
def test_sorted_game_timeline(self):
@ -160,28 +143,22 @@ class TimelineTest(APITestCase):
# Prepare timeline with some different dates
console = Platform.objects.create(name='BestPlatform4Ever')
game = Game.objects.create(
name='Symptomatic',
collection=console,
status='created')
name='Symptomatic', collection=console, status='created')
game.status = 'beaten'
game.save()
game.status = 'completed'
game.save()
# Change date from Timelines
Timeline.objects.filter(status='created').update(
date='2017-03-01')
Timeline.objects.filter(status='completed').update(
date='2017-03-05')
Timeline.objects.filter(status='beaten').update(
date='2017-03-07')
Timeline.objects.filter(status='created').update(date='2017-03-01')
Timeline.objects.filter(status='completed').update(date='2017-03-05')
Timeline.objects.filter(status='beaten').update(date='2017-03-07')
# Check dates
url = reverse('game_timeline-list')
self.client.force_authenticate(user=self.superuser)
response = self.client.get(url, format='json')
# sorted_timelines are datetime.date
sorted_timelines = list(
Timeline.objects.all().order_by('-date').values_list(
'date', flat=True))
sorted_timelines = list(Timeline.objects.all().order_by('-date')
.values_list('date', flat=True))
# dates are string date, format %Y-%m-%d
dates = [x.get('date') for x in json.loads(response.content)]
da = [datetime.date(datetime.strptime(x, '%Y-%m-%d')) for x in dates]