Пример #1
0
 def test_get_data_from_str_id_for_html_display(self):
     dtd_str = '''
     <!ELEMENT texts (tag1, list*, tag2)>
     <!ELEMENT list (text)>
     <!ELEMENT text (#PCDATA)>
     <!ELEMENT tag1 (#PCDATA)>
     <!ELEMENT tag2 (#PCDATA)>
     '''
     str_id = 'texts:tag2'
     result = factory.get_data_from_str_id_for_html_display(str_id, dtd_str=dtd_str)
     expected = {
         'previous': [
             ('after', escape_attr('.tree_texts:list__list') + ':last'),
             ('after', escape_attr('.tree_texts:tag1') + ':last'),
             ('inside', escape_attr('#tree_texts'))],
         'html': ('<div id="texts:tag2">'
                  '<label>tag2</label>'
                  '<a data-comment-name="texts:tag2:_comment" '
                  'class="btn-comment" title="Add comment"></a>'
                  '<textarea class="form-control tag2" name="texts:tag2:_value" '
                  'rows="1"></textarea></div>'),
         'jstree_data': {
             'text': 'tag2',
             'li_attr': {
                 'class': 'tree_texts:tag2 tag2'
             },
             'a_attr': {
                 'id': 'tree_texts:tag2',
             },
             'children': [],
             'state': {'opened': True},
         },
         'elt_id': str_id,
     }
     self.assertEqual(result, expected)
Пример #2
0
 def test_get_data_from_str_id_for_html_display(self):
     dtd_str = u'''
     <!ELEMENT texts (tag1, list*, tag2)>
     <!ELEMENT list (text)>
     <!ELEMENT text (#PCDATA)>
     <!ELEMENT tag1 (#PCDATA)>
     <!ELEMENT tag2 (#PCDATA)>
     '''
     str_id = 'texts:tag2'
     result = factory.get_data_from_str_id_for_html_display(str_id,
                                                            dtd_str=dtd_str)
     expected = {
         'previous':
         [('after', escape_attr('.tree_texts:list__list') + ':last'),
          ('after', escape_attr('.tree_texts:tag1') + ':last'),
          ('inside', escape_attr('#tree_texts'))],
         'html':
         ('<div id="texts:tag2" class="xt-container-tag2">'
          '<label>tag2</label>'
          '<span class="btn-external-editor" '
          'ng-click="externalEditor(this)"></span>'
          '<a data-comment-name="texts:tag2:_comment" '
          'class="btn-comment" title="Add comment"></a>'
          '<textarea class="form-control tag2" name="texts:tag2:_value" '
          'rows="1"></textarea></div>'),
         'jstree_data': {
             'text': 'tag2',
             'li_attr': {
                 'class': 'tree_texts:tag2 tag2'
             },
             'a_attr': {
                 'id': 'tree_texts:tag2',
             },
             'children': [],
             'state': {
                 'opened': True
             },
         },
         'elt_id':
         str_id,
     }
     self.assertEqual(result, expected)
