ForgeWiki/forgewiki/tests/test_wiki2markdown_history.py
File was removed.
ForgeWiki/forgewiki/tests/test_wiki2markdown_pages.py
File was removed.
ForgeWiki/forgewiki/tests/test_wiki2markdown_talk.py
File was removed.
ForgeWiki/forgewiki/tests/test_wiki2markdown_attachments.py to ForgeWiki/forgewiki/tests/test_wiki2markdown.py
--- a/ForgeWiki/forgewiki/tests/test_wiki2markdown_attachments.py +++ b/ForgeWiki/forgewiki/tests/test_wiki2markdown.py @@ -1,60 +1,83 @@ -import os -from cStringIO import StringIO +import mock -from ming.orm.ormsession import ThreadLocalORMSession - -from alluratest.controller import setup_basic_test, setup_global_objects -from forgewiki.command import wiki2markdown +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 pylons import c +from allura.lib import helpers as h -test_config = 'test.ini#main' +import pylons +pylons.c = pylons.tmpl_context +from pylons import c as context -def setUp(self): - """Method called by nose before running each test""" - setup_basic_test() - setup_global_objects() -def test_wiki2markdown_attachments(): - output_dir = u'/tmp/wiki2markdown' - projects = M.Project.query.find().all() +class TestMySQLExtractor(object): - for p in projects: - wiki_app = p.app_instance('wiki') - if wiki_app is None: - continue - c.app = wiki_app - pages = WM.Page.query.find(dict(app_config_id=wiki_app.config._id)).all() - for p in pages: - p.attach('foo.text', StringIO('Hello, world!')) - ThreadLocalORMSession.flush_all() - ThreadLocalORMSession.close_all() + def setUp(self): + setup_basic_test() + self.options = mock.Mock() + self.options.dump_dir = '/tmp/w2m_test' - cmd = wiki2markdown.Wiki2MarkDownCommand('wiki2markdown') - cmd.run([test_config, '--extract-only', '--output-dir', output_dir, 'attachments']) - cmd.command() + # 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': ''} - projects = M.Project.query.find().all() - for p in projects: - wiki_app = p.app_instance('wiki') - if wiki_app is None: - continue + MySQLExtractor._pages = pages + self.extractor = MySQLExtractor(self.options) - pid = "%s" % p._id - file_path = os.path.join(output_dir, pid, "attachments.json") - assert os.path.isfile(file_path) + def test_extract_pages(self): + self.extractor.extract_pages() - cmd = wiki2markdown.Wiki2MarkDownCommand('wiki2markdown') - cmd.run([test_config, '--load-only', '--output-dir', '/tmp/wiki2markdown', 'attachments']) - cmd.command() + with open('/tmp/w2m_test/pages/1.json', 'r') as f: + json_page = f.read() + assert json_page == '{"text": "Test Text", "title": "Test title"}' - for p in projects: - wiki_app = p.app_instance('wiki') - if wiki_app is None: - continue + 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"}' - pages = WM.Page.query.find(dict(app_config_id=wiki_app.config._id)).all() - for p in pages: - assert '[foo.text](' in p.text - assert 'attachment/foo.text)' in p.text + 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