~widelands-dev/widelands-website/django_staticfiles

« back to all changes in this revision

Viewing changes to wlscreens/tests/test_models.py

  • Committer: Holger Rapp
  • Date: 2009-04-11 15:21:15 UTC
  • Revision ID: rapp@mrt.uka.de-20090411152115-qpbnxxze99td19bz
Added a first version of a screenshot 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
# File: tests/test_models.py
 
5
#
 
6
# Created by Holger Rapp on 2009-04-10.
 
7
# Copyright (c) 2009 HolgerRapp@gmx.net. All rights reserved.
 
8
#
 
9
# Last Modified: $Date$
 
10
#
 
11
 
 
12
from settings import THUMBNAIL_SIZE
 
13
from django.test import TestCase as DjangoTest
 
14
from django.db import IntegrityError
 
15
from django.core.files.uploadedfile import SimpleUploadedFile
 
16
from cStringIO import StringIO
 
17
 
 
18
from unittest import TestCase
 
19
 
 
20
from wlscreens.models import *
 
21
 
 
22
class TestCategoryAdding(DjangoTest):
 
23
    def test_addCategory_exceptCorrectResult(self):
 
24
        c = Category.objects.create(name="A new Revision")
 
25
        self.assertEqual(c.pk,1)
 
26
        self.assertEqual(c.slug, "a-new-revision")
 
27
 
 
28
class TestCategory(DjangoTest):
 
29
    urls = "wlscreens.test_urls"
 
30
    def test_addCategoryWhichExists_exceptFail(self):
 
31
        Category.objects.create(name="A new Revision").save()
 
32
        self.assertRaises(IntegrityError, 
 
33
              Category.objects.create, name="A NEW Revision")
 
34
    
 
35
    def test_CategoryRepr_exceptCorrectResult(self):
 
36
        c = Category.objects.create(name="A new Revision")
 
37
        self.assertEqual(repr(c), "<Category: A new Revision>" ) 
 
38
 
 
39
    def test_UrlGeneration_exceptCorrectResult(self):
 
40
        c = Category.objects.create(name="build 13")
 
41
        self.assertEqual(c.get_absolute_url(), "/wlscreens/build-13/" ) 
 
42
 
 
43
class _ScreenshotBase(DjangoTest):
 
44
    urls = "wlscreens.test_urls"
 
45
   
 
46
    @staticmethod
 
47
    def _make_random_image( size ):
 
48
        img = Image.new( "RGB", size )
 
49
        png = StringIO()
 
50
        img.save(png,"png")
 
51
        png.seek(0)
 
52
        return SimpleUploadedFile("test.png",png.read())
 
53
   
 
54
    def setUp(self):
 
55
        self.c = Category.objects.create(name="build 13")
 
56
        self.c2= Category.objects.create(name="build 14")
 
57
    
 
58
        self.img =  _ScreenshotBase._make_random_image((640,480))
 
59
 
 
60
class TestScreenshotAdding(_ScreenshotBase):
 
61
    def test_AddImage_ExpectCorrectResult(self):
 
62
        i = Screenshot.objects.create(name="First Test", 
 
63
            category = self.c,
 
64
            screenshot = self.img,
 
65
            comment = "This rockz!")
 
66
        self.assertEqual(i.pk,1)
 
67
        self.assertEqual(i.thumbnail.width,THUMBNAIL_SIZE[0])
 
68
 
 
69
class TestScreenshot(_ScreenshotBase):
 
70
    def setUp(self):
 
71
        _ScreenshotBase.setUp(self)
 
72
        
 
73
        img =  _ScreenshotBase._make_random_image((6,4))
 
74
 
 
75
        self.i = Screenshot.objects.create(name="First Test", 
 
76
            category = self.c,
 
77
            screenshot = img,
 
78
            comment = "This rockz!")
 
79
 
 
80
    def testAdd_SameNameSameCat_ExceptRaise(self):
 
81
        self.assertRaises( IntegrityError, 
 
82
              Screenshot.objects.create, name="First Test",
 
83
              category = self.c,
 
84
              screenshot = self.img,
 
85
              comment = "This is nice!")
 
86
    def testAdd_SameNameOtherCat_ExceptCorrectResult(self):
 
87
        k = Screenshot.objects.create( name="First Test",
 
88
              category = self.c2,
 
89
              screenshot = self.img,
 
90
              comment = "This is nice!")
 
91
 
 
92
    def test_Repr_ExceptCorrectResult(self):
 
93
        self.assertEqual(repr(self.i),"<Screenshot: build 13:First Test>")
 
94
 
 
95
    def test_CategoryScreenshots_ExceptCorrectResult(self):
 
96
        c = self.c.screenshots.all()
 
97
        c2 = self.c2.screenshots.all()
 
98
        self.assertTrue( self.i in c )
 
99
        self.assertEqual( c.count(), 1 )
 
100
        self.assertEqual( c2.count(), 0 )
 
101