def test_meta_tag_generation(self): blogs = frappe.get_all('Blog Post', fields=['name', 'route'], filters={'published': 1, 'route': ('!=', '')}, limit=1) blog = blogs[0] # create meta tags for this route doc = frappe.new_doc('Website Route Meta') doc.append('meta_tags', { 'key': 'type', 'value': 'blog_post' }) doc.append('meta_tags', { 'key': 'og:title', 'value': 'My Blog' }) doc.name = blog.route doc.insert() # set request on this route set_request(path=blog.route) response = render() self.assertTrue(response.status_code, 200) html = response.get_data().decode() self.assertTrue('''<meta name="type" content="blog_post">''' in html) self.assertTrue('''<meta property="og:title" content="My Blog">''' in html)
def add_route_to_global_search(route): from frappe.website.render import render_page from frappe.tests.test_website import set_request frappe.set_user('Guest') frappe.local.no_cache = True try: set_request(method='GET', path=route) content = render_page(route) soup = BeautifulSoup(content, 'html.parser') page_content = soup.find(class_='page_content') text_content = page_content.text if page_content else '' title = soup.title.text.strip() if soup.title else route value = dict(doctype='Static Web Page', name=route, content=text_content, published=1, title=title, route=route) sync_value_in_queue(value) except (frappe.PermissionError, frappe.DoesNotExistError, frappe.ValidationError, Exception): pass frappe.set_user('Administrator')
def test_homepage_section_custom_html(self): frappe.get_doc({ 'doctype': 'Homepage Section', 'name': 'Custom HTML Section', 'section_based_on': 'Custom HTML', 'section_html': '<div class="custom-section">My custom html</div>', }).insert() set_request(method='GET', path='home') response = render() self.assertEquals(response.status_code, 200) html = frappe.safe_decode(response.get_data()) soup = BeautifulSoup(html, 'html.parser') sections = soup.find('main').find_all(class_='custom-section') self.assertEqual(len(sections), 1) homepage_section = sections[0] self.assertEqual(homepage_section.text, 'My custom html') # cleanup frappe.db.rollback()
def test_homepage_load(self): set_request(method='GET', path='home') response = render() self.assertEquals(response.status_code, 200) html = frappe.safe_decode(response.get_data()) self.assertTrue('<section class="hero-section' in html)
def test_generator_not_found(self): pages = frappe.get_all("Blog Post", fields=["name", "route"], filters={"published": 0}, limit=1) frappe.db.set_value("Blog Post", pages[0].name, "route", "test-route-000") set_request(path="test-route-000") response = render() self.assertTrue(response.status_code, 404)
def test_generator_not_found(self): pages = frappe.get_all('Blog Post', fields=['name', 'route'], filters={'published': 0}, limit =1) frappe.db.set_value('Blog Post', pages[0].name, 'route', 'test-route-000') set_request(path='test-route-000') response = render() self.assertTrue(response.status_code, 404)
def test_homepage_section_card(self): try: frappe.get_doc({ 'doctype': 'Homepage Section', 'name': 'Card Section', 'section_based_on': 'Cards', 'section_cards': [ { 'title': 'Card 1', 'subtitle': 'Subtitle 1', 'content': 'This is test card 1', 'route': '/card-1' }, { 'title': 'Card 2', 'subtitle': 'Subtitle 2', 'content': 'This is test card 2', 'image': 'test.jpg' }, ], 'no_of_columns': 3 }).insert() except frappe.DuplicateEntryError: pass set_request(method='GET', path='home') response = render() self.assertEquals(response.status_code, 200) html = frappe.safe_decode(response.get_data()) soup = BeautifulSoup(html, 'html.parser') sections = soup.find('main').find_all('section') self.assertEqual(len(sections), 3) homepage_section = sections[2] self.assertEqual(homepage_section.h3.text, 'Card Section') cards = homepage_section.find_all(class_="card") self.assertEqual(len(cards), 2) self.assertEqual(cards[0].h5.text, 'Card 1') self.assertEqual(cards[0].a['href'], '/card-1') self.assertEqual(cards[1].p.text, 'Subtitle 2') self.assertEqual( cards[1].find(class_='website-image-lazy')['data-src'], 'test.jpg') # cleanup frappe.db.rollback()
def test_generator_view(self): pages = frappe.get_all('Blog Post', fields=['name', 'route'], filters={'published': 1, 'route': ('!=', '')}, limit =1) set_request(path=pages[0].route) response = render() self.assertTrue(response.status_code, 200) html = response.get_data().decode() self.assertTrue('<article class="blog-content" itemscope itemtype="http://schema.org/BlogPosting">' in html)
def test_generator_view(self): pages = frappe.get_all( "Blog Post", fields=["name", "route"], filters={"published": 1, "route": ("!=", "")}, limit=1 ) set_request(path=pages[0].route) response = render() self.assertTrue(response.status_code, 200) html = response.get_data() self.assertTrue('<article class="blog-content" itemscope itemtype="http://schema.org/BlogPosting">' in html)