-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: split and refactor wiki tests.
- Loading branch information
1 parent
3fb16b8
commit b1738e0
Showing
4 changed files
with
212 additions
and
105 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
# coding=utf-8 | ||
from __future__ import absolute_import, print_function, unicode_literals | ||
|
||
from flask import g | ||
from markdown import Markdown | ||
from mock import MagicMock, patch | ||
from six import text_type | ||
from six.moves.urllib.parse import quote_plus | ||
|
||
from abilian.sbe.apps.wiki.markup import SBEWikiLinkExtension | ||
from abilian.sbe.apps.wiki.models import WikiPage | ||
|
||
pytest_plugins = ['abilian.sbe.apps.communities.tests.fixtures'] | ||
|
||
|
||
def test_wikilink_extension(): | ||
text = '/*€(' | ||
wikilink = '[[' + text + ']]' | ||
|
||
def build_url(label, base, end): | ||
return '/?title=' + quote_plus(label.encode('utf-8')) + end | ||
|
||
extension = SBEWikiLinkExtension([('build_url', build_url)]) | ||
ctx = {} | ||
ctx['extensions'] = [extension, 'toc'] | ||
ctx['output_format'] = 'html5' | ||
md = Markdown(**ctx) | ||
|
||
page_exists_mock = MagicMock(return_value=True) | ||
with patch('abilian.sbe.apps.wiki.forms.page_exists', page_exists_mock): | ||
result = md.convert(wikilink) | ||
|
||
qtext = text_type(quote_plus(text.encode('utf-8'))) | ||
expected = '<p><a class="wikilink" href="/?title={href}/">{text}</a></p>' | ||
expected = expected.format(href=qtext, text=text) | ||
assert expected == result | ||
|
||
# make sur the class is 'wikilink new' if page exists' | ||
page_exists_mock = MagicMock(return_value=False) | ||
with patch('abilian.sbe.apps.wiki.forms.page_exists', page_exists_mock): | ||
result = md.convert(wikilink) | ||
|
||
qtext = text_type(quote_plus(text.encode('utf-8'))) | ||
expected = '<p><a class="wikilink new" href="/?title={href}/">{text}</a></p>' | ||
expected = expected.format(href=qtext, text=text) | ||
assert expected == result | ||
|
||
|
||
def test_new_page(user, req_ctx): | ||
g.user = user | ||
|
||
page = WikiPage(title="Some page", body_src='abc') | ||
assert page.title == 'Some page' | ||
assert page.name == 'Some page' | ||
assert page.body_src == 'abc' | ||
assert page.body_html == '<p>abc</p>' | ||
assert len(page.revisions) == 1 | ||
|
||
revision = page.revisions[0] | ||
assert revision.number == 0 | ||
assert revision.author == user | ||
|
||
|
||
def test_rename_page(user, req_ctx): | ||
g.user = user | ||
|
||
page = WikiPage(title="Some page", body_src='abc') | ||
assert page.title == 'Some page' | ||
assert page.name == 'Some page' | ||
|
||
page.title = 'Title Renamed' | ||
assert page.title == 'Title Renamed' | ||
assert page.name == 'Title Renamed' | ||
|
||
page.name = 'Name' | ||
assert page.title == 'Name' | ||
assert page.name == 'Name' | ||
|
||
|
||
def test_create_revision(user, req_ctx): | ||
g.user = user | ||
|
||
page = WikiPage('abc') | ||
page.create_revision("def", "page updated") | ||
|
||
assert len(page.revisions) == 2 | ||
last_revision = page.revisions[1] | ||
assert last_revision.number == 1 | ||
assert last_revision.author == user |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
# coding=utf-8 | ||
from __future__ import absolute_import, print_function, unicode_literals | ||
|
||
import re | ||
|
||
from abilian.testing.util import login | ||
from flask import g, url_for | ||
from pytest import mark | ||
from toolz import first | ||
|
||
from abilian.sbe.apps.wiki import views | ||
|
||
pytest_plugins = ['abilian.sbe.apps.communities.tests.fixtures'] | ||
|
||
|
||
def test_home(client, community1, login_admin): | ||
response = client.get( | ||
url_for("wiki.index", community_id=community1.slug), | ||
) | ||
assert response.status_code == 302 | ||
|
||
response = client.get( | ||
url_for( | ||
"wiki.page", | ||
title='Home', | ||
community_id=community1.slug, | ||
), | ||
) | ||
assert response.status_code == 200 | ||
|
||
|
||
def test_create_page_initial_form(community1, user, req_ctx): | ||
g.user = user | ||
g.community = community1 | ||
view = views.PageCreate() | ||
view.prepare_args([], {}) | ||
form = view.form | ||
assert form['last_revision_id'].data is None | ||
|
||
|
||
@mark.skip # TODO: fixme later | ||
def test_create_page(client, community1, req_ctx): | ||
community = community1 | ||
user = community.test_user | ||
|
||
with login(client, user): | ||
title = 'Some page name' | ||
url = url_for("wiki.page_new", community_id=community.slug) | ||
url += '?title=Some+page+name' | ||
response = client.get(url) | ||
assert response.status_code == 200 | ||
# make sure the title is filled when coming from wikilink | ||
assert 'value="Some page name"' in response.get_data(as_text=True) | ||
|
||
title = 'Some page' | ||
body = "LuuP3jai" | ||
url = url_for("wiki.page_new", community_id=community.slug) | ||
data = {'title': title, 'body_src': body, '__action': "create"} | ||
response = client.post(url, data=data) | ||
assert response.status_code == 302 | ||
|
||
url = url_for( | ||
"wiki.page", | ||
community_id=community.slug, | ||
title=title, | ||
) | ||
response = client.get(url) | ||
assert response.status_code == 200 | ||
assert body in response.get_data(as_text=True) | ||
|
||
# edit | ||
url = url_for( | ||
"wiki.page_edit", | ||
community_id=community.slug, | ||
title=title, | ||
) | ||
response = client.get(url) | ||
assert response.status_code == 200 | ||
|
||
# Slightly hackish way to get the page_id | ||
line = first( | ||
l for l in response.get_data(as_text=True).split("\n") | ||
if 'name="page_id"' in l | ||
) | ||
m = re.search('value="(.*?)"', line) | ||
page_id = int(m.group(1)) | ||
|
||
url = url_for( | ||
"wiki.page_changes", | ||
community_id=community.slug, | ||
title=title, | ||
) | ||
response = client.get(url) | ||
assert response.status_code == 200 | ||
|
||
url = url_for( | ||
"wiki.page_source", | ||
community_id=community.slug, | ||
title=title, | ||
) | ||
response = client.get(url) | ||
assert response.status_code == 200 | ||
|
||
url = url_for("wiki.page_edit", community_id=community.slug) | ||
data = {'title': title, 'page_id': page_id, 'body_src': "abc def"} | ||
data['__action'] = 'edit' | ||
response = client.post(url, data=data) | ||
assert response.status_code == 302 | ||
|
||
url = url_for( | ||
"wiki.page_compare", | ||
rev0="on", | ||
rev1="on", | ||
community_id=community.slug, | ||
title=title, | ||
) | ||
response = client.get(url) | ||
assert response.status_code == 200 |