diff --git a/ietf/iesg/factories.py b/ietf/iesg/factories.py new file mode 100644 index 000000000..504502328 --- /dev/null +++ b/ietf/iesg/factories.py @@ -0,0 +1,16 @@ +# Copyright The IETF Trust 2016-2021, All Rights Reserved +# -*- coding: utf-8 -*- + +import debug # pyflakes:ignore +import factory + +from ietf.iesg.models import TelechatAgendaItem + + +class IESGMgmtItemFactory(factory.DjangoModelFactory): + class Meta: + model = TelechatAgendaItem + + type = 3 + text = factory.Faker('paragraph', nb_sentences=3) + title = factory.Faker('sentence', nb_words=3) diff --git a/ietf/iesg/tests.py b/ietf/iesg/tests.py index a0b2eaa3b..fb5e53a6c 100644 --- a/ietf/iesg/tests.py +++ b/ietf/iesg/tests.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2009-2020, All Rights Reserved +# Copyright The IETF Trust 2009-2021, All Rights Reserved # -*- coding: utf-8 -*- @@ -27,6 +27,8 @@ from ietf.iesg.models import TelechatDate from ietf.name.models import StreamName from ietf.person.models import Person from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent +from ietf.iesg.factories import IESGMgmtItemFactory + class IESGTests(TestCase): def test_feed(self): @@ -131,6 +133,9 @@ class IESGAgendaTests(TestCase): telechat_date=date, returning_item=True) + self.mgmt_items = [ ] + for i in range(0, 10): + self.mgmt_items.append(IESGMgmtItemFactory()) def tearDown(self): settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path @@ -141,6 +146,7 @@ class IESGAgendaTests(TestCase): statchg = self.telechat_docs["statchg"] conflrev = self.telechat_docs["conflrev"] charter = self.telechat_docs["charter"] + mgmtitem = self.mgmt_items # put on agenda date = datetime.date.today() + datetime.timedelta(days=50) @@ -275,7 +281,6 @@ class IESGAgendaTests(TestCase): conflrev.set_state(State.objects.get(type="conflrev", slug="needshep")) self.assertTrue(conflrev in agenda_data(date_str)["sections"]["3.4.3"]["docs"]) - # 4 WGs telechat_event.doc = charter telechat_event.save() @@ -304,6 +309,11 @@ class IESGAgendaTests(TestCase): #for n, s in agenda_data(date_str)["sections"].iteritems(): # print n, s.get("docs") if "docs" in s else s["title"] + # 10 Management Items + for i, mi in enumerate(mgmtitem, start=1): + s = "6." + str(i) + self.assertEqual(mi.title, agenda_data(date_str)["sections"][s]['title']) + def test_feed(self): r = self.client.get("/feed/iesg-agenda/") self.assertEqual(r.status_code, 200) @@ -338,6 +348,14 @@ class IESGAgendaTests(TestCase): self.assertContains(r, d.name, msg_prefix="%s '%s' not in response" % (k, d.name)) self.assertContains(r, d.title, msg_prefix="%s '%s' title not in response" % (k, d.title)) + for i, mi in enumerate(self.mgmt_items, start=1): + s = "6." + str(i) + self.assertContains(r, s, msg_prefix="Section '%s' not in response" % s) + self.assertContains(r, mi.title, msg_prefix="Management item title '%s' not in response" % mi.title) + + # Make sure the sort places 6.9 before 6.10 + self.assertLess(r.content.find(b"6.9"), r.content.find(b"6.10")) + def test_agenda_txt(self): r = self.client.get(urlreverse("ietf.iesg.views.agenda_txt")) self.assertEqual(r.status_code, 200) @@ -350,6 +368,14 @@ class IESGAgendaTests(TestCase): self.assertContains(r, d.name, msg_prefix="%s '%s' not in response" % (k, d.name)) self.assertContains(r, d.title, msg_prefix="%s '%s' title not in response" % (k, d.title)) + for i, mi in enumerate(self.mgmt_items, start=1): + s = "6." + str(i) + self.assertContains(r, s, msg_prefix="Section '%s' not in response" % s) + self.assertContains(r, mi.title, msg_prefix="Management item title '%s' not in response" % mi.title) + + # Make sure the sort places 6.9 before 6.10 + self.assertLess(r.content.find(b"6.9"), r.content.find(b"6.10")) + def test_agenda_scribe_template(self): r = self.client.get(urlreverse("ietf.iesg.views.agenda_scribe_template")) self.assertEqual(r.status_code, 200) diff --git a/ietf/iesg/views.py b/ietf/iesg/views.py index b023e1612..b487aac30 100644 --- a/ietf/iesg/views.py +++ b/ietf/iesg/views.py @@ -200,7 +200,7 @@ def agenda(request, date=None): request.session['ballot_edit_return_point'] = request.path_info return render(request, "iesg/agenda.html", { "date": data["date"], - "sections": sorted(data["sections"].items()), + "sections": sorted(data["sections"].items(), key=lambda x:[int(p) for p in x[0].split('.')]), "settings": settings, } ) @@ -208,7 +208,7 @@ def agenda_txt(request, date=None): data = agenda_data(date) return render(request, "iesg/agenda.txt", { "date": data["date"], - "sections": sorted(data["sections"].items()), + "sections": sorted(data["sections"].items(), key=lambda x:[int(p) for p in x[0].split('.')]), "domain": Site.objects.get_current().domain, }, content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)