94 lines
2.9 KiB

# -*- coding: utf-8 -*-
import datetime
import random
import django.contrib.auth
from unittest import TestCase
from django.test import Client
from django.core.urlresolvers import reverse, resolve
from django.core.management import call_command
from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Soustredeni, Nastaveni
from seminar.testutils import create_test_data
from seminar import ovvpfile
from seminar import utils
class SeminarBasicTests(TestCase):
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