1
#!/usr/bin/env python -tt
5
from django.test import TestCase as DjangoTest, Client
6
from django.urls import reverse
7
from django.contrib.auth.models import User
8
# TODO(Franku): Not used, but should be replaced with python json because it gets removed in django 1.7
9
#from django.utils import simplejson as json
10
from wlmaps.models import *
14
from settings import MEDIA_ROOT
16
elven_forests = os.path.dirname(__file__) + '/data/Elven Forests.wmf'
23
class _LoginToSite(DjangoTest):
26
u = User.objects.create(username='root', email='root@root.com')
27
u.set_password('root')
30
self.client.login(username='root', password='root')
42
class TestWLMaps_ValidUpload_ExceptCorrectResult(_LoginToSite):
45
url = reverse('wlmaps_upload')
47
url, {'file': open(elven_forests, 'rb'), 'test': True})
49
o = Map.objects.get(pk=1)
50
self.assertEqual(o.name, 'Elven Forests')
51
self.assertEqual(o.author, 'Winterwind')
54
class TestWLMaps_AnonUpload_ExceptRedirect(DjangoTest):
57
url = reverse('wlmaps_upload')
58
k = self.client.post(url, {'file': open(elven_forests, 'rb')})
59
self.assertRedirects(k, reverse(
60
'django.contrib.auth.views.login') + '?next=%s' % url)
64
class TestWLMaps_UploadWithoutMap_ExceptError(_LoginToSite):
67
url = reverse('wlmaps_upload')
68
k = self.client.post(url, {'test': True})
69
self.assertEqual(len(Map.objects.all()), 0)
72
class TestWLMaps_UploadTwice_ExceptCorrectResult(_LoginToSite):
75
url = reverse('wlmaps_upload')
77
url, {'file': open(elven_forests, 'rb'), 'test': True})
78
self.assertEqual(len(Map.objects.all()), 1)
81
url, {'file': open(elven_forests, 'rb'), 'test': True})
82
self.assertEqual(len(Map.objects.all()), 1)
85
class TestWLMaps_UploadWithInvalidMap_ExceptError(_LoginToSite):
88
url = reverse('wlmaps_upload')
89
self.client.post(url, {'file': open(__file__, 'rb'), 'test': True})
90
self.assertEqual(len(Map.objects.all()), 0)
95
class TestWLMapsViews_Viewing(DjangoTest):
98
self.user = User.objects.create(username='testuser')
102
nm = Map.objects.create(
108
descr='a good map to play with',
109
minimap='/wlmaps/minimaps/Map.png',
110
world_name='blackland',
113
uploader_comment='Rockdamap'
117
nm = Map.objects.create(
118
name='Map with a long slug',
119
author='Author Paul',
123
descr='a good map to play with',
124
minimap='/wlmaps/minimaps/Map with long slug.png',
125
world_name='blackland',
128
uploader_comment='Rockdamap'
133
def test_ViewingValidMap_ExceptCorrectResult(self):
135
reverse('wlmaps_view', args=('map-with-a-long-slug',)))
136
self.assertEqual(c.status_code, 200)
137
self.assertEqual(c.context['object'], Map.objects.get(
138
slug='map-with-a-long-slug'))
139
self.assertTemplateUsed(c, 'wlmaps/map_detail.html')
141
def test_ViewingNonExistingMap_Except404(self):
143
reverse('wlmaps_view', args=('a-map-that-doesnt-exist',)))
144
self.assertEqual(c.status_code, 404)