[tests] added basic tests for page and generator

This commit is contained in:
Rushabh Mehta 2016-06-27 11:49:53 +05:30
parent 697502b6f4
commit 5e3bcbe01f
14 changed files with 77 additions and 13 deletions

View file

@ -64,7 +64,7 @@ def application(request):
response = frappe.utils.response.download_private_file(request.path)
elif frappe.local.request.method in ('GET', 'HEAD'):
response = frappe.website.render.render(request.path)
response = frappe.website.render.render()
else:
raise NotFound

View file

@ -961,6 +961,7 @@ li .footer-child-item {
}
.comment-header {
border-bottom: 1px solid #EBEFF2;
padding: 30px 0px 15px;
}
.item-search {
border-bottom: 1px solid #d1d8dd;

View file

@ -571,6 +571,7 @@ li .footer-child-item {
.comment-header{
border-bottom: 1px solid @light-border-color;
padding: 30px 0px 15px;
}
.item-search {

View file

@ -1,3 +1,5 @@
/* login-css */
.page-sidebar, #wrap-footer, .page-header {
display: none;
}
@ -114,6 +116,6 @@ p{
.btn-login {
text-transform: uppercase;
letter-spacing: 0.5px;
font-weight: 400;
font-weight: 400;
font-size: 14px;
}

View file

@ -1,5 +1,7 @@
window.disable_signup = {{ disable_signup and "true" or "false" }};
// login.js
// don't remove this line (used in test)
window.disable_signup = {{ disable_signup and "true" or "false" }};
window.login = {};

View file

@ -0,0 +1,25 @@
from __future__ import unicode_literals
import frappe, unittest
from werkzeug.wrappers import Request
from werkzeug.test import EnvironBuilder
from frappe.website import render
def set_request(**kwargs):
builder = EnvironBuilder(**kwargs)
frappe.local.request = Request(builder.get_environ())
class TestWebsite(unittest.TestCase):
def test_page_load(self):
set_request(method='POST', path='login')
response = render.render()
self.assertTrue(response.status_code, 200)
html = response.get_data()
self.assertTrue('/* login-css */' in html)
self.assertTrue('// login.js' in html)
self.assertTrue('<!-- login.html -->' in html)

View file

@ -19,6 +19,11 @@ class BlogPost(WebsiteGenerator):
page_title_field = "title"
)
def make_route(self):
if not self.route:
return 'blog/' + frappe.db.get_value('Blog Category', self.blog_category,
'route') + '/' + self.scrub(self.title)
def get_feed(self):
return self.title

View file

@ -4,6 +4,29 @@ from __future__ import unicode_literals
import frappe
import unittest
class TestBlogPost(unittest.TestCase):
pass
from frappe.tests.test_website import set_request
from frappe.website.render import render
class TestBlogPost(unittest.TestCase):
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)
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)

View file

@ -5,7 +5,8 @@
"blogger": "_Test Blogger",
"content": "Test Blog Content",
"doctype": "Blog Post",
"title": "_Test Blog Post"
"title": "_Test Blog Post",
"published": 1
},
{
"blog_category": "_Test Blog Category 1",
@ -13,7 +14,8 @@
"blogger": "_Test Blogger",
"content": "Test Blog Content",
"doctype": "Blog Post",
"title": "_Test Blog Post 1"
"title": "_Test Blog Post 1",
"published": 1
},
{
"blog_category": "_Test Blog Category 1",
@ -21,6 +23,7 @@
"blogger": "_Test Blogger 1",
"content": "Test Blog Content",
"doctype": "Blog Post",
"title": "_Test Blog Post 2"
"title": "_Test Blog Post 2",
"published": 0
}
]

View file

@ -17,9 +17,9 @@ from frappe.translate import guess_language
class PageNotFoundError(Exception): pass
def render(path, http_status_code=None):
def render(path=None, http_status_code=None):
"""render html page"""
path = resolve_path(path.strip("/ "))
path = resolve_path(frappe.local.request.path.strip('/ '))
data = None
# if in list of already known 404s, send it

View file

@ -18,6 +18,7 @@ def get_page_context(path):
page_context = make_page_context(path)
if can_cache(page_context.no_cache):
page_context_cache[frappe.local.lang] = page_context
frappe.cache().hset("page_context", path, page_context_cache)
return page_context

View file

@ -18,7 +18,7 @@ class WebsiteGenerator(Document):
def autoname(self):
if not self.name and self.meta.autoname != "hash":
self.name = self.make_route()
self.name = self.scrub(self.get(self.website.page_title_field or "title"))
def onload(self):
self.get("__onload").update({
@ -69,7 +69,6 @@ class WebsiteGenerator(Document):
"ref_doctype":self.doctype,
"idx": self.idx,
"docname": self.name,
"route": route,
"controller": get_module_name(self.doctype, self.meta.module),
})

View file

@ -7,7 +7,7 @@
{% endblock %}
{% block page_content %}
<!-- no-header -->
<!-- {{ for_test }} -->
<div class="login-content">
<form class="form-signin form-login" role="form">

View file

@ -17,6 +17,8 @@ def get_context(context):
raise frappe.Redirect
# get settings from site config
context.no_header = True
context.for_test = 'login.html'
context["title"] = "Login"
context["disable_signup"] = frappe.utils.cint(frappe.db.get_value("Website Settings", "Website Settings", "disable_signup"))