Ver código fonte

[tests] added basic tests for page and generator

version-14
Rushabh Mehta 9 anos atrás
pai
commit
5e3bcbe01f
14 arquivos alterados com 76 adições e 12 exclusões
  1. +1
    -1
      frappe/app.py
  2. +1
    -0
      frappe/public/css/website.css
  3. +1
    -0
      frappe/public/less/website.less
  4. +3
    -1
      frappe/templates/includes/login/login.css
  5. +3
    -1
      frappe/templates/includes/login/login.js
  6. +25
    -0
      frappe/tests/test_website.py
  7. +5
    -0
      frappe/website/doctype/blog_post/blog_post.py
  8. +24
    -1
      frappe/website/doctype/blog_post/test_blog_post.py
  9. +6
    -3
      frappe/website/doctype/blog_post/test_records.json
  10. +2
    -2
      frappe/website/render.py
  11. +1
    -0
      frappe/website/router.py
  12. +1
    -2
      frappe/website/website_generator.py
  13. +1
    -1
      frappe/www/login.html
  14. +2
    -0
      frappe/www/login.py

+ 1
- 1
frappe/app.py Ver arquivo

@@ -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


+ 1
- 0
frappe/public/css/website.css Ver arquivo

@@ -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;


+ 1
- 0
frappe/public/less/website.less Ver arquivo

@@ -571,6 +571,7 @@ li .footer-child-item {

.comment-header{
border-bottom: 1px solid @light-border-color;
padding: 30px 0px 15px;
}

.item-search {


+ 3
- 1
frappe/templates/includes/login/login.css Ver arquivo

@@ -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;
}

+ 3
- 1
frappe/templates/includes/login/login.js Ver arquivo

@@ -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 = {};



+ 25
- 0
frappe/tests/test_website.py Ver arquivo

@@ -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)

+ 5
- 0
frappe/website/doctype/blog_post/blog_post.py Ver arquivo

@@ -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



+ 24
- 1
frappe/website/doctype/blog_post/test_blog_post.py Ver arquivo

@@ -4,6 +4,29 @@ from __future__ import unicode_literals
import frappe
import unittest

from frappe.tests.test_website import set_request
from frappe.website.render import render

class TestBlogPost(unittest.TestCase):
pass
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)

+ 6
- 3
frappe/website/doctype/blog_post/test_records.json Ver arquivo

@@ -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
}
]

+ 2
- 2
frappe/website/render.py Ver arquivo

@@ -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


+ 1
- 0
frappe/website/router.py Ver arquivo

@@ -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


+ 1
- 2
frappe/website/website_generator.py Ver arquivo

@@ -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),
})



+ 1
- 1
frappe/www/login.html Ver arquivo

@@ -7,7 +7,7 @@
{% endblock %}

{% block page_content %}
<!-- no-header -->
<!-- {{ for_test }} -->

<div class="login-content">
<form class="form-signin form-login" role="form">


+ 2
- 0
frappe/www/login.py Ver arquivo

@@ -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"))



Carregando…
Cancelar
Salvar