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)
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)
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)
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)