Web M&M
https://mam.matfyz.cz
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.4 KiB
95 lines
2.4 KiB
10 years ago
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
import datetime
|
||
|
import random
|
||
10 years ago
|
import django.contrib.auth
|
||
10 years ago
|
from unittest import TestCase
|
||
10 years ago
|
from django.test import Client
|
||
10 years ago
|
from django.core.urlresolvers import reverse, resolve
|
||
10 years ago
|
from django.core.management import call_command
|
||
10 years ago
|
|
||
10 years ago
|
from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Soustredeni, Nastaveni
|
||
10 years ago
|
from seminar.testutils import create_test_data
|
||
10 years ago
|
from seminar import ovvpfile
|
||
10 years ago
|
from seminar import utils
|
||
10 years ago
|
|
||
10 years ago
|
class SeminarBasicTests(TestCase):
|
||
6 years ago
|
def setUp(self):
|
||
|
create_test_data(size=2)
|
||
|
self.client = Client()
|
||
|
|
||
|
def tearDown(self):
|
||
|
call_command('flush', noinput=True, verbosity=0, interactive=False)
|
||
|
self.cleint = None
|
||
|
|
||
|
def test_rocniky(self):
|
||
|
r19 = Rocnik.objects.get(rocnik=21)
|
||
|
self.assertEqual(r19.roman(), 'XXI')
|
||
|
|
||
|
def test_render_cislo_e2e(self):
|
||
|
cs = Cislo.objects.all()
|
||
|
for c in cs[:4]:
|
||
|
url = c.verejne_url()
|
||
|
r = self.client.get(url)
|
||
|
assert r.status_code == 200
|
||
|
assert len(r.content) >= 100
|
||
|
# TODO: Validate cntent as HTML
|
||
|
|
||
|
def test_render_problem_e2e(self):
|
||
|
ps = Problem.objects.all()
|
||
|
for p in ps[:4]:
|
||
|
url = p.verejne_url()
|
||
|
r = self.client.get(url)
|
||
|
assert r.status_code == 200
|
||
|
assert len(r.content) >= 100
|
||
|
# TODO: Validate cntent as HTML
|
||
|
|
||
|
def test_export_e2e(self):
|
||
|
i_url = '/aesop-export/index.csv'
|
||
|
i_r = self.client.get(i_url)
|
||
|
assert i_r.status_code == 200
|
||
|
ls = i_r.content.strip().split('\n')
|
||
|
|
||
|
for u in [ls[0], ls[-1]]:
|
||
|
ex_r = self.client.get('/aesop-export/' + u)
|
||
|
assert ex_r.status_code == 200
|
||
|
assert len(ex_r.content) >= 100
|
||
|
o = ovvpfile.parse(ex_r.content)
|
||
|
assert o.headers['version'] == '1'
|
||
|
|
||
|
def test_admin_url(self):
|
||
|
for m in [Skola, Resitel, Rocnik, Cislo, Problem, Reseni, Nastaveni]:
|
||
|
o = m.objects.first()
|
||
|
url = o.admin_url()
|
||
|
assert url
|
||
|
view = resolve(url)
|
||
|
assert view
|
||
|
|
||
|
def test_verejne_url(self):
|
||
|
for m in [Rocnik, Cislo, Problem]:
|
||
|
p = Problem.objects.first()
|
||
|
url = p.verejne_url()
|
||
|
assert url
|
||
|
view = resolve(url)
|
||
|
assert view
|
||
|
|
||
|
def test_ovvpfile(self):
|
||
|
filetext = "H1\ta\nH2\tb\tc\n\nx\ty\tz\n0\t1\t2\n3\t4\t5\n"
|
||
|
o = ovvpfile.parse(filetext)
|
||
|
assert len(o.headers) == 2
|
||
|
assert o.headers['H2'] == 'b\tc'
|
||
|
|
||
|
assert o.columns == ['x','y','z']
|
||
|
assert len(o.rows) == 2
|
||
|
assert o.rows[0]['z'] == '2'
|
||
|
|
||
|
t = o.to_string()
|
||
|
assert t == filetext
|
||
|
|
||
|
def test_roman(self):
|
||
|
for i in [0, 1, 23, 2015, 1999, 42, 4, 400, 78, 4321, 8765, 999]:
|
||
|
r = utils.roman(i)
|
||
|
fr = utils.from_roman(r)
|
||
|
assert fr == i
|
||
10 years ago
|
|