blob: 845a33b5de78d3ff72fa9a2bd995cb6a88e84b2a [file] [log] [blame]
import mock
from forgewiki.command.wiki2markdown.extractors import MySQLExtractor
from forgewiki.command.wiki2markdown.loaders import MediawikiLoader
from alluratest.controller import setup_basic_test
from allura import model as M
from forgewiki import model as WM
from allura.lib import helpers as h
import pylons
pylons.c = pylons.tmpl_context
from pylons import c as context
class TestMySQLExtractor(object):
def setUp(self):
setup_basic_test()
self.options = mock.Mock()
self.options.dump_dir = '/tmp/w2m_test'
# monkey-patch MySQLExtractor for test
def pages(self):
# yield (page_id, page_data)
yield 1, {'title': 'Test title', 'text': 'Test Text'}
yield 2, {'title': 'Main_Page', 'text': 'Main_page text'}
yield 3, {'title': 'Test', 'text': ''}
MySQLExtractor._pages = pages
self.extractor = MySQLExtractor(self.options)
def test_extract_pages(self):
self.extractor.extract_pages()
with open('/tmp/w2m_test/pages/1.json', 'r') as f:
json_page = f.read()
assert json_page == '{"text": "Test Text", "title": "Test title"}'
with open('/tmp/w2m_test/pages/2.json', 'r') as f:
json_page = f.read()
assert json_page == '{"text": "Main_page text", "title": "Main_Page"}'
with open('/tmp/w2m_test/pages/3.json', 'r') as f:
json_page = f.read()
assert json_page == '{"text": "", "title": "Test"}'
class TestMediawikiLoader(object):
def setUp(self):
setup_basic_test()
self.options = mock.Mock()
# need test project with installed wiki app
self.options.nbhd = 'Adobe'
self.options.project = '--init--'
nbhd = M.Neighborhood.query.get(name=self.options.nbhd)
h.set_context(self.options.project, 'wiki', neighborhood=nbhd)
# monkey-patch MediawikiLoader for test
def pages(self):
yield {'title': 'Test title', 'text': "'''bold''' ''italics''"}
yield {'title': 'Main', 'text': "main"}
yield {'title': 'Test', 'text': 'test'}
MediawikiLoader._pages = pages
self.loader = MediawikiLoader(self.options)
def get_page(self, title):
return WM.Page.query.get(app_config_id=context.app.config._id,
title=title)
def test_load_pages(self):
self.loader.load_pages()
page = self.get_page('Test title')
assert '**bold** _italics_' in page.text
page = self.get_page('Main')
assert 'main' in page.text
page = self.get_page('Test')
print page.text, len(page.text)
assert 'test' in page.text