Source code for kata.test_views
from django.urls import reverse
from django.test import TestCase
from django_webtest import WebTest
from registration.models import Event, Division, Person, Rank, EventLink
from .views import KataBracketDetails
from accounts.models import RightsSupport
[docs]class KataDetailTestCase(WebTest):
[docs] def test_person_form(self):
e = Event(name="Kata", format=Event.EventFormat.kata)
e.save()
white = Rank.get_kyu(9)
brown = Rank.get_kyu(1)
bb1 = Rank.get_dan(1)
bb9 = Rank.get_dan(9)
d = Division(event=e, gender='MF', start_age=1, stop_age = 99, start_rank=white, stop_rank=bb9)
d.save()
p1 = Person(first_name="pre-registered person", last_name="", gender='M', age=1, rank=Rank.get_kyu(8), instructor="asdf", confirmed=True)
p1.save()
el1 = EventLink(person=p1, event=e)
el1.save()
p2 = Person(first_name="late arrival", last_name="", gender='M', age=1, rank=Rank.get_kyu(8), instructor="asdf", confirmed=False)
p2.save()
el2 = EventLink(person=p2, event=e)
el2.save()
el3 = EventLink(manual_name="m", event=e, division=d)
el3.save()
d.build_format()
format = d.get_format()
url = format.get_absolute_url()
resp = self.app.get(url)
# Submit blank form. Fails
form = resp.forms['add_form']
resp = form.submit()
self.assertFormError(resp, 'add_form', None, "Specify either manual name or select from menu.")
# Submit both manual_name and eventlink. Fails
form = resp.forms['add_form']
form['manual_name'] = "asdf"
form['existing_eventlink'] = el2.id
resp = form.submit()
self.assertFormError(resp, 'add_form', None, "Specify only one of manual name or selection from menu.")
# Add manual person to new team
form = resp.forms['add_form']
form['manual_name'] = "manual added"
form['existing_eventlink'] = ""
resp = form.submit()
self.assertRedirects(resp, url)
resp = resp.follow()
resp.mustcontain("<td>manual added</td>")
# Add late arrival p2 to team 2
form = resp.forms['add_form']
form['existing_eventlink'] = el2.id
resp = form.submit()
self.assertRedirects(resp, url)
resp = resp.follow()
resp.mustcontain("<td>late arrival</td>")
# Delete "a"
match = el1.katamatch_set.all()[0]
form = resp.forms['delete_' + str(match.id)]
resp = form.submit()
self.assertRedirects(resp, url)
resp = resp.follow()
resp.mustcontain(no=("<dt>pre-registered person</td>",))
# Delete "manual added"
match = el3.katamatch_set.all()[0]
form = resp.forms['delete_' + str(match.id)]
resp = form.submit()
self.assertRedirects(resp, url)
resp = resp.follow()
resp.mustcontain(no=("<td>m</td>",))
[docs] def test_add_team_form(self):
e = Event(name="Team kata", format=Event.EventFormat.kata, is_team=True)
e.save()
white = Rank.get_kyu(9)
brown = Rank.get_kyu(1)
bb1 = Rank.get_dan(1)
bb9 = Rank.get_dan(9)
d = Division(event=e, gender='MF', start_age=1, stop_age = 99, start_rank=white, stop_rank=bb9)
d.save()
t1 = EventLink(event=e, division=d, is_team=True)
t1.save()
p1 = Person(first_name="a", last_name="", gender='M', age=1, rank=Rank.get_kyu(8), instructor="asdf")
p1.save()
el1 = EventLink(person=p1, event=e, team=t1)
el1.save()
p2 = Person(first_name="a", last_name="", gender='M', age=1, rank=Rank.get_kyu(8), instructor="asdf")
p2.save()
el2 = EventLink(person=p2, event=e)
el2.save()
el3 = EventLink(manual_name="m", event=e, division=d)
el3.save()
d.build_format()
url = d.get_format().get_absolute_url()
resp = self.app.get(url)
# Submit blank form. Fails
form = resp.forms['add_form']
resp = form.submit()
self.assertFormError(resp, 'add_form', None, "Specify either manual name or select from menu.")
# Submit both manual_name and eventlink. Fails
form = resp.forms['add_form']
form['manual_name'] = "asdf "
form['existing_eventlink'] = el2.id
resp = form.submit()
self.assertFormError(resp, 'add_form', None, "Specify only one of manual name or selection from menu.")
# Add manual person to new team
form = resp.forms['add_form']
form['manual_name'] = "manual added"
form['existing_eventlink'] = ""
resp = form.submit()
self.assertRedirects(resp, url)
resp = resp.follow()
resp.mustcontain("<td>Team manual added</td>")
t2 = d.get_confirmed_eventlinks().get(eventlink__manual_name="manual added")
# Add late arrival p2 to team 2
form = resp.forms['add_form']
form['existing_eventlink'] = el2.id
form['team'] = t2.id
resp = form.submit()
self.assertRedirects(resp, url)
resp = resp.follow()
resp.mustcontain("<td>Team a and manual added</td>")
[docs] def test_set_score(self):
e = Event(name="Kata", format=Event.EventFormat.kata)
e.save()
white = Rank.get_kyu(9)
brown = Rank.get_kyu(1)
bb1 = Rank.get_dan(1)
bb9 = Rank.get_dan(9)
d = Division(event=e, gender='MF', start_age=1, stop_age = 99, start_rank=white, stop_rank=bb9)
d.save()
p1 = Person(first_name="a", last_name="", gender='M', age=1, rank=Rank.get_kyu(8), instructor="asdf", confirmed=True)
p1.save()
el1 = EventLink(person=p1, event=e)
el1.save()
p2 = Person(first_name="b", last_name="", gender='M', age=1, rank=Rank.get_kyu(8), instructor="asdf", confirmed=True)
p2.save()
el2 = EventLink(person=p2, event=e)
el2.save()
d.build_format()
bracket = d.get_format()
url = bracket.get_absolute_url()
resp = self.app.get(url)
# Check nothing highlighted
html = resp.html
highlighted = html.find_all(class_="highlight")
self.assertEqual(highlighted, [])
# Update a score
match = bracket.kataround_set.all()[0].katamatch_set.get(eventlink__person=p2)
url = reverse('kata:bracket-match-edit', args=[bracket.id, match.id])
resp = self.app.get(url)
resp.form['score1'] = 1
resp.form['score2'] = 2
resp.form['score3'] = 3
resp.form['score4'] = 4
resp.form['score5'] = 5
resp = resp.form.submit("save")
# Check the updated row
self.assertRedirects(resp, bracket.get_absolute_url() + "?highlight={}".format(match.id))
resp = resp.follow()
html = resp.html
# Check it is highlighted
highlighted = html.find_all(class_="highlight")
self.assertEqual(len(highlighted), 1)
highlighted = highlighted[0]
tds = highlighted.find_all("td")
# Check name
self.assertEqual(tds[0].string, "b")
# Check scores
for i in range(1,6):
self.assertEqual(tds[i].string, "{:.1f}".format(i))
# Check totals
self.assertEqual(tds[6].string, "9")
self.assertEqual(tds[7].string, "15")