Пример #3
0
    def test__get_data_for_html_display(self):
        dtd_str = '''
        <!ELEMENT texts (tag1, list*, tag2)>
        <!ELEMENT list (text1)>
        <!ELEMENT text1 (#PCDATA)>
        <!ELEMENT tag1 (#PCDATA)>
        <!ELEMENT tag2 (#PCDATA)>
        '''
        str_id = 'texts:list__list:0:list:text1'
        data = {
            'texts': {
                'list__list': [
                    {
                        'list': {
                            'text1': {'_value': 'Hello world'},
                        }
                    }
                ]
            }
        }
        obj = factory._get_obj_from_str_id(str_id,
                                           dtd_str=dtd_str,
                                           data=data)
        res = factory._get_data_for_html_display(obj)
        expected = {
            'elt_id': 'texts:list__list:0:list:text1',
            'html': (
                '<div id="texts:list__list:0:list:text1" '
                'class="xt-container-text1">'
                '<label>text1</label>'
                '<span class="btn-external-editor" '
                'ng-click="externalEditor(this)">'
                '</span>'
                '<a data-comment-name="texts:list__list:0:list:text1:_comment" '
                'class="btn-comment" title="Add comment"></a>'
                '<textarea class="form-control text1" '
                'name="texts:list__list:0:list:text1:_value" rows="1">'
                'Hello world</textarea>'
                '</div>'),
            'jstree_data': {
                'li_attr': {
                    'class': 'tree_texts:list__list:0:list:text1 text1',
                },
                'a_attr': {
                    'id': 'tree_texts:list__list:0:list:text1'
                },
                'children': [],
                'text': u'text1 <span class="_tree_text">(Hello world)</span>',
                'state': {'opened': True},
            },
            'previous': [
                ('inside', escape_attr('#tree_texts:list__list:0:list'))
            ]
        }
        self.assertEqual(res, expected)

        # Test with list object
        str_id = 'texts:list__list:0:list'
        data = {
            'texts': {
                'list__list': [
                    {
                        'list': {
                            'text1': {'_value': 'Hello world'},
                        }
                    }
                ]
            }
        }
        obj = factory._get_obj_from_str_id(str_id,
                                           dtd_str=dtd_str,
                                           data=data)
        res = factory._get_data_for_html_display(obj)
        expected = {
            'elt_id': 'texts:list__list:0:list',
            'html': (
                '<a class="btn-add btn-add-list btn-list" '
                'data-elt-id="texts:list__list:0:list">New list</a>'
                '<div class="panel panel-default list" '
                'id="texts:list__list:0:list">'
                '<div class="panel-heading">'
                '<span data-toggle="collapse" '
                'href="#collapse-texts\\:list__list\\:0\\:list">list'
                '<a class="btn-delete btn-list" '
                'data-target="#texts:list__list:0:list" title="Delete"></a>'
                '<a data-comment-name="texts:list__list:0:list:_comment" '
                'class="btn-comment" title="Add comment"></a>'
                '</span>'
                '</div>'
                '<div class="panel-body panel-collapse collapse in" '
                'id="collapse-texts:list__list:0:list">'
                '<div id="texts:list__list:0:list:text1" '
                'class="xt-container-text1">'
                '<label>text1</label>'
                '<span class="btn-external-editor" '
                'ng-click="externalEditor(this)">'
                '</span>'
                '<a data-comment-name="texts:list__list:0:list:text1:_comment"'
                ' class="btn-comment" title="Add comment"></a>'
                '<textarea class="form-control text1" '
                'name="texts:list__list:0:list:text1:_value" rows="1">'
                'Hello world</textarea>'
                '</div>'
                '</div>'
                '</div>'
            ),
            'jstree_data': {
                'li_attr': {
                    'class': 'tree_texts:list__list list',
                },
                'a_attr': {
                    'id': 'tree_texts:list__list:0:list'
                },
                'children': [{
                    'li_attr': {
                        'class': 'tree_texts:list__list:0:list:text1 text1',
                    },
                    'a_attr': {
                        'id': 'tree_texts:list__list:0:list:text1'
                    },
                    'children': [],
                    'text': ('text1 <span class="_tree_text">'
                             '(Hello world)</span>'),
                    'state': {'opened': True},
                }],
                'text': 'list',
                'state': {'opened': True},
            },
            'previous': [
                ('after', escape_attr('.tree_texts:tag1') + ':last'),
                ('inside', '#tree_texts')
            ]
        }
        self.assertEqual(res, expected)

        # Test with a choice
        dtd_str = '''
        <!ELEMENT texts (tag1, list*, tag2)>
        <!ELEMENT list (text1|text2)>
        <!ELEMENT text1 (#PCDATA)>
        <!ELEMENT text2 (#PCDATA)>
        <!ELEMENT tag1 (#PCDATA)>
        <!ELEMENT tag2 (#PCDATA)>
        '''
        str_id = 'texts:list__list:0:list:text1'
        data = {
            'texts': {
                'list__list': [
                    {
                        'list': {
                            'text1': {'_value': 'Hello world'},
                        }
                    }
                ]
            }
        }
        obj = factory._get_obj_from_str_id(str_id,
                                           dtd_str=dtd_str,
                                           data=data)
        res = factory._get_data_for_html_display(obj)
        expected = {
            'elt_id': 'texts:list__list:0:list:text1',
            'html': (
                '<div id="texts:list__list:0:list:text1" '
                'class="xt-container-text1">'
                '<label>text1</label>'
                '<span class="btn-external-editor" '
                'ng-click="externalEditor(this)">'
                '</span>'
                '<select class="btn-add hidden">'
                '<option>New text1/text2</option>'
                '<option class="xt-option-text1" '
                'value="texts:list__list:0:list:text1">text1</option>'
                '<option class="xt-option-text2" '
                'value="texts:list__list:0:list:text2">text2</option>'
                '</select>'
                '<a class="btn-delete" '
                'data-target="#texts:list__list:0:list:text1" title="Delete">'
                '</a>'
                '<a data-comment-name="texts:list__list:0:list:text1:_comment" '
                'class="btn-comment" title="Add comment"></a>'
                '<textarea class="form-control text1" '
                'name="texts:list__list:0:list:text1:_value" rows="1">'
                'Hello world</textarea>'
                '</div>'),
            'jstree_data': {
                'li_attr': {
                    'class': 'tree_texts:list__list:0:list:text1 text1',
                },
                'a_attr': {
                    'id': 'tree_texts:list__list:0:list:text1'
                },
                'children': [],
                'text': u'text1 <span class="_tree_text">(Hello world)</span>',
                'state': {'opened': True},
            },
            'previous': [
                ('inside', escape_attr('#tree_texts:list__list:0:list'))
            ]
        }
        self.assertEqual(res, expected)
Пример #4
0
    def test__get_data_for_html_display(self):
        dtd_str = u'''
        <!ELEMENT texts (tag1, list*, tag2)>
        <!ELEMENT list (text1)>
        <!ELEMENT text1 (#PCDATA)>
        <!ELEMENT tag1 (#PCDATA)>
        <!ELEMENT tag2 (#PCDATA)>
        '''
        str_id = 'texts:list__list:0:list:text1'
        data = {
            'texts': {
                'list__list': [{
                    'list': {
                        'text1': {
                            '_value': 'Hello world'
                        },
                    }
                }]
            }
        }
        obj = factory._get_obj_from_str_id(str_id, dtd_str=dtd_str, data=data)
        res = factory._get_data_for_html_display(obj)
        expected = {
            'elt_id':
            'texts:list__list:0:list:text1',
            'html':
            ('<div id="texts:list__list:0:list:text1" '
             'class="xt-container-text1">'
             '<label>text1</label>'
             '<span class="btn-external-editor" '
             'ng-click="externalEditor(this)">'
             '</span>'
             '<a data-comment-name="texts:list__list:0:list:text1:_comment" '
             'class="btn-comment" title="Add comment"></a>'
             '<textarea class="form-control text1" '
             'name="texts:list__list:0:list:text1:_value" rows="1">'
             'Hello world</textarea>'
             '</div>'),
            'jstree_data': {
                'li_attr': {
                    'class': 'tree_texts:list__list:0:list:text1 text1',
                },
                'a_attr': {
                    'id': 'tree_texts:list__list:0:list:text1'
                },
                'children': [],
                'text': u'text1 <span class="_tree_text">(Hello world)</span>',
                'state': {
                    'opened': True
                },
            },
            'previous':
            [('inside', escape_attr('#tree_texts:list__list:0:list'))]
        }
        self.assertEqual(res, expected)

        # Test with list object
        str_id = 'texts:list__list:0:list'
        data = {
            'texts': {
                'list__list': [{
                    'list': {
                        'text1': {
                            '_value': 'Hello world'
                        },
                    }
                }]
            }
        }
        obj = factory._get_obj_from_str_id(str_id, dtd_str=dtd_str, data=data)
        res = factory._get_data_for_html_display(obj)
        expected = {
            'elt_id':
            'texts:list__list:0:list',
            'html':
            ('<a class="btn-add btn-add-list btn-list" '
             'data-elt-id="texts:list__list:0:list">New list</a>'
             '<div class="panel panel-default list" '
             'id="texts:list__list:0:list">'
             '<div class="panel-heading">'
             '<span data-toggle="collapse" '
             'href="#collapse-texts\\:list__list\\:0\\:list">list'
             '<a class="btn-delete btn-list" '
             'data-target="#texts:list__list:0:list" title="Delete"></a>'
             '<a data-comment-name="texts:list__list:0:list:_comment" '
             'class="btn-comment" title="Add comment"></a>'
             '</span>'
             '</div>'
             '<div class="panel-body panel-collapse collapse in" '
             'id="collapse-texts:list__list:0:list">'
             '<div id="texts:list__list:0:list:text1" '
             'class="xt-container-text1">'
             '<label>text1</label>'
             '<span class="btn-external-editor" '
             'ng-click="externalEditor(this)">'
             '</span>'
             '<a data-comment-name="texts:list__list:0:list:text1:_comment"'
             ' class="btn-comment" title="Add comment"></a>'
             '<textarea class="form-control text1" '
             'name="texts:list__list:0:list:text1:_value" rows="1">'
             'Hello world</textarea>'
             '</div>'
             '</div>'
             '</div>'),
            'jstree_data': {
                'li_attr': {
                    'class': 'tree_texts:list__list list',
                },
                'a_attr': {
                    'id': 'tree_texts:list__list:0:list'
                },
                'children': [{
                    'li_attr': {
                        'class': 'tree_texts:list__list:0:list:text1 text1',
                    },
                    'a_attr': {
                        'id': 'tree_texts:list__list:0:list:text1'
                    },
                    'children': [],
                    'text': ('text1 <span class="_tree_text">'
                             '(Hello world)</span>'),
                    'state': {
                        'opened': True
                    },
                }],
                'text':
                'list',
                'state': {
                    'opened': True
                },
            },
            'previous': [('after', escape_attr('.tree_texts:tag1') + ':last'),
                         ('inside', '#tree_texts')]
        }
        self.assertEqual(res, expected)

        # Test with a choice
        dtd_str = u'''
        <!ELEMENT texts (tag1, list*, tag2)>
        <!ELEMENT list (text1|text2)>
        <!ELEMENT text1 (#PCDATA)>
        <!ELEMENT text2 (#PCDATA)>
        <!ELEMENT tag1 (#PCDATA)>
        <!ELEMENT tag2 (#PCDATA)>
        '''
        str_id = 'texts:list__list:0:list:text1'
        data = {
            'texts': {
                'list__list': [{
                    'list': {
                        'text1': {
                            '_value': 'Hello world'
                        },
                    }
                }]
            }
        }
        obj = factory._get_obj_from_str_id(str_id, dtd_str=dtd_str, data=data)
        res = factory._get_data_for_html_display(obj)
        expected = {
            'elt_id':
            'texts:list__list:0:list:text1',
            'html':
            ('<div id="texts:list__list:0:list:text1" '
             'class="xt-container-text1">'
             '<label>text1</label>'
             '<span class="btn-external-editor" '
             'ng-click="externalEditor(this)">'
             '</span>'
             '<select class="btn-add hidden">'
             '<option>New text1/text2</option>'
             '<option class="xt-option-text1" '
             'value="texts:list__list:0:list:text1">text1</option>'
             '<option class="xt-option-text2" '
             'value="texts:list__list:0:list:text2">text2</option>'
             '</select>'
             '<a class="btn-delete" '
             'data-target="#texts:list__list:0:list:text1" title="Delete">'
             '</a>'
             '<a data-comment-name="texts:list__list:0:list:text1:_comment" '
             'class="btn-comment" title="Add comment"></a>'
             '<textarea class="form-control text1" '
             'name="texts:list__list:0:list:text1:_value" rows="1">'
             'Hello world</textarea>'
             '</div>'),
            'jstree_data': {
                'li_attr': {
                    'class': 'tree_texts:list__list:0:list:text1 text1',
                },
                'a_attr': {
                    'id': 'tree_texts:list__list:0:list:text1'
                },
                'children': [],
                'text': u'text1 <span class="_tree_text">(Hello world)</span>',
                'state': {
                    'opened': True
                },
            },
            'previous':
            [('inside', escape_attr('#tree_texts:list__list:0:list'))]
        }
        self.assertEqual(res, expected)