File: objectmanager.py

package info (click to toggle)
zim 0.68-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 8,032 kB
  • sloc: python: 59,144; xml: 731; makefile: 45; sh: 35
file content (76 lines) | stat: -rw-r--r-- 2,077 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# -*- coding: utf-8 -*-

# Copyright 2011 Jaap Karssenberg <jaap.karssenberg@gmail.com>

import tests

from zim.objectmanager import *


class TestObjectManager(tests.TestCase):

	def runTest(self):
		'''Test object manager for inline objects'''
		manager = ObjectManager

		# registering
		self.assertFalse(manager.is_registered('classa'))
		self.assertFalse(manager.is_registered('classb'))
		self.assertFalse(manager.is_registered('foo'))

		manager.register_object('classa', classafactory)
		manager.register_object('classb', ClassB)

		self.assertTrue(manager.is_registered('classa'))
		self.assertTrue(manager.is_registered('classb'))
		self.assertFalse(manager.is_registered('foo'))

		# get objects
		self.assertEqual(list(manager.get_active_objects('classa')), [])
		self.assertEqual(list(manager.get_active_objects('classb')), [])

		obj = manager.get_object('classa', {}, '')
		self.assertTrue(isinstance(obj, ClassA))

		self.assertEqual(list(manager.get_active_objects('classa')), [obj])
		self.assertEqual(list(manager.get_active_objects('classb')), [])

		self.assertTrue(isinstance(manager.get_object('classb', {}, ''), ClassB))
		self.assertTrue(isinstance(manager.get_object('foo', {}, ''), FallbackObject))

		# unregister
		self.assertTrue(manager.is_registered('classa'))
		self.assertTrue(manager.unregister_object('classa'))
		self.assertFalse(manager.is_registered('classa'))
		self.assertFalse(manager.unregister_object('classa'))

		# find plugin
		from zim.plugins.sourceview import SourceViewPlugin
		self.assertEqual(
			manager.find_plugin('code'),
			('sourceview', 'Source View', True, SourceViewPlugin, None)
		)


def classafactory(attrib, text):
	return ClassA(attrib, text)


class ClassA(CustomObjectClass):
	pass


class ClassB(CustomObjectClass):
	pass


class TestFallbackObject(tests.TestCase):

	def runTest(self):
		attrib = {'type': 'foo', 'lang': 'text/html', 'foo': 'bar'}
		text = '''<b>test 123</b>\n'''
		obj = FallbackObject(attrib, text)

		self.assertEqual(obj.get_data(), text)
		self.assertEqual(obj.get_attrib(), attrib)