예제 #1
0
    def testPageSource(self):
        from zim.newfs.mock import MockFile, MockFolder

        file = MockFile('/mock/test/page.txt')
        folder = MockFile('/mock/test/page/')
        page = Page(Path('Foo'), False, file, folder)

        self.assertFalse(page.readonly)
        self.assertFalse(page.hascontent)
        self.assertIsNone(page.ctime)
        self.assertIsNone(page.mtime)
        self.assertIsNone(page.get_parsetree())

        page1 = Page(Path('Foo'), False, file, folder)
        self.assertTrue(page.isequal(page1))

        tree = ParseTree().fromstring('''\
<zim-tree>
<link href='foo:bar'>foo:bar</link>
<link href='bar'>bar</link>
<tag name='baz'>@baz</tag>
</zim-tree>
''')
        page.set_parsetree(tree)
        page._store()

        self.assertTrue(file.exists())
        self.assertTrue(page.hascontent)
        self.assertIsInstance(page.ctime, float)
        self.assertIsInstance(page.mtime, float)

        lines = file.readlines()
        self.assertEqual(lines[0], 'Content-Type: text/x-zim-wiki\n')
        self.assertEqual(lines[1][:11], 'Wiki-Format')
        self.assertEqual(lines[2][:13], 'Creation-Date')

        self.assertEqual(page.get_parsetree(), tree)

        self.assertTrue(page.isequal(page1))
        self.assertTrue(page1.hascontent)
        self.assertIsInstance(page1.ctime, float)
        self.assertIsInstance(page1.mtime, float)
        self.assertIsNotNone(page1.get_parsetree())

        file.write('foo 123')
        page.set_parsetree(tree)

        self.assertRaises(zim.newfs.FileChangedError, page._store)

        ### Custom header should be preserved
        file.writelines(lines[0:3] + ['X-Custom-Header: MyTest'] + lines[3:])
        page = Page(Path('Foo'), False, file, folder)
        tree = page.get_parsetree()
        page.set_parsetree(tree)
        page._store()
        lines = file.readlines()
        self.assertEqual(lines[0], 'Content-Type: text/x-zim-wiki\n')
        self.assertEqual(lines[3], 'X-Custom-Header: MyTest\n')
예제 #2
0
    def testPageSource(self):
        from zim.newfs.mock import MockFile, MockFolder

        file = MockFile('/mock/test/page.txt')
        folder = MockFile('/mock/test/page/')
        page = Page(Path('Foo'), False, file, folder)

        self.assertFalse(page.readonly)
        self.assertFalse(page.hascontent)
        self.assertIsNone(page.ctime)
        self.assertIsNone(page.mtime)
        self.assertIsNone(page.get_parsetree())

        page1 = Page(Path('Foo'), False, file, folder)
        self.assertTrue(page.isequal(page1))

        tree = ParseTree().fromstring('''\
<zim-tree>
<link href='foo:bar'>foo:bar</link>
<link href='bar'>bar</link>
<tag name='baz'>@baz</tag>
</zim-tree>
''')
        page.set_parsetree(tree)
        page._store()

        self.assertTrue(file.exists())
        self.assertTrue(page.hascontent)
        self.assertIsInstance(page.ctime, float)
        self.assertIsInstance(page.mtime, float)

        self.assertEqual(page.get_parsetree(), tree)

        self.assertTrue(page.isequal(page1))
        self.assertTrue(page1.hascontent)
        self.assertIsInstance(page1.ctime, float)
        self.assertIsInstance(page1.mtime, float)
        self.assertIsNotNone(page1.get_parsetree())

        file.write('foo 123')
        page.set_parsetree(tree)

        self.assertRaises(zim.newfs.FileChangedError, page._store)