Exemplo n.º 1
0
class TestParseXMLString(TestCase):

    def setUp(self):
        self.handler = XMLHandler()

    def test_returns_minidom_object(self):
        xml = self.handler.parse_xml_string('<james></james>')
        self.assertEquals(xml.__class__.__name__, 'Document')

    def test_functionality_with_unicode(self):
        xml = self.handler.parse_xml_string(u'<j\xe4mes></j\xe4mes>')

        self.assertIn(u'j\xe4mes', xml.firstChild.tagName)

    def test_functionality_with_utf_8(self):

        xml = self.handler.parse_xml_string(
            '<j\xc3\xa4mes></j\xc3\xa4mes>')

        self.assertIn(u'j\xe4mes', xml.firstChild.tagName)

    def test_error_message_with_invalid_xml_string(self):
        with self.assertRaises(ExpatError) as err:
            self.handler.parse_xml_string('bad_xml')
        self.assertIn('syntax error', str(err.exception))
Exemplo n.º 2
0
class TestGetElementAttribute(TestCase):
    def setUp(self):
        self.handler = XMLHandler()

    def test_get_agent_when_asking_for_bond_title(self):
        value = self.handler.get_element_attribute_value(
            TEST_XML, 'bond', 'title')

        self.assertEquals(u'\xe4gent', value)

    def test_get_hero_when_asking_for_bond_tag_with_specified_xml(self):
        xml = self.handler.get_first_element(TEST_XML, 'asterix')
        value = self.handler.get_element_attribute_value(xml, 'bond', 'title')

        self.assertEquals('hero', value)

    def test_empty_string_when_attribute_doesnt_exist(self):
        value = self.handler.get_element_attribute_value(
            TEST_XML, 'bond', 'nothing')
        self.assertEquals('', value)

    def test_empty_string_when_element_doenst_exist(self):
        value = self.handler.get_element_attribute_value(
            TEST_XML, 'austin', 'title')
        self.assertEquals('', value)
Exemplo n.º 3
0
class TestGetElementAttribute(TestCase):

    def setUp(self):
        self.handler = XMLHandler()

    def test_get_agent_when_asking_for_bond_title(self):
        value = self.handler.get_element_attribute_value(
            TEST_XML, 'bond', 'title')

        self.assertEquals(u'\xe4gent', value)

    def test_get_hero_when_asking_for_bond_tag_with_specified_xml(self):
        xml = self.handler.get_first_element(TEST_XML, 'asterix')
        value = self.handler.get_element_attribute_value(xml, 'bond', 'title')

        self.assertEquals('hero', value)

    def test_empty_string_when_attribute_doesnt_exist(self):
        value = self.handler.get_element_attribute_value(
            TEST_XML, 'bond', 'nothing')
        self.assertEquals('', value)

    def test_empty_string_when_element_doenst_exist(self):
        value = self.handler.get_element_attribute_value(
            TEST_XML, 'austin', 'title')
        self.assertEquals('', value)
Exemplo n.º 4
0
class TestGetFirstElement(TestCase):
    def setUp(self):
        self.handler = XMLHandler()

    def test_get_one_bond_element(self):
        element = self.handler.get_first_element(TEST_XML, 'bond')
        self.assertEquals('bond', element.tagName)

    def test_get_no_elements(self):
        element = self.handler.get_first_element(TEST_XML, 'austin')
        self.assertIs(None, element)
Exemplo n.º 5
0
class TestGetElements(TestCase):
    def setUp(self):
        self.handler = XMLHandler()

    def test_get_two_bond_elements_as_list(self):
        elements = self.handler.get_elements(TEST_XML, 'bond')
        self.assertIs(2, len(elements))

    def test_get_no_elements_in_empty_list(self):
        elements = self.handler.get_elements(TEST_XML, 'austin')
        self.assertIs(0, len(elements))
Exemplo n.º 6
0
class TestGetFirstElement(TestCase):

    def setUp(self):
        self.handler = XMLHandler()

    def test_get_one_bond_element(self):
        element = self.handler.get_first_element(TEST_XML, 'bond')
        self.assertEquals('bond', element.tagName)

    def test_get_no_elements(self):
        element = self.handler.get_first_element(TEST_XML, 'austin')
        self.assertIs(None, element)
Exemplo n.º 7
0
class TestGetElements(TestCase):

    def setUp(self):
        self.handler = XMLHandler()

    def test_get_two_bond_elements_as_list(self):
        elements = self.handler.get_elements(TEST_XML, 'bond')
        self.assertIs(2, len(elements))

    def test_get_no_elements_in_empty_list(self):
        elements = self.handler.get_elements(TEST_XML, 'austin')
        self.assertIs(0, len(elements))
Exemplo n.º 8
0
class TestGetElementValue(TestCase):
    def setUp(self):
        self.handler = XMLHandler()

    def test_get_007_when_asking_for_bond_tag(self):
        value = self.handler.get_element_value(TEST_XML, 'bond')
        self.assertEquals('007', value)

    def test_get_other_agent_when_asking_for_bond_tag_with_specified_xml(self):
        xml = self.handler.get_first_element(TEST_XML, 'asterix')
        value = self.handler.get_element_value(xml, 'bond')
        self.assertEquals(u'Other \xe4gent', value)

    def test_empty_string_when_no_elements_with_value(self):
        value = self.handler.get_element_value(TEST_XML, 'austin')
        self.assertEquals('', value)
