"""unittests for gct.apptest module"""fromcStringIOimportStringIOfromunittestimportTestSuitefromlogilab.common.testlibimport(TestCase,unittest_main,mock_object,SkipAwareTextTestRunner)fromcubicweb.devtoolsimporthtmlparserfromcubicweb.devtools.testlibimportWebTest,EnvBasedTCclassWebTestTC(TestCase):defsetUp(self):output=StringIO()self.runner=SkipAwareTextTestRunner(stream=output)deftest_error_raised(self):classMyWebTest(WebTest):deftest_error_view(self):self.add_entity('Bug',title=u"bt")self.view('raising',self.execute('Bug B'),template=None)deftest_correct_view(self):self.view('primary',self.execute('EUser U'),template=None)tests=[MyWebTest('test_error_view'),MyWebTest('test_correct_view')]result=self.runner.run(TestSuite(tests))self.assertEquals(result.testsRun,2)self.assertEquals(len(result.errors),0)self.assertEquals(len(result.failures),1)classTestLibTC(EnvBasedTC):deftest_add_entity_with_relation(self):bug=self.add_entity(u'Bug',title=u"toto")self.add_entity(u'Bug',title=u"tata",identical_to=bug)rset=self.execute('Any BA WHERE BA is Bug, BA title "toto"')self.assertEquals(len(rset),1)bug=tuple(rset.entities())[0]self.assertEquals(bug.identical_to[0].title,"tata")HTML_PAGE=u"""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html> <head><title>need a title</title></head> <body> <h1>Hello World !</h1> </body></html>"""HTML_PAGE2=u"""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html> <head><title>need a title</title></head> <body> <h1>Test</h1> <h1>Hello <a href="http://www.google.com">world</a> !</h1> <h2>h2 title</h2> <h3>h3 title</h3> <h2>antoher h2 title</h2> <h4>h4 title</h4> <p><a href="http://www.logilab.org">Logilab</a> introduces CW !</p> </body></html>"""HTML_PAGE_ERROR=u"""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html> <head><title>need a title</title></head> <body> Logilab</a> introduces CW ! </body></html>"""HTML_NON_STRICT=u"""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html> <head><title>need a title</title></head> <body> <h1><a href="something.com">title</h1> </body></html>"""classHTMLPageInfoTC(TestCase):"""test cases for PageInfo"""defsetUp(self):parser=htmlparser.DTDValidator()self.page_info=parser.parse_string(HTML_PAGE2)deftest_source1(self):"""make sure source is stored correctly"""self.assertEquals(self.page_info.source,HTML_PAGE2)deftest_source2(self):"""make sure source is stored correctly - raise exception"""parser=htmlparser.DTDValidator()self.assertRaises(AssertionError,parser.parse_string,HTML_PAGE_ERROR)deftest_has_title_no_level(self):"""tests h? tags information"""self.assertEquals(self.page_info.has_title('Test'),True)self.assertEquals(self.page_info.has_title('Test '),False)self.assertEquals(self.page_info.has_title('Tes'),False)self.assertEquals(self.page_info.has_title('Hello world !'),True)deftest_has_title_level(self):"""tests h? tags information"""self.assertEquals(self.page_info.has_title('Test',level=1),True)self.assertEquals(self.page_info.has_title('Test',level=2),False)self.assertEquals(self.page_info.has_title('Test',level=3),False)self.assertEquals(self.page_info.has_title('Test',level=4),False)self.assertRaises(IndexError,self.page_info.has_title,'Test',level=5)deftest_has_title_regexp_no_level(self):"""tests has_title_regexp() with no particular level specified"""self.assertEquals(self.page_info.has_title_regexp('h[23] title'),True)deftest_has_title_regexp_level(self):"""tests has_title_regexp() with a particular level specified"""self.assertEquals(self.page_info.has_title_regexp('h[23] title',2),True)self.assertEquals(self.page_info.has_title_regexp('h[23] title',3),True)self.assertEquals(self.page_info.has_title_regexp('h[23] title',4),False)deftest_appears(self):"""tests PageInfo.appears()"""self.assertEquals(self.page_info.appears('CW'),True)self.assertEquals(self.page_info.appears('Logilab'),True)self.assertEquals(self.page_info.appears('Logilab introduces'),True)self.assertEquals(self.page_info.appears('H2 title'),False)deftest_has_link(self):"""tests has_link()"""self.assertEquals(self.page_info.has_link('Logilab'),True)self.assertEquals(self.page_info.has_link('logilab'),False)self.assertEquals(self.page_info.has_link('Logilab','http://www.logilab.org'),True)self.assertEquals(self.page_info.has_link('Logilab','http://www.google.com'),False)deftest_has_link_regexp(self):"""test has_link_regexp()"""self.assertEquals(self.page_info.has_link_regexp('L[oi]gilab'),True)self.assertEquals(self.page_info.has_link_regexp('L[ai]gilab'),False)if__name__=='__main__':unittest_main()