1
#!/usr/bin/env python -tt
5
from django.test import TestCase as DjangoTest, Client
6
from django.core.urlresolvers import reverse
7
from django.contrib.auth.models import User
8
from django.utils import simplejson as json
9
from wlmaps.models import *
13
from settings import MEDIA_ROOT
15
elven_forests = os.path.dirname(__file__) + '/data/Elven Forests.wmf'
17
print "contains ipython embed code!"
18
from IPython.Shell import IPShellEmbed
19
ipshell = IPShellEmbed()
24
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")
38
class TestWLMaps_ValidUpload_ExceptCorrectResult(_LoginToSite):
40
url = reverse('wlmaps_upload')
41
k = self.client.post(url, {'mapfile': open(elven_forests,"rb"), 'test': True })
42
rv = json.loads( k.content )
43
self.assertEqual(rv["success_code"], 0)
44
self.assertEqual(rv["map_id"], 1)
46
o = Map.objects.get(pk=1)
47
self.assertEqual(o.name, "Elven Forests")
48
self.assertEqual(o.author, "Winterwind")
49
class TestWLMaps_AnonUpload_ExceptRedirect(DjangoTest):
51
url = reverse('wlmaps_upload')
52
k = self.client.post(url, {'mapfile': open(elven_forests,"rb") })
53
self.assertRedirects( k, reverse('django.contrib.auth.views.login') + '?next=%s' %url )
54
class TestWLMaps_UploadGet_ExceptNotAllowed(_LoginToSite):
56
k = self.client.get(reverse('wlmaps_upload'))
57
self.assertEqual( k.status_code, 405 )
58
self.assertEqual( k["allow"], 'post' )
61
class TestWLMaps_UploadWithoutMap_ExceptError(_LoginToSite):
63
url = reverse('wlmaps_upload')
64
k = self.client.post(url, {'test': True })
65
rv = json.loads( k.content )
66
self.assertEqual(rv["success_code"], 1)
67
class TestWLMaps_UploadTwice_ExceptCorrectResult(_LoginToSite):
69
url = reverse('wlmaps_upload')
70
k = self.client.post(url, {'mapfile': open(elven_forests,"rb"), 'test': True })
71
rv = json.loads( k.content )
72
self.assertEqual(rv["success_code"], 0)
73
self.assertEqual(rv["map_id"], 1)
75
k = self.client.post(url, {'mapfile': open(elven_forests,"rb"), 'test': True })
76
rv = json.loads( k.content )
77
self.assertEqual(rv["success_code"], 2)
78
class TestWLMaps_UploadWithInvalidMap_ExceptError(_LoginToSite):
80
url = reverse('wlmaps_upload')
81
k = self.client.post(url, {'mapfile': open(__file__,"rb"), 'test': True })
82
rv = json.loads( k.content )
83
self.assertEqual(rv["success_code"], 3)
86
class TestWLMapsViews_Viewing(DjangoTest):
88
self.user = User.objects.create(username="testuser")
92
nm = Map.objects.create(
97
descr = "a good map to play with",
98
minimap = "/wlmaps/minimaps/Map.png",
99
world_name = "blackland",
101
uploader = self.user,
102
uploader_comment = "Rockdamap"
106
nm = Map.objects.create(
107
name = "Map with a long slug",
108
author = "Author Paul",
111
descr = "a good map to play with",
112
minimap = "/wlmaps/minimaps/Map with long slug.png",
113
world_name = "blackland",
115
uploader = self.user,
116
uploader_comment = "Rockdamap"
121
def test_ViewingValidMap_ExceptCorrectResult(self):
122
c = self.client.get(reverse("wlmaps_view",args=("map-with-a-long-slug",)))
123
self.assertEqual(c.status_code, 200 )
124
self.assertEqual(c.context["object"], Map.objects.get(slug="map-with-a-long-slug"))
125
self.assertTemplateUsed( c, 'wlmaps/map_detail.html' )
127
def test_ViewingNonExistingMap_Except404(self):
128
c = self.client.get(reverse("wlmaps_view",args=("a-map-that-doesnt-exist",)))
129
self.assertEqual(c.status_code, 404 )