import testhelpers

from smallwp import wpMarkup

class RenderTest(testhelpers.WPDataTest):
	frob = wpMarkup.WikitextFrobnicator("http://test/wp", 
		testhelpers.WPDataTest.wpData)

	def render(self, wikitext):
		return self.frob.toHtml(wikitext, "Testtext")

	def getLastPara(self, htmltext):
		res = htmltext.split("<p>")[-1].strip()
		if res.endswith("</p>"):
			res = res[:-4]
		return res.strip()

	def assertLastParaBecomes(self, wikitext, htmltext):
		self.assertEqual(self.getLastPara(self.render(wikitext)), htmltext)


class NowikiTest(RenderTest):
	def testSimpleNowiki(self):
		self.assertLastParaBecomes("ab<nowiki>[[c]]{{d}}</nowiki>e",
			"ab[[c]]{{d}}e")

	def testAllNowiki(self):
		self.assertLastParaBecomes("<nowiki>[[c]]{{d}}</nowiki>",
			"[[c]]{{d}}")
	
	def testRecursiveNowiki(self):
		self.assertLastParaBecomes("a<nowiki><nowiki>{{x}}</nowiki></nowiki>b",
			"a<nowiki>{{x}}</nowiki>b")

	def testNowikiNonXML(self):
		self.assertLastParaBecomes("a<nowiki><nowiki>{{x}}</nowiki>b",
			"a<nowiki>{{x}}b")


if __name__=="__main__":
	testhelpers.main(NowikiTest)