Exemplo n.º 9
0
class TestGetElementValue(TestCase):

    def setUp(self):
        self.handler = XMLHandler()

    def test_get_007_when_asking_for_bond_tag(self):
        value = self.handler.get_element_value(TEST_XML, 'bond')
        self.assertEquals('007', value)

    def test_get_other_agent_when_asking_for_bond_tag_with_specified_xml(self):
        xml = self.handler.get_first_element(TEST_XML, 'asterix')
        value = self.handler.get_element_value(xml, 'bond')
        self.assertEquals(u'Other \xe4gent', value)

    def test_empty_string_when_no_elements_with_value(self):
        value = self.handler.get_element_value(TEST_XML, 'austin')
        self.assertEquals('', value)
Exemplo n.º 10
0
class TestParseXMLString(TestCase):
    def setUp(self):
        self.handler = XMLHandler()

    def test_returns_minidom_object(self):
        xml = self.handler.parse_xml_string('<james></james>')
        self.assertEquals(xml.__class__.__name__, 'Document')

    def test_functionality_with_unicode(self):
        xml = self.handler.parse_xml_string(u'<j\xe4mes></j\xe4mes>')

        self.assertIn(u'j\xe4mes', xml.firstChild.tagName)

    def test_functionality_with_utf_8(self):

        xml = self.handler.parse_xml_string('<j\xc3\xa4mes></j\xc3\xa4mes>')

        self.assertIn(u'j\xe4mes', xml.firstChild.tagName)

    def test_error_message_with_invalid_xml_string(self):
        with self.assertRaises(ExpatError) as err:
            self.handler.parse_xml_string('bad_xml')
        self.assertIn('syntax error', str(err.exception))
Exemplo n.º 11
0
 def setUp(self):
     self.handler = XMLHandler()
Exemplo n.º 12
0
    def __init__(self, field, item):

        self.handler = XMLHandler()
        self.field = field
        self.item = item
Exemplo n.º 13
0
class FormGenField(dict):
    implements(IFormGenField)

    form_type = None

    def __init__(self, field, item):

        self.handler = XMLHandler()
        self.field = field
        self.item = item

    def fill_field(self):

        for method in dir(self):
            if method.startswith('set_'):
                getattr(self, method)()

    def _get_filtered_element_value(self, name):

        value = self.handler.get_element_value(self.field, name)
        type_ = self.handler.get_element_attribute_value(
            self.field, name, 'type')

        if type_ == 'float':
            return float(value)

        elif type_ == 'int':
            if name in ['enabled', 'required', 'hidden']:
                return bool(int(value))
            return int(value)

        elif type_ == 'list':
            return eval(value)

        elif type_ == 'datetime':
            return DateTime(value)

        if isinstance(value, unicode):
            return value.encode('utf-8')
        else:
            return value

    def set_path(self):
        self['_path'] = '%s/%s' % (
            self.item['_path'], self._get_filtered_element_value('id'))

    def set_id(self):
        self['_id'] = self._get_filtered_element_value('id')

    def set_type(self):
        self['_type'] = self.form_type

    def set_title(self):
        self['title'] = self._get_filtered_element_value('title')

    def set_required(self):
        self['required'] = self._get_filtered_element_value('required')

    def set_description(self):
        self['description'] = self._get_filtered_element_value('description')

    def set_hidden(self):
        self['hidden'] = self._get_filtered_element_value('hidden')

    def set_default(self):
        self['fgDefault'] = self._get_filtered_element_value('default')
Exemplo n.º 14
0
    def __init__(self, item, xml_string):

        self.handler = XMLHandler()
        self.item = item
        self.xml_string = xml_string
        self.normalizer = getUtility(IIDNormalizer)
Exemplo n.º 15
0
class PFM2PFGConverter(object):
    implements(IPFM2PFGConverter)

    def __init__(self, item, xml_string):

        self.handler = XMLHandler()
        self.item = item
        self.xml_string = xml_string
        self.normalizer = getUtility(IIDNormalizer)

    def __iter__(self):

        xml = self.handler.parse_xml_string(self.xml_string)

        for group in self.handler.get_elements(xml, 'group'):

            yield self.begin_group(group)

            for field in self.handler.get_elements(group, 'field'):

                yield self.get_pfg_field(field)

            yield self.end_group(group)

    def get_pfg_field(self, field):

        pfm_type = self.handler.get_element_value(field, 'type')

        field_utility = self.get_field_utility(pfm_type)
        if not field_utility:
            raise

        pfg_field = field_utility(field, self.item)
        pfg_field.fill_field()

        return pfg_field

    def get_field_utility(self, type_):
        """Returns the assosiated utility for pfg fields
        """

        return queryUtility(
            IFormGenField,
            'ftw.blueprints.pfm2pfg.%s' % type_)

    def end_group(self, xml):

        item = {}

        title = self.handler.get_element_value(xml, 'title')

        if title == 'Default':
            return item

        title = self.normalizer.normalize(title)

        item['_id'] = '%s-end' % title
        item['_type'] = 'FieldsetEnd'
        item['_path'] = '%s/%s-stop' % (self.item['_path'], title)

        return item

    def begin_group(self, xml):

        item = {}

        title = self.handler.get_element_value(xml, 'title')

        if title == 'Default':
            return item

        item['title'] = title

        title = self.normalizer.normalize(title)

        item['_id'] = '%s-start' % title
        item['_type'] = 'FieldsetStart'
        item['_path'] = '%s/%s-start' % (self.item['_path'], title)

        return item
Exemplo n.º 16
0
 def setUp(self):
     self.handler = XMLHandler()