예제 #1
0
	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)
예제 #2
0
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')
예제 #3
0
    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()
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
	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)
예제 #7
0
	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)
예제 #8
0
    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()
예제 #9
0
	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)
예제 #10
0
	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)
예제 #11
0
    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)