8000 Merge pull request #15 from t8y8/xml-root-tag-fix · dmgactive/document-api-python@ef2eaa4 · GitHub
[go: up one dir, main page]

Skip to content

Commit ef2eaa4

Browse files
author
Russell Hay
authored
Merge pull request tableau#15 from t8y8/xml-root-tag-fix
Fix for issue tableau#14
2 parents 07aad95 + c58ca4b commit ef2eaa4

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

tableaudocumentapi/datasource.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def save(self):
7272
"""
7373

7474
# save the file
75-
self._datasourceTree.write(self._filename)
75+
self._datasourceTree.write(self._filename, encoding="utf-8", xml_declaration=True)
7676

7777
def save_as(self, new_filename):
7878
"""
@@ -85,7 +85,7 @@ def save_as(self, new_filename):
8585
Nothing.
8686
8787
"""
88-
self._datasourceTree.write(new_filename)
88+
self._datasourceTree.write(new_filename, encoding="utf-8", xml_declaration=True)
8989

9090
###########
9191
# name

tableaudocumentapi/workbook.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def save(self):
7676
"""
7777

7878
# save the file
79-
self._workbookTree.write(self._filename)
79+
self._workbookTree.write(self._filename, encoding="utf-8", xml_declaration=True)
8080

8181
def save_as(self, new_filename):
8282
"""
@@ -90,7 +90,7 @@ def save_as(self, new_filename):
9090
9191
"""
9292

93-
self._workbookTree.write(new_filename)
93+
self._workbookTree.write(new_filename, encoding="utf-8", xml_declaration=True)
9494

9595
###########################################################################
9696
#

test.py

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
TABLEAU_CONNECTION_XML = ET.fromstring(
1818
'''<connection authentication='sspi' class='sqlserver' dbname='TestV1' odbc-native-protocol='yes' one-time-sql='' server='mssql2012.test.tsi.lan' username=''></connection>''')
1919

20+
2021
class HelperMethodTests(unittest.TestCase):
2122

2223
def test_is_valid_file_with_valid_inputs(self):
@@ -39,7 +40,6 @@ def test_can_extract_legacy_connection(self):
3940
self.assertIsInstance(connections[0], Connection)
4041
self.assertEqual(connections[0].dbname, 'TestV1')
4142

42-
4343
def test_can_extract_federated_connections(self):
4444
parser = ConnectionParser(ET.fromstring(TABLEAU_10_TDS), '10.0')
4545
connections = parser.get_connections()
@@ -97,6 +97,17 @@ def test_can_save_tds(self):
9797
new_tds = Datasource.from_file(self.tds_file.name)
9898
self.assertEqual(new_tds.connections[0].dbname, 'newdb.test.tsi.lan')
9999

100+
def test_save_has_xml_declaration(self):
101+
original_tds = Datasource.from_file(self.tds_file.name)
102+
original_tds.connections[0].dbname = 'newdb.test.tsi.lan'
103+
104+
original_tds.save()
105+
106+
with open(self.tds_file.name) as f:
107+
first_line = f.readline().strip() # first line should be xml tag
108+
self.assertEqual(
109+
first_line, "<?xml version='1.0' encoding='utf-8'?>")
110+
100111

101112
class WorkbookModelTests(unittest.TestCase):
102113

@@ -122,7 +133,8 @@ def test_can_update_datasource_connection_and_save(self):
122133
original_wb.save()
123134

124135
new_wb = Workbook(self.workbook_file.name)
125-
self.assertEqual(new_wb.datasources[0].connections[0].dbname, 'newdb.test.tsi.lan')
136+
self.assertEqual(new_wb.datasources[0].connections[
137+
0].dbname, 'newdb.test.tsi.lan')
126138

127139

128140
class WorkbookModelV10Tests(unittest.TestCase):
@@ -152,7 +164,19 @@ def test_can_update_datasource_connection_and_saveV10(self):
152164
original_wb.save()
153165

154166
new_wb = Workbook(self.workbook_file.name)
155-
self.assertEqual(new_wb.datasources[0].connections[0].dbname, 'newdb.test.tsi.lan')
167+
self.assertEqual(new_wb.datasources[0].connections[
168+
0].dbname, 'newdb.test.tsi.lan')
169+
170+
def test_save_has_xml_declaration(self):
171+
original_wb = Workbook(self.workbook_file.name)
172+
original_wb.datasources[0].connections[0].dbname = 'newdb.test.tsi.lan'
173+
174+
original_wb.save()
175+
176+
with open(self.workbook_file.name) as f:
177+
first_line = f.readline().strip() # first line should be xml tag
178+
self.assertEqual(
179+
first_line, "<?xml version='1.0' encoding='utf-8'?>")
156180

157181
if __name__ == '__main__':
158182
unittest.main()

0 commit comments

Comments
 (0)
0