def get_page(self): self_uri = self.request.host + self.request.path invalid_xml = self.get_argument('invalid', 'false') self.doc.put(Doc('a').put('aaa')) self.doc.put(self.post_url(self_uri, data={'invalid': invalid_xml})) self.doc.put(Doc('c'))
def test_doc_nested(self): a = Doc('a') b = Doc('b') a.put(b) self.assertXmlEqual( a.to_etree_element(), b"""<?xml version='1.0' encoding='utf-8'?>\n<a><b/></a>""")
def test_doc_nested(self): a = Doc('a') b = Doc('b') b.put('test') a.put(b) self.assertEqual( a.to_string(), """<?xml version='1.0' encoding='utf-8'?>\n<a><b>test</b></a>""")
def test_root_node_doc(self): d1 = Doc('a') d1.put(etree.Comment('1')) d2 = Doc(root_node=d1) d2.put(etree.Comment('2')) self.assertXmlAlmostEqual( d2.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a><!--1--><!--2--></a>""" )
def test_nodes_and_text(self): a = Doc('a') a.put('1') a.put(Doc('b')) a.put('2') a.put(Doc('c')) a.put('3') self.assertXmlAlmostEqual( a.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a>1<b/>2<c/>3</a>""" )
def put_block(id, name, query_suffix=''): text = verstka_query + query_suffix block = Doc('tab') block.put(Doc('name').put(name)) block.put(Doc('text').put(urllib.quote(text.encode('utf-8')))) block.put( Doc('last').put( self.get_url_retry( self.config.api_host + '/1/xml/vacancy/search/', { 'text': utils.parse_text(text), 'items': '5', 'order': '0', 'area': '1', 'professionalAreaId': '1' }))) def put_median(m): median_block = Doc('median') median_block.put(str(m)) block.put(median_block) def count_median_cb(xml, response): if xml is not None: m = count_median(xml) if m: #median_storage.store_today(id, m, self) put_median(m) # self.log.debug('+++++++++++++++++++++++++++++++++++++++') # self.log.debug(storage.get_last_week_salaries(id)) # if median_storage.has_today(id): # self.log.debug('show median using cached value') # put_median(storage.get_today(id)) # else: self.log.debug('make search request to count median') self.get_url_retry(self.config.api_host + '/1/xml/vacancy/search/', { 'text': utils.parse_text(text), 'order': '0', 'notWithoutSalary': 'true', 'items': '40', 'area': '1', 'professionalAreaId': '1' }, callback=count_median_cb) tabs.put(block)
def get_page(self): self.set_header('Content-Type', 'application/rss+xml; charset=UTF-8') self.set_xsl('rss/search.xsl') handler.do_pagedata(self) if (self.get_argument('salary', None)): salary = 'true' else: salary = None search = Doc('search') search.put( self.get_url_retry( self.config.api_host + '/1/xml/vacancy/search/', { 'text': utils.parse_text(self.get_argument('text', None)), 'salary': self.get_argument('salary', None), 'field': '1', 'onlysalary': self.get_argument('onlysalary', None), 'area': '1', 'items': '20', 'metro': self.get_argument('metro', None), 'specialization': self.get_argument( 'specialization', None), 'employment': self.get_argument('employment', None), 'order': self.get_argument('order', None), })) self.doc.put(search)
def get_page(self): self_uri = self.request.host + self.request.path invalid_xml = self.get_argument('invalid', 'false') self.doc.put(etree.fromstring('<a>aaa</a>')) self.doc.put(self.post_url(self_uri, data={'invalid': invalid_xml})) self.doc.put(Doc('c'))
def get_page(self): self.set_xsl('search.xsl') handler.do_pagedata(self) if (self.get_argument('salary', None)): salary = 'true' else: salary = None search = Doc('search') search.put( self.get_url_retry( self.config.api_host + '/1/xml/vacancy/search/', { 'text': utils.parse_text(self.get_argument('text', None)), 'page': self.get_argument('page', None), 'salary': self.get_argument('salary', None), 'currency': 'RUR', 'field': '1', 'onlysalary': self.get_argument('onlysalary', None), 'area': '1', 'items': '20', 'metro': self.get_argument('metro', None), 'specialization': self.get_argument( 'specialization', None), 'employment': self.get_argument('employment', None), 'order': self.get_argument('order', None), 'clusters': 'true' })) self.doc.put(search)
def test_root_node(self): d = Doc(root_node=etree.Element('doc')) d.put(etree.Element('test1')) self.assertXmlEqual( d.to_etree_element(), b"""<?xml version='1.0' encoding='utf-8'?>\n<doc><test1/></doc>""")
def test_future_etree_element(self): d = Doc('a') f = Future() f.set_result(etree.Element('b')) d.put(f) self.assertXmlAlmostEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a><b/></a>""")
def test_simple(self): d = Doc('a') self.assertTrue(d.is_empty()) d.put('test') self.assertFalse(d.is_empty()) self.assertXmlAlmostEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a>test</a>""")
def test_future_list(self): d = Doc('a') f = Future() f.set_result([etree.Comment('ccc'), etree.Element('bbb')]) d.put(f) self.assertXmlEqual( d.to_etree_element(), u"""<?xml version='1.0'?>\n<a><!--ccc--><bbb/></a>""")
def test_other_types(self): a = Doc('a') a.put(1) a.put(2.0) a.put((3, 4, 5)) self.assertEqual( a.to_string(), """<?xml version='1.0' encoding='utf-8'?>\n<a>12.0(3, 4, 5)</a>""")
def test_future_list(self): d = Doc('a') f = Future() f.set_result([etree.Comment('ccc'), etree.Element('bbb')]) d.put(f) self.assertEqual( d.to_string(), """<?xml version='1.0' encoding='utf-8'?>\n<a><!--ccc--><bbb/></a>""" )
def test_future_simple(self): d = Doc('a') f = Future() d.put(f) self.assertXmlAlmostEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a/>""") f.set_result('test') self.assertXmlAlmostEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a>test</a>""")
def test_future_string_value(self): d = Doc('a') f = Future() result = self.get_test_request_result() result._content_type = 'text' result._data = 'plain_text' f.set_result(result) d.put(f) self.assertXmlEqual(d.to_etree_element(), """<?xml version='1.0'?>\n<a></a>""")
def test_failed_future(self): d = Doc('a') f = Future() result = self.get_test_request_result() result._data_parse_error = DataParseError(reason='error', code='code') f.set_result(result) d.put(f) self.assertXmlEqual( d.to_etree_element(), """<?xml version='1.0'?>\n<a><error reason="error" code="code"/></a>""" )
def test_failed_future(self): d = Doc('a') f = Future() result = RequestResult() result.set_exception(FailedRequestException(reason='error', code='code')) f.set_result(result) d.put(f) self.assertXmlAlmostEqual( d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a><error reason="error" code="code"/></a>""" )
def test_simple(self): d = Doc('a') self.assertTrue(d.is_empty()) d.put('test') d.put(u'тест') self.assertFalse(d.is_empty()) self.assertXmlEqual( d.to_etree_element(), b"""<?xml version='1.0' encoding='utf-8'?>\n<a>test\xd1\x82\xd0\xb5\xd1\x81\xd1\x82</a>""" )
def test_serializable(self): class Serializable(object): def __init__(self, tag, value): self.tag = tag self.value = value def to_etree_element(self): result = etree.Element(self.tag) result.text = self.value return result a = Doc('a') a.put(Serializable('testNode', 'vally')) self.assertEqual( a.to_string(), """<?xml version='1.0' encoding='utf-8'?>\n<a><testNode>vally</testNode></a>""" )
def test_simple(self): d = Doc('a') self.assertTrue(d.is_empty()) d.put(None) self.assertXmlEqual(d.to_etree_element(), b'<a/>') node = etree.Element('b') node.text = u'тест' d.put(node) self.assertFalse(d.is_empty()) self.assertXmlEqual( d.to_etree_element(), b"""<?xml version='1.0' encoding='utf-8'?>\n<a><b>\xd1\x82\xd0\xb5\xd1\x81\xd1\x82</b></a>""" )
def test_string_as_root_node(self): d = Doc(root_node='a') self.assertXmlEqual( d.to_etree_element(), b"""<?xml version='1.0' encoding='utf-8'?>\n<a></a>""")
def get_page(self): self.set_xsl('index.xsl') #median_storage = storage.MedianSalaryStorage(self.config.db_filename) tabs = Doc('tabs') self.doc.put(tabs) verstka_query = u'.verstka ' def put_block(id, name, query_suffix=''): text = verstka_query + query_suffix block = Doc('tab') block.put(Doc('name').put(name)) block.put(Doc('text').put(urllib.quote(text.encode('utf-8')))) block.put( Doc('last').put( self.get_url_retry( self.config.api_host + '/1/xml/vacancy/search/', { 'text': utils.parse_text(text), 'items': '5', 'order': '0', 'area': '1', 'professionalAreaId': '1' }))) def put_median(m): median_block = Doc('median') median_block.put(str(m)) block.put(median_block) def count_median_cb(xml, response): if xml is not None: m = count_median(xml) if m: #median_storage.store_today(id, m, self) put_median(m) # self.log.debug('+++++++++++++++++++++++++++++++++++++++') # self.log.debug(storage.get_last_week_salaries(id)) # if median_storage.has_today(id): # self.log.debug('show median using cached value') # put_median(storage.get_today(id)) # else: self.log.debug('make search request to count median') self.get_url_retry(self.config.api_host + '/1/xml/vacancy/search/', { 'text': utils.parse_text(text), 'order': '0', 'notWithoutSalary': 'true', 'items': '40', 'area': '1', 'professionalAreaId': '1' }, callback=count_median_cb) tabs.put(block) put_block('htmlcss', u'HTML и CSS') put_block('javascript', u'Javascript', u'javascript') put_block('jquery', u'jQuery', u'jquery') put_block('xslt', u'XSLT', u'xslt') put_block('php', u'PHP', u'php') put_block('perl', u'Perl', u'perl') for employer_id in [ '1455', '1740', '15478', '43612', '8620', '1057', '301', '4236', '6421', '2180' ]: self.doc.put( Doc('employer').put( self.get_url_retry( self.config.api_host + '/1/xml/employer/{0}/'.format(employer_id))))
def test_other_types(self): a = Doc('a') a.put('1') self.assertRaises(ValueError, a.to_string)
def put_median(m): median_block = Doc('median') median_block.put(str(m)) block.put(median_block)
def test_root_node_invalid(self): d = Doc(root_node='a') d.put(etree.Element('a')) self.assertRaises(ValueError, d.to_etree_element)