~widelands-dev/widelands-website/django_staticfiles

« back to all changes in this revision

Viewing changes to wlmaps/tests/test_views.py

  • Committer: Holger Rapp
  • Date: 2009-04-04 14:32:27 UTC
  • Revision ID: sirver@kallisto.local-20090404143227-mf49s08keq3nv08c
Initital (unusable) version of wlmaps application

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python -tt
 
2
# encoding: utf-8
 
3
#
 
4
 
 
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 *
 
10
 
 
11
import os
 
12
 
 
13
from settings import MEDIA_ROOT
 
14
 
 
15
elven_forests = os.path.dirname(__file__) + '/data/Elven Forests.wmf'
 
16
 
 
17
print "contains ipython embed code!"
 
18
from IPython.Shell import IPShellEmbed
 
19
ipshell = IPShellEmbed()
 
20
 
 
21
###########
 
22
# Helpers #
 
23
###########
 
24
class _LoginToSite(DjangoTest):
 
25
    def setUp(self):
 
26
        u = User.objects.create(username="root", email="root@root.com")
 
27
        u.set_password("root")
 
28
        u.save()
 
29
        
 
30
        self.client.login( username="root", password="root")
 
31
 
 
32
#############
 
33
# TestCases #
 
34
#############
 
35
###########
 
36
# Uploads #
 
37
###########
 
38
class TestWLMaps_ValidUpload_ExceptCorrectResult(_LoginToSite):
 
39
    def runTest(self):
 
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)
 
45
 
 
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):
 
50
    def runTest(self):
 
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):
 
55
    def runTest(self):
 
56
        k = self.client.get(reverse('wlmaps_upload'))
 
57
        self.assertEqual( k.status_code, 405 )
 
58
        self.assertEqual( k["allow"], 'post' )
 
59
 
 
60
# Invalid Uploading
 
61
class TestWLMaps_UploadWithoutMap_ExceptError(_LoginToSite):
 
62
    def runTest(self):
 
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):
 
68
    def runTest(self):
 
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)
 
74
        
 
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):
 
79
    def runTest(self):
 
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)
 
84
       
 
85
# Viewing, listing
 
86
class TestWLMapsViews_Viewing(DjangoTest):
 
87
    def setUp(self):
 
88
        self.user = User.objects.create(username="testuser")
 
89
        self.user.save()
 
90
        
 
91
        # Add maps
 
92
        nm = Map.objects.create(
 
93
                        name = "Map",
 
94
                        author = "Author",
 
95
                        w = 128,
 
96
                        h = 64,
 
97
                        descr = "a good map to play with", 
 
98
                        minimap = "/wlmaps/minimaps/Map.png",
 
99
                        world_name = "blackland",
 
100
 
 
101
                        uploader = self.user,
 
102
                        uploader_comment = "Rockdamap"
 
103
        )
 
104
        nm.save()
 
105
        self.map = nm
 
106
        nm = Map.objects.create(
 
107
                        name = "Map with a long slug",
 
108
                        author = "Author Paul",
 
109
                        w = 128,
 
110
                        h = 64,
 
111
                        descr = "a good map to play with", 
 
112
                        minimap = "/wlmaps/minimaps/Map with long slug.png",
 
113
                        world_name = "blackland",
 
114
 
 
115
                        uploader = self.user,
 
116
                        uploader_comment = "Rockdamap"
 
117
        )
 
118
        nm.save()
 
119
        self.map1 = nm
 
120
    
 
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' )
 
126
 
 
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 )
 
130
 
 
131
 
 
132