def test_no_links(self): a = WikiPage.get_by_title(u"A") a.update_content(u"Hello", 0, "") a = WikiPage.get_by_title(u"A") self.assertEqual({}, a.inlinks) self.assertEqual({}, a.outlinks)
def test_no_links(self): a = WikiPage.get_by_title(u'A') a.update_content(u'Hello', 0) a = WikiPage.get_by_title(u'A') self.assertEqual({}, a.inlinks) self.assertEqual({}, a.outlinks)
def test_normal_links(self): page_a = WikiPage.get_by_title(u"A") page_a.update_content(u"[[B]]", 0) page_b = WikiPage.get_by_title(u"B") self.assertEqual([u"A"], page_b.data["inlinks"]) self.assertEqual([u"B"], page_a.data["outlinks"])
def test_delete_published_page(self): self.login('*****@*****.**', 'a', is_admin=True) WikiPage.get_by_title(u'Hello 2').delete(self.get_cur_user()) newer, older = WikiPage.get_posts_of(None) self.assertEqual(u'Hello 3', older.newer_title) self.assertEqual(u'Hello 1', newer.older_title)
def test_delete_published_page(self): self.login('*****@*****.**', 'a', is_admin=True) WikiPage.get_by_title(u'Hello 2').delete(self.get_cur_user()) newer, older = WikiPage.get_posts_of(None, 20) self.assertEqual(u'Hello 3', older.newer_title) self.assertEqual(u'Hello 1', newer.older_title)
def test_normal_links(self): page_a = WikiPage.get_by_title(u'A') page_a.update_content(u'[[B]]', 0) page_b = WikiPage.get_by_title(u'B') self.assertEqual([u'A'], page_b.data['inlinks']) self.assertEqual([u'B'], page_a.data['outlinks'])
def test_compare_yaml_and_embedded_data(self): page1 = WikiPage.get_by_title(u'A') page1.update_content(u'.schema Book\n #!yaml/schema\n datePublished: "1979-03-01"\n', 0) page2 = WikiPage.get_by_title(u'B') page2.update_content(u'.schema Book\n\n[[datePublished::1979-03-01]]', 0) self.assertEqual(page1.data['datePublished'], page2.data['datePublished']) self.assertEqual(page1.outlinks, page2.outlinks)
def test_add_schema(self): self.update_page(u'[[1979]]', u'A') self.update_page(u'.schema Book\n[[1979]]', u'A') page = WikiPage.get_by_title(u'A') year = WikiPage.get_by_title(u'1979') self.assertEqual({u'Book/relatedTo': [u'1979']}, page.outlinks) self.assertEqual({u'Book/relatedTo': [u'A']}, year.inlinks)
def test_delete(self): self.login('*****@*****.**', 'ak', is_admin=True) memo = self.update_page(u'Hello', u'GEB/Chapter 1/Memo') memo.delete(self.get_cur_user()) self.assertEqual({}, WikiPage.get_by_title(u'GEB').inlinks) self.assertEqual({}, WikiPage.get_by_title(u'GEB/Chapter 1').inlinks)
def test_remove_schema(self): self.update_page(u'.schema Code\n[[1979]]', u'A') self.update_page(u'[[1979]]', u'A') page = WikiPage.get_by_title(u'A') year = WikiPage.get_by_title(u'1979') self.assertEqual({u'Article/relatedTo': [u'1979']}, page.outlinks) self.assertEqual({u'Article/relatedTo': [u'A']}, year.inlinks)
def test_update_rel(self): self.update_page(u'[[1979]]', u'A') self.update_page(u'.schema Person\n[[birthDate::1979]]', u'A') page = WikiPage.get_by_title(u'A') year = WikiPage.get_by_title(u'1979') self.assertEqual({u'Person/birthDate': [u'1979']}, page.outlinks) self.assertEqual({u'Person/birthDate': [u'A']}, year.inlinks)
def test_years_section(self): page = WikiPage.get_by_title(u"2") ss = page.special_sections[u"years"] self.assertEqual([u"2 BCE", u"1 BCE", u"1", u"2", u"3", u"4", u"5"], ss[u"years"]) page = WikiPage.get_by_title(u"2 BCE") ss = page.special_sections[u"years"] self.assertEqual([u"5 BCE", u"4 BCE", u"3 BCE", u"2 BCE", u"1 BCE", u"1", u"2"], ss[u"years"])
def test_two_aliases(self): self.update_page(u'.redirect C', u'B') self.update_page(u'[[C]]', u'A') self.update_page(u'[[B]]', u'A') a = WikiPage.get_by_title(u'A') c = WikiPage.get_by_title(u'C') self.assertEqual({u'Article/relatedTo': [u'A']}, c.inlinks) self.assertEqual({u'Article/relatedTo': [u'C']}, a.outlinks)
def test_link_in_yaml_schema_block(self): page = WikiPage.get_by_title(u'A') page.update_content(u'.schema Book\n #!yaml/schema\n author: Richard Dawkins\n', 0) page = WikiPage.get_by_title(u'A') self.assertEqual({u'Book/author': [u'Richard Dawkins']}, page.outlinks) rd = WikiPage.get_by_title(u'Richard Dawkins') self.assertEqual({u'Book/author': [u'A']}, rd.inlinks)
def setUp(self): super(WikiPageDeleteTest, self).setUp() self.login('*****@*****.**', 'a') self.update_page(u'Hello [[B]]', u'A') self.update_page(u'Hello [[A]]', u'B') # reload self.pagea = WikiPage.get_by_title(u'A') self.pageb = WikiPage.get_by_title(u'B')
def test_older_newer_isolation(self): b1p1 = WikiPage.get_by_title(u'b1p1') b1p2 = WikiPage.get_by_title(u'b1p2') b2p1 = WikiPage.get_by_title(u'b2p1') b2p2 = WikiPage.get_by_title(u'b2p2') self.assertEqual('b1p2', b1p1.newer_title) self.assertEqual('b1p1', b1p2.older_title) self.assertEqual('b2p2', b2p1.newer_title) self.assertEqual('b2p1', b2p2.older_title)
def test_adding_redirect_should_change_inout_links(self): self.update_page(u'[[B]]', u'A') self.update_page(u'.redirect C', u'B') a = WikiPage.get_by_title(u'A') b = WikiPage.get_by_title(u'B') c = WikiPage.get_by_title(u'C') self.assertEqual({u'Article/relatedTo': [u'C']}, a.outlinks) self.assertEqual({}, b.inlinks) self.assertEqual({}, b.outlinks) self.assertEqual({u'Article/relatedTo': [u'A']}, c.inlinks)
def test_years_section(self): page = WikiPage.get_by_title(u'2') ss = page.special_sections[u'years'] self.assertEqual([u'2 BCE', u'1 BCE', u'1', u'2', u'3', u'4', u'5'], ss[u'years']) page = WikiPage.get_by_title(u'2 BCE') ss = page.special_sections[u'years'] self.assertEqual( [u'5 BCE', u'4 BCE', u'3 BCE', u'2 BCE', u'1 BCE', u'1', u'2'], ss[u'years'])
def test_redirect(self): a = WikiPage.get_by_title(u"A") a.update_content(u"[[B]]", 0, "") b = WikiPage.get_by_title(u"B") b.update_content(u".redirect C", 0, "") c = WikiPage.get_by_title(u"C") c.update_content(u"[[D]]", 0, "") d = WikiPage.get_by_title(u"D") d.update_content(u"Destination", 0, "") a.update_related_links() self.assertFalse(u"D" in a.related_links)
def test_update_related_links(self): a = WikiPage.get_by_title(u'A') a.update_content(u'[[B]], [[C]], [[D]]', 0) b = WikiPage.get_by_title(u'B') b.update_content(u'[[D]], [[E]]', 0) c = WikiPage.get_by_title(u'C') c.update_content(u'[[A]]', 0) for _ in range(10): a.update_related_links()
def test_second_publish(self): page1 = WikiPage.get_by_title(u'Hello 1') page1.update_content(u'.pub\nHello 1', 0) page2 = WikiPage.get_by_title(u'Hello 2') page2.update_content(u'.pub\nHello 2', 0) posts = WikiPage.get_published_posts(None, 20) self.assertEqual(2, len(posts)) self.assertEqual(page2.title, posts[1].newer_title) self.assertEqual(page1.title, posts[0].older_title)
def test_redirect(self): a = WikiPage.get_by_title(u'A') a.update_content(u'[[B]]', 0) b = WikiPage.get_by_title(u'B') b.update_content(u'.redirect C', 0) c = WikiPage.get_by_title(u'C') c.update_content(u'[[D]]', 0) d = WikiPage.get_by_title(u'D') d.update_content(u'Destination', 0) a.update_related_links() self.assertTrue(u'D' in a.related_links)
def test_update_related_links(self): a = WikiPage.get_by_title(u"A") a.update_content(u"[[B]], [[C]], [[D]]", 0, "") b = WikiPage.get_by_title(u"B") b.update_content(u"[[D]], [[E]]", 0, "") c = WikiPage.get_by_title(u"C") c.update_content(u"[[A]]", 0, "") for _ in range(10): a.update_related_links()
def test_second_publish(self): page1 = WikiPage.get_by_title(u'Hello 1') page1.update_content(u'.pub\nHello 1', 0, '') page2 = WikiPage.get_by_title(u'Hello 2') page2.update_content(u'.pub\nHello 2', 0, '') posts = WikiPage.get_published_posts(None, 20) self.assertEqual(2, len(posts)) self.assertEqual(page2.title, posts[1].newer_title) self.assertEqual(page1.title, posts[0].older_title)
def test_years(self): titles = [u"10000 BCE", u"10000", u"1", u"1984", u"600 BCE"] for t in titles: page = WikiPage.get_by_title(t) ss = page.special_sections self.assertTrue(u"years" in ss) normal_titles = [u"Hello", u"0"] for t in normal_titles: page = WikiPage.get_by_title(t) ss = page.special_sections self.assertFalse(u"years" in ss)
def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub() self.testbed.init_user_stub() cache.prc.flush_all() WikiPage.get_by_title(u'A').update_content(u'.schema Book\n.read all\nHello', 0, u'') WikiPage.get_by_title(u'B').update_content(u'.schema Book\n.read [email protected]\nThere', 0, u'') for p in WikiPage.query().fetch(): p.rebuild_data_index()
def test_do_not_display_restricted_links(self): a = WikiPage.get_by_title(u"A") a.update_content(u".read [email protected]\n[[B]]", 0, "") a = WikiPage.get_by_title(u"A") b = WikiPage.get_by_title(u"B") self.assertEqual({}, a.inlinks) self.assertEqual({u"Article/relatedTo": [u"B"]}, a.outlinks) self.assertEqual(None, b.updated_at) self.assertEqual({}, b.inlinks) self.assertEqual({}, b.outlinks)
def test_links(self): a = WikiPage.get_by_title(u'A') a.update_content(u'[[B]]', 0) a = WikiPage.get_by_title(u'A') b = WikiPage.get_by_title(u'B') self.assertEqual({}, a.inlinks) self.assertEqual({u'Article/relatedTo': [u'B']}, a.outlinks) self.assertEqual(None, b.updated_at) self.assertEqual({u'Article/relatedTo': [u'A']}, b.inlinks) self.assertEqual({}, b.outlinks)
def test_links(self): a = WikiPage.get_by_title(u"A") a.update_content(u"[[B]]", 0, "") a = WikiPage.get_by_title(u"A") b = WikiPage.get_by_title(u"B") self.assertEqual({}, a.inlinks) self.assertEqual({u"Article/relatedTo": [u"B"]}, a.outlinks) self.assertEqual(None, b.updated_at) self.assertEqual({u"Article/relatedTo": [u"A"]}, b.inlinks) self.assertEqual({}, b.outlinks)
def test_do_not_display_restricted_links(self): a = WikiPage.get_by_title(u'A') a.update_content(u'.read [email protected]\n[[B]]', 0) a = WikiPage.get_by_title(u'A') b = WikiPage.get_by_title(u'B') self.assertEqual({}, a.inlinks) self.assertEqual({u'Article/relatedTo': [u'B']}, a.outlinks) self.assertEqual(None, b.updated_at) self.assertEqual({}, b.inlinks) self.assertEqual({}, b.outlinks)
def test_delete_and_redirection_1(self): self.update_page(u'.redirect C', u'B') self.update_page(u'Hello [[A]]', u'C') self.login('*****@*****.**', 'a', is_admin=True) WikiPage.get_by_title(u'A').delete(users.get_current_user()) self.pagea = WikiPage.get_by_title(u'A') self.pagec = WikiPage.get_by_title(u'C') self.assertEqual(1, len(self.pagea.inlinks)) self.assertEqual(0, len(self.pagea.outlinks)) self.assertEqual(0, len(self.pagec.inlinks)) self.assertEqual(1, len(self.pagec.outlinks))
def test_multiple_custom_blogs(self): self.update_page(u'.pub B1', u'b1p1') self.update_page(u'.pub B1', u'b1p2') self.update_page(u'.pub B2', u'b2p1') self.update_page(u'.pub B2', u'b2p2') b1p1 = WikiPage.get_by_title(u'b1p1') b1p2 = WikiPage.get_by_title(u'b1p2') b2p1 = WikiPage.get_by_title(u'b2p1') b2p2 = WikiPage.get_by_title(u'b2p2') self.assertEqual('b1p2', b1p1.newer_title) self.assertEqual('b1p1', b1p2.older_title) self.assertEqual('b2p2', b2p1.newer_title) self.assertEqual('b2p1', b2p2.older_title)
def test_removing_redirect_should_change_inout_links(self): WikiPage.get_by_title(u'A').update_content(u'[[B]]', 0) WikiPage.get_by_title(u'B').update_content(u'.redirect C', 0) WikiPage.get_by_title(u'B').update_content(u'Hello [[D]]', 1) a = WikiPage.get_by_title(u'A') b = WikiPage.get_by_title(u'B') c = WikiPage.get_by_title(u'C') d = WikiPage.get_by_title(u'D') self.assertEqual({u'Article/relatedTo': [u'B']}, a.outlinks) self.assertEqual({u'Article/relatedTo': [u'A']}, b.inlinks) self.assertEqual({u'Article/relatedTo': [u'D']}, b.outlinks) self.assertEqual({}, c.inlinks) self.assertEqual({u'Article/relatedTo': [u'B']}, d.inlinks)
def test_years_section(self): page = WikiPage.get_by_title(u'2') ss = page.special_sections[u'years'] self.assertEqual( [u'2 BCE', u'1 BCE', u'1', u'2', u'3', u'4', u'5'], ss[u'years'] ) page = WikiPage.get_by_title(u'2 BCE') ss = page.special_sections[u'years'] self.assertEqual( [u'5 BCE', u'4 BCE', u'3 BCE', u'2 BCE', u'1 BCE', u'1', u'2'], ss[u'years'] )
def test_changing_redirect_should_change_inout_links(self): WikiPage.get_by_title(u"A").update_content(u"[[B]]", 0, "") WikiPage.get_by_title(u"B").update_content(u".redirect C", 0, "") WikiPage.get_by_title(u"B").update_content(u".redirect D", 1, "") a = WikiPage.get_by_title(u"A") b = WikiPage.get_by_title(u"B") c = WikiPage.get_by_title(u"C") d = WikiPage.get_by_title(u"D") self.assertEqual({u"Article/relatedTo": [u"D"]}, a.outlinks) self.assertEqual({}, b.inlinks) self.assertEqual({}, b.outlinks) self.assertEqual({}, c.inlinks) self.assertEqual({u"Article/relatedTo": [u"A"]}, d.inlinks)
def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub() self.b1p1 = WikiPage.get_by_title(u'b1p1') self.b1p1.update_content(u'.pub B1', 0) self.b2p1 = WikiPage.get_by_title(u'b2p1') self.b2p1.update_content(u'.pub B2', 0) self.b1p2 = WikiPage.get_by_title(u'b1p2') self.b1p2.update_content(u'.pub B1', 0) self.b2p2 = WikiPage.get_by_title(u'b2p2') self.b2p2.update_content(u'.pub B2', 0)
def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub() page1 = WikiPage.get_by_title(u'Hello 1') page1.update_content(u'.pub\nHello 1', 0) page2 = WikiPage.get_by_title(u'Hello 2') page2.update_content(u'.pub\nHello 2', 0) page3 = WikiPage.get_by_title(u'Hello 3') page3.update_content(u'.pub\nHello 3', 0)
def test_change_page_of_published_page(self): # .pub BBS1 -> .pub BBS2 page = WikiPage.get_by_title(u'Hello') page.update_content(u'.pub BBS1\nHello', 0) page.update_content(u'.pub BBS2\nHello', 1) self.assertIsNotNone(page.published_at) self.assertEqual('BBS2', page.published_to)
def test_link_in_yaml_schema_block(self): page = self.update_page( u'.schema Book\n #!yaml/schema\n author: Richard Dawkins\n', u'A') self.assertEqual({u'Book/author': [u'Richard Dawkins']}, page.outlinks) rd = WikiPage.get_by_title(u'Richard Dawkins') self.assertEqual({u'Book/author': [u'A']}, rd.inlinks)
def test_specify_page_to_published_page(self): # .pub -> .pub BBS page = WikiPage.get_by_title(u'Hello') page.update_content(u'.pub\nHello', 0) page.update_content(u'.pub BBS\nHello', 1) self.assertIsNotNone(page.published_at) self.assertEqual('BBS', page.published_to)
def test_rendered_body_should_be_cached(self): page = WikiPage.get_by_title(u'Hello') page.update_content(u'Hello', 0) self.assertIsNone(memcache.get(u'model\trendered_body\tHello')) _ = page.rendered_body self.assertIsNotNone(memcache.get(u'model\trendered_body\tHello'))
def test_delete_and_create(self): self.login('*****@*****.**', 'a', is_admin=True) self.pagea.delete(users.get_current_user()) self.pagea = WikiPage.get_by_title(u'A') self.pagea.update_content(u'Hello', 0, user=self.get_cur_user()) self.assertEqual(1, self.pagea.revision)
def test_hierarchy(self): page = WikiPage.get_by_title(u'GEB/Chapter 1/Memo') self.assertEqual([ (u'GEB', u'GEB'), (u'GEB/Chapter 1', u'Chapter 1'), (u'GEB/Chapter 1/Memo', u'Memo'), ], page.paths)
def test_unpublish_published_page(self): # .pub BBS -> (null) page = WikiPage.get_by_title(u'Hello') page.update_content(u'.pub BBS\nHello', 0) page.update_content(u'Hello', 1) self.assertIsNone(page.published_at) self.assertEqual(None, page.published_to)
def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() self.testbed.init_user_stub() user_stub = self.testbed._test_stub_map.GetStub(testbed.USER_SERVICE_NAME) user_stub.SetOAuthUser(email=None) # no OAuth login self.testbed.init_taskqueue_stub() self.parser = html5parser.HTMLParser(strict=True) self.browser = Browser() self.fixtures = [ [u'Home', u'Goto [[한글 제목]]'], [u'A', u'Goto [[Home]]'], [u'한글 제목', u'Goto [[Home]]'], [u'Presentation', u'.pt\nHello'], [u'Blog post', u'.pub\nHello'], ] for title, body in self.fixtures: page = WikiPage.get_by_title(title) page.update_content(body, 0, None) # update again to create revisions page.update_content(body + u'!', 1, None)
def test_updating_should_invalidate_rendered_body_cache(self): memcache.set(u'model\trendered_body\tHello', u'value') page = WikiPage.get_by_title(u'Hello') page.update_content(u'Hello 2', 0) self.assertIsNone(memcache.get(u'model\trendered_body\tHello'))
def test_remove_page_of_published_page(self): # .pub BBS -> .pub page = WikiPage.get_by_title(u'Hello') page.update_content(u'.pub BBS\nHello', 0) page.update_content(u'.pub\nHello', 1) self.assertIsNotNone(page.published_at) self.assertEqual(None, page.published_to)
def test_automerge(self): self.login('ak', 'ak') page = WikiPage.get_by_title(u'Hello') page.update_content(u'A\nB\nC', 0, user=self.get_cur_user()) # remove B page.update_content(u'A\nC', 1, user=self.get_cur_user()) # append D page.update_content(u'A\nB\nC\nD', 1, user=self.get_cur_user()) # should be merged page = WikiPage.get_by_title(u'Hello') self.assertEqual(u'A\nC\nD', page.body) self.assertEqual(3, page.revision) revs = list(page.revisions) self.assertEqual(3, len(revs))
def test_deleted(self): self.login('*****@*****.**', 'a', is_admin=True) self.pagea.delete(users.get_current_user()) self.pagea = WikiPage.get_by_title(u'A') self.assertEqual(None, self.pagea.modifier) self.assertEqual(u'', self.pagea.body) self.assertEqual(0, self.pagea.revision)
def test_redirect_metadata(self): page = WikiPage.get_by_title(u'Hi') page.update_content(u'.redirect Hello World', 0) self.browser.get('/Hi', follow_redir=False) self.assertEqual(303, self.browser.res.status_code) self.assertEqual('http://localhost/Hello_World', self.browser.res.location)