def test_api(self): crs = CourseOffering.objects.get(slug=TEST_COURSE_SLUG) memb = Member.objects.get(offering=crs, person__userid="ggbaker") person = Person.objects.get(userid='ggbaker') p = Page(offering=crs, label="PageExists") p.save() v = PageVersion(page=p, title="Page Exists", wikitext="Original Contents", editor=memb, comment="original page") v.save() from dashboard.models import new_feed_token token = new_feed_token() updata = u"""{ "userid": "ggbaker", "token": "%s", "pages": [ { "label": "Index", "title": "The Coursé Page", "can_read": "ALL", "can_write": "INST", "wikitext-base64": "VGhpcyBwYWdlIGlzIHNwZWNpYWwgaW4gKipzb21lKiogd2F5LiBcKHh+XjIrMSA9IFxmcmFjezF9ezJ9XCkuCgpHb29kYnllIHdvcmxkIQ==", "comment": "page creation comment", "use_math": true }, { "label": "PageExists", "new_label": "PageChanged", "title": "Another Page", "can_read": "STUD", "wikitext": "This is some **new** page\\n\\ncontent." } ] }""" % (token) # make a request with no auth token in place c = Client() url = reverse('pages.views.api_import', kwargs={'course_slug': crs.slug}) response = c.post(url, data=updata.encode('utf8'), content_type="application/json") self.assertEquals(response.status_code, 403) # create token and try again person.config['pages-token'] = token person.save() response = c.post(url, data=updata.encode('utf8'), content_type="application/json") self.assertEquals(response.status_code, 200) # make sure the data arrived self.assertEquals(Page.objects.filter(offering=crs, label="PageExists").count(), 0) p = Page.objects.get(offering=crs, label="PageChanged") v = p.current_version() self.assertEqual(v.title, "Another Page") self.assertEqual(v.get_wikitext(), "This is some **new** page\n\ncontent.") p = Page.objects.get(offering=crs, label="Index") v = p.current_version() self.assertEqual(v.title, u"The Cours\u00e9 Page") self.assertEqual(v.get_wikitext(), 'This page is special in **some** way. \\(x~^2+1 = \\frac{1}{2}\\).\n\nGoodbye world!') self.assert_('math' in v.config) self.assertEqual(v.config['math'], True)
def test_macros(self): """ Test macro behaviour """ crs = CourseOffering.objects.get(slug=TEST_COURSE_SLUG) memb = Member.objects.get(offering=crs, person__userid="ggbaker") p = Page(offering=crs, label="Index") p.save() v = PageVersion(page=p, title="Index Page", wikitext="one +two+ three +four+", editor=memb) v.save() # no macros defined: rendered as-is self.assertEqual(p.current_version().html_contents().strip(), u"<p>one +two+ three +four+</p>") mp = Page(offering=crs, label=MACRO_LABEL) mp.save() mv = PageVersion(page=mp, title="Macros", wikitext="two: 22\nfour: 4444", editor=memb) mv.save() # macros defined: should be substituted self.assertEqual(p.current_version().html_contents().strip(), u"<p>one 22 three 4444</p>") mp.safely_delete() # macros disappear: back to original self.assertEqual(p.current_version().html_contents().strip(), u"<p>one +two+ three +four+</p>")
def test_macros(self): """ Test macro behaviour """ crs = CourseOffering.objects.get(slug=TEST_COURSE_SLUG) memb = Member.objects.get(offering=crs, person__userid="ggbaker") p = Page(offering=crs, label="Index") p.save() v = PageVersion(page=p, title="Index Page", wikitext="one +two+ three +four+", editor=memb) v.save() # no macros defined: rendered as-is self.assertEqual(p.current_version().html_contents().strip(), "<p>one +two+ three +four+</p>") mp = Page(offering=crs, label=MACRO_LABEL) mp.save() mv = PageVersion(page=mp, title="Macros", wikitext="two: 22\nfour: 4444", editor=memb) mv.save() # macros defined: should be substituted self.assertEqual(p.current_version().html_contents().strip(), "<p>one 22 three 4444</p>") mp.label = 'NOT_MACROS' mp.save() # macros disappear: back to original self.assertEqual(p.current_version().html_contents().strip(), "<p>one +two+ three +four+</p>")