def test__getDottedName_unicode( self ): from Products.CMFSetup.utils import _getDottedName dotted = u'%s' % _TEST_FUNC_NAME self.assertEqual( _getDottedName( dotted ), _TEST_FUNC_NAME ) self.assertEqual( type( _getDottedName( dotted ) ), str )
def test_import_site_with_subfolders_and_preserve(self): from Products.CMFSetup.utils import _getDottedName self._setUpAdapters() site = _makeFolder('site') site._setObject('foo', _makeFolder('foo')) foo = site._getOb('foo') foo._setObject('bar', _makeFolder('bar')) bar = foo._getOb('bar') context = DummyImportContext(site) # We want to add 'baz' to 'foo', without losing 'bar' context._files['structure/.objects' ] = 'foo,%s' % _getDottedName(foo.__class__) context._files['structure/.preserve'] = '*' context._files['structure/foo/.objects' ] = 'baz,%s' % _getDottedName(bar.__class__) context._files['structure/foo/.preserve'] = '*' context._files['structure/foo/baz/.objects'] = '' importer = self._getImporter() importer(context) self.assertEqual(len(site.objectIds()), 1) self.assertEqual(site.objectIds()[0], 'foo') self.assertEqual(len(foo.objectIds()), 2, site.foo.objectIds()) self.assertEqual(foo.objectIds()[0], 'bar') self.assertEqual(foo.objectIds()[1], 'baz')
def test_import_site_with_subitems(self): from Products.CMFSetup.utils import _getDottedName from faux_objects import KNOWN_INI from faux_objects import TestINIAware dotted = _getDottedName(TestINIAware) self._setUpAdapters() ITEM_IDS = ('foo', 'bar', 'baz') site = _makeFolder('site') context = DummyImportContext(site) # We want to add 'baz' to 'foo', without losing 'bar' context._files['structure/.objects'] = '\n'.join( ['%s,%s' % (x, dotted) for x in ITEM_IDS]) for index in range(len(ITEM_IDS)): id = ITEM_IDS[index] context._files[ 'structure/%s.ini' % id] = KNOWN_INI % ('Title: %s' % id, 'xyzzy', ) importer = self._getImporter() importer(context) after = site.objectIds() self.assertEqual(len(after), len(ITEM_IDS)) for found_id, expected_id in zip(after, ITEM_IDS): self.assertEqual(found_id, expected_id)
def test_import_site_with_subfolders(self): from Products.CMFSetup.utils import _getDottedName self._setUpAdapters() FOLDER_IDS = ('foo', 'bar', 'baz') site = _makeFolder('site') dotted = _getDottedName(site.__class__) context = DummyImportContext(site) for id in FOLDER_IDS: context._files['structure/%s/.objects' % id] = '' context._files['structure/%s/.properties' % id] = ( _PROPERTIES_TEMPLATE % id ) _ROOT_OBJECTS = '\n'.join(['%s,%s' % (id, dotted) for id in FOLDER_IDS]) context._files['structure/.objects'] = _ROOT_OBJECTS context._files['structure/.properties'] = ( _PROPERTIES_TEMPLATE % 'Test Site') importer = self._getImporter() importer(context) content = site.objectValues() self.assertEqual(len(content), len(FOLDER_IDS))
def test_export_site_with_subfolders(self): from Products.CMFSetup.utils import _getDottedName self._setUpAdapters() FOLDER_IDS = ('foo', 'bar', 'baz') site = _makeFolder('site') site.title = 'AAA' site._setProperty('description', 'BBB') aside = _makeFolder('aside') dotted = _getDottedName(aside.__class__) for id in FOLDER_IDS: folder = _makeFolder(id) folder.title = 'Title: %s' % id site._setObject(id, folder) context = DummyExportContext(site) exporter = self._getExporter() exporter(context) self.assertEqual(len(context._wrote), 2 + (2 *len(FOLDER_IDS))) filename, text, content_type = context._wrote[0] self.assertEqual(filename, 'structure/.objects') self.assertEqual(content_type, 'text/comma-separated-values') objects = [x for x in reader(StringIO(text))] self.assertEqual(len(objects), 3) for index in range(len(FOLDER_IDS)): id = FOLDER_IDS[index] self.assertEqual(objects[index][0], id) self.assertEqual(objects[index][1], dotted) filename, text, content_type = context._wrote[2 + (2 * index)] self.assertEqual(filename, '/'.join(('structure', id, '.objects'))) self.assertEqual(content_type, 'text/comma-separated-values') subobjects = [x for x in reader(StringIO(text))] self.assertEqual(len(subobjects), 0) filename, text, content_type = context._wrote[2 + (2 * index) + 1] self.assertEqual(filename, '/'.join(('structure', id, '.properties'))) self.assertEqual(content_type, 'text/plain') parser = ConfigParser() parser.readfp(StringIO(text)) defaults = parser.defaults() self.assertEqual(len(defaults), 1) self.assertEqual(defaults['title'], 'Title: %s' % id) filename, text, content_type = context._wrote[1] self.assertEqual(filename, 'structure/.properties') self.assertEqual(content_type, 'text/plain') parser = ConfigParser() parser.readfp(StringIO(text)) defaults = parser.defaults() self.assertEqual(len(defaults), 2) self.assertEqual(defaults['title'], 'AAA') self.assertEqual(defaults['description'], 'BBB')
def test_export_site_with_csvaware(self): from Products.CMFSetup.utils import _getDottedName self._setUpAdapters() site = _makeFolder('site') site.title = 'test_export_site_with_csvaware' site._setProperty('description', 'Testing export of an site with CSV-aware content.') aware = _makeCSVAware('aware') site._setObject('aware', aware) context = DummyExportContext(site) exporter = self._getExporter() exporter(context) self.assertEqual(len(context._wrote), 3) filename, text, content_type = context._wrote[0] self.assertEqual(filename, 'structure/.objects') self.assertEqual(content_type, 'text/comma-separated-values') objects = [x for x in reader(StringIO(text))] self.assertEqual(len(objects), 1) self.assertEqual(objects[0][0], 'aware') self.assertEqual(objects[0][1], _getDottedName(aware.__class__)) filename, text, content_type = context._wrote[1] self.assertEqual(filename, 'structure/.properties') self.assertEqual(content_type, 'text/plain') parser = ConfigParser() parser.readfp(StringIO(text)) defaults = parser.defaults() self.assertEqual(len(defaults), 2) self.assertEqual(defaults['title'], site.title) self.assertEqual(defaults['description'], site.description) filename, text, content_type = context._wrote[2] self.assertEqual(filename, 'structure/aware.csv') self.assertEqual(content_type, 'text/comma-separated-values') rows = [x for x in reader(StringIO(text))] self.assertEqual(len(rows), 2) self.assertEqual(rows[0][0], 'one') self.assertEqual(rows[0][1], 'two') self.assertEqual(rows[0][2], 'three') self.assertEqual(rows[1][0], 'four') self.assertEqual(rows[1][1], 'five') self.assertEqual(rows[1][2], 'six')
def test_export_site_with_exportable_simple_items(self): from Products.CMFSetup.utils import _getDottedName self._setUpAdapters() ITEM_IDS = ('foo', 'bar', 'baz') site = _makeFolder('site') site.title = 'AAA' site._setProperty('description', 'BBB') aware = _makeINIAware('aside') dotted = _getDottedName(aware.__class__) for id in ITEM_IDS: site._setObject(id, _makeINIAware(id)) context = DummyExportContext(site) exporter = self._getExporter() exporter(context) self.assertEqual(len(context._wrote), 2 + len(ITEM_IDS)) filename, text, content_type = context._wrote[0] self.assertEqual(filename, 'structure/.objects') self.assertEqual(content_type, 'text/comma-separated-values') objects = [x for x in reader(StringIO(text))] self.assertEqual(len(objects), 3) for index in range(len(ITEM_IDS)): self.assertEqual(objects[index][0], ITEM_IDS[index]) self.assertEqual(objects[index][1], dotted) filename, text, content_type = context._wrote[index+2] self.assertEqual(filename, 'structure/%s.ini' % ITEM_IDS[index]) object = site._getOb(ITEM_IDS[index]) self.assertEqual(text.strip(), object.as_ini().strip()) self.assertEqual(content_type, 'text/plain') filename, text, content_type = context._wrote[1] self.assertEqual(filename, 'structure/.properties') self.assertEqual(content_type, 'text/plain') parser = ConfigParser() parser.readfp(StringIO(text)) defaults = parser.defaults() self.assertEqual(len(defaults), 2) self.assertEqual(defaults['title'], 'AAA') self.assertEqual(defaults['description'], 'BBB')
def test__getDottedName_inst( self ): from Products.CMFSetup.utils import _getDottedName self.assertEqual( _getDottedName( whatever_inst ) , _WHATEVER_INST_NAME )
def test__getDottedName_class( self ): from Products.CMFSetup.utils import _getDottedName self.assertEqual( _getDottedName( Whatever ), _WHATEVER_NAME )
def test__getDottedName_string( self ): from Products.CMFSetup.utils import _getDottedName self.assertEqual( _getDottedName( _TEST_FUNC_NAME ), _TEST_FUNC_NAME )