Add tests for new material code
- Legacy-Id: 7850
This commit is contained in:
parent
6e83335f0f
commit
602feff7c9
|
@ -217,6 +217,22 @@ class DocTestCase(TestCase):
|
|||
r = self.client.get(urlreverse("doc_view", kwargs=dict(name='conflict-review-imaginary-irtf-submission')))
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
def test_document_material(self):
|
||||
draft = make_test_data()
|
||||
|
||||
doc = Document.objects.create(
|
||||
name="slides-testteam-test-slides",
|
||||
rev="00",
|
||||
title="Test Slides",
|
||||
group=draft.group,
|
||||
type_id="slides"
|
||||
)
|
||||
doc.set_state(State.objects.get(type="slides", slug="active"))
|
||||
DocAlias.objects.create(name=doc.name, document=doc)
|
||||
|
||||
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name)))
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
def test_document_ballot(self):
|
||||
doc = make_test_data()
|
||||
ballot = doc.active_ballot()
|
||||
|
|
137
ietf/doc/tests_material.py
Normal file
137
ietf/doc/tests_material.py
Normal file
|
@ -0,0 +1,137 @@
|
|||
# Copyright The IETF Trust 2011, All Rights Reserved
|
||||
|
||||
import os, shutil, datetime
|
||||
from StringIO import StringIO
|
||||
from pyquery import PyQuery
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse as urlreverse
|
||||
|
||||
from ietf.doc.models import Document, State, DocAlias
|
||||
from ietf.group.models import Group
|
||||
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
|
||||
from ietf.utils.test_data import make_test_data
|
||||
|
||||
class GroupMaterialTests(TestCase):
|
||||
def setUp(self):
|
||||
self.materials_dir = os.path.abspath("tmp-document-dir")
|
||||
os.mkdir(self.materials_dir)
|
||||
os.mkdir(os.path.join(self.materials_dir, "slides"))
|
||||
settings.DOCUMENT_PATH_PATTERN = self.materials_dir + "/{doc.type_id}/"
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.materials_dir)
|
||||
|
||||
def create_slides(self):
|
||||
group = Group.objects.create(type_id="team", acronym="testteam", name="Test Team", state_id="active")
|
||||
|
||||
doc = Document.objects.create(name="slides-testteam-test-file", rev="00", type_id="slides", group=group)
|
||||
doc.set_state(State.objects.get(type="slides", slug="active"))
|
||||
DocAlias.objects.create(name=doc.name, document=doc)
|
||||
|
||||
return doc
|
||||
|
||||
def test_choose_material_type(self):
|
||||
group = Group.objects.create(type_id="team", acronym="testteam", name="Test Team", state_id="active")
|
||||
|
||||
url = urlreverse('ietf.doc.views_material.choose_material_type', kwargs=dict(acronym=group.acronym))
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
# normal get
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertTrue("Slides" in r.content)
|
||||
|
||||
def test_upload_slides(self):
|
||||
group = Group.objects.create(type_id="team", acronym="testteam", name="Test Team", state_id="active")
|
||||
|
||||
url = urlreverse('group_new_material', kwargs=dict(acronym=group.acronym, doc_type="slides"))
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
# normal get
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
content = "%PDF-1.5\n..."
|
||||
test_file = StringIO(content)
|
||||
test_file.name = "unnamed.pdf"
|
||||
|
||||
# faulty post
|
||||
r = self.client.post(url, dict(title="", state="", material=test_file))
|
||||
|
||||
self.assertEqual(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertTrue(len(q('form ul.errorlist')) > 0)
|
||||
|
||||
test_file.seek(0)
|
||||
|
||||
# post
|
||||
r = self.client.post(url, dict(title="Test File",
|
||||
state=State.objects.get(type="slides", slug="active").pk,
|
||||
material=test_file))
|
||||
self.assertEqual(r.status_code, 302)
|
||||
|
||||
doc = Document.objects.get(name="slides-%s-test-file" % group.acronym)
|
||||
self.assertEqual(doc.rev, "00")
|
||||
self.assertEqual(doc.title, "Test File")
|
||||
self.assertEqual(doc.get_state_slug(), "active")
|
||||
|
||||
with open(os.path.join(self.materials_dir, "slides", doc.name + "-" + doc.rev + ".pdf")) as f:
|
||||
self.assertEqual(f.read(), content)
|
||||
|
||||
# check that posting same title is prevented
|
||||
test_file.seek(0)
|
||||
|
||||
r = self.client.post(url, dict(title="Test File",
|
||||
state=State.objects.get(type="slides", slug="active").pk,
|
||||
material=test_file))
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertTrue(len(q('form ul.errorlist')) > 0)
|
||||
|
||||
def test_change_state(self):
|
||||
doc = self.create_slides()
|
||||
|
||||
url = urlreverse('material_edit', kwargs=dict(name=doc.name, action="state"))
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
# post
|
||||
r = self.client.post(url, dict(state=State.objects.get(type="slides", slug="deleted").pk))
|
||||
self.assertEqual(r.status_code, 302)
|
||||
doc = Document.objects.get(name=doc.name)
|
||||
self.assertEqual(doc.get_state_slug(), "deleted")
|
||||
|
||||
def test_edit_title(self):
|
||||
doc = self.create_slides()
|
||||
|
||||
url = urlreverse('material_edit', kwargs=dict(name=doc.name, action="title"))
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
# post
|
||||
r = self.client.post(url, dict(title="New title"))
|
||||
self.assertEqual(r.status_code, 302)
|
||||
doc = Document.objects.get(name=doc.name)
|
||||
self.assertEqual(doc.title, "New title")
|
||||
|
||||
def test_revise(self):
|
||||
doc = self.create_slides()
|
||||
|
||||
url = urlreverse('material_edit', kwargs=dict(name=doc.name, action="revise"))
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
|
||||
content = "some text"
|
||||
test_file = StringIO(content)
|
||||
test_file.name = "unnamed.txt"
|
||||
|
||||
# post
|
||||
r = self.client.post(url, dict(title="New title",
|
||||
state=State.objects.get(type="slides", slug="active").pk,
|
||||
material=test_file))
|
||||
self.assertEqual(r.status_code, 302)
|
||||
doc = Document.objects.get(name=doc.name)
|
||||
self.assertEqual(doc.rev, "01")
|
||||
self.assertEqual(doc.title, "New title")
|
||||
self.assertEqual(doc.get_state_slug(), "active")
|
||||
|
||||
with open(os.path.join(self.materials_dir, "slides", doc.name + "-" + doc.rev + ".txt")) as f:
|
||||
self.assertEqual(f.read(), content)
|
||||
|
|
@ -192,6 +192,50 @@ class GroupPagesTests(TestCase):
|
|||
self.assertTrue(milestone.desc in r.content)
|
||||
self.assertTrue(milestone.docs.all()[0].name in r.content)
|
||||
|
||||
def test_group_about(self):
|
||||
draft = make_test_data()
|
||||
group = Group.objects.create(
|
||||
type_id="team",
|
||||
acronym="testteam",
|
||||
name="Test Team",
|
||||
description="The test team is testing.",
|
||||
state_id="active",
|
||||
)
|
||||
|
||||
url = group.about_url()
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertTrue(group.name in r.content)
|
||||
self.assertTrue(group.acronym in r.content)
|
||||
self.assertTrue(group.description in r.content)
|
||||
|
||||
def test_materials(self):
|
||||
draft = make_test_data()
|
||||
group = Group.objects.create(type_id="team", acronym="testteam", name="Test Team", state_id="active")
|
||||
|
||||
doc = Document.objects.create(
|
||||
name="slides-testteam-test-slides",
|
||||
rev="00",
|
||||
title="Test Slides",
|
||||
group=group,
|
||||
type_id="slides",
|
||||
)
|
||||
doc.set_state(State.objects.get(type="slides", slug="active"))
|
||||
DocAlias.objects.create(name=doc.name, document=doc)
|
||||
|
||||
url = urlreverse("group_materials", kwargs={ 'acronym': group.acronym })
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertTrue(doc.title in r.content)
|
||||
self.assertTrue(doc.name in r.content)
|
||||
|
||||
# try deleting the document and check it's gone
|
||||
doc.set_state(State.objects.get(type="slides", slug="deleted"))
|
||||
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertTrue(doc.title not in r.content)
|
||||
|
||||
def test_history(self):
|
||||
draft = make_test_data()
|
||||
group = draft.group
|
||||
|
|
Loading…
Reference in a new issue