|
21 | 21 | </connection>
|
22 | 22 | </datasource>'''
|
23 | 23 |
|
| 24 | +TABLEAU_10_WORKBOOK = '''<?xml version='1.0' encoding='utf-8' ?><workbook source-build='0.0.0 (0000.16.0510.1300)' source-platform='mac' version='10.0' xmlns:user='http://www.tableausoftware.com/xml/user'><datasources><datasource caption='xy+ (Multiple Connections)' inline='true' name='federated.1s4nxn20cywkdv13ql0yk0g1mpdx' version='10.0'><connection class='federated'><named-connections><named-connection caption='mysql55.test.tsi.lan' name='mysql.1ewmkrw0mtgsev1dnurma1blii4x'><connection class='mysql' dbname='testv1' odbc-native-protocol='yes' port='3306' server='mysql55.test.tsi.lan' source-charset='' username='test' /></named-connection><named-connection caption='mssql2012.test.tsi.lan' name='sqlserver.1erdwp01uqynlb14ul78p0haai2r'><connection authentication='sqlserver' class='sqlserver' dbname='TestV1' odbc-native-protocol='yes' one-time-sql='' server='mssql2012.test.tsi.lan' username='test' /></named-connection></named-connections></connection></datasource></datasources></workbook>''' |
| 25 | + |
24 | 26 | TABLEAU_CONNECTION_XML = ET.fromstring(
|
25 | 27 | '''<connection authentication='sspi' class='sqlserver' dbname='TestV1' odbc-native-protocol='yes' one-time-sql='' server='mssql2012.test.tsi.lan' username=''></connection>''')
|
26 | 28 |
|
@@ -113,6 +115,32 @@ def test_can_update_datasource_connection_and_save(self):
|
113 | 115 | new_wb = Workbook(self.workbook_file.name)
|
114 | 116 | self.assertEqual(new_wb.datasources[0].connection.dbname, 'newdb.test.tsi.lan')
|
115 | 117 |
|
| 118 | + def test_can_update_datasource_connection_and_saveV10(self): |
| 119 | + temp = io.FileIO('v10test.twb', 'w') |
| 120 | + temp.write(TABLEAU_10_WORKBOOK.encode()) |
| 121 | + temp.seek(0) |
| 122 | + original_wb = Workbook(temp.name) |
| 123 | + original_wb.datasources[0].connection[0].dbname = 'newdb.test.tsi.lan' |
| 124 | + |
| 125 | + original_wb.save() |
| 126 | + |
| 127 | + new_wb = Workbook(temp.name) |
| 128 | + self.assertEqual(new_wb.datasources[0].connection[0].dbname, 'newdb.test.tsi.lan') |
| 129 | + |
| 130 | + temp.close() |
| 131 | + |
| 132 | + def test_can_extract_datasourceV10(self): |
| 133 | + temp = io.FileIO('v10test.twb', 'w') |
| 134 | + temp.write(TABLEAU_10_WORKBOOK.encode()) |
| 135 | + temp.seek(0) |
| 136 | + wb = Workbook(temp.name) |
| 137 | + self.assertEqual(len(wb.datasources), 1) |
| 138 | + self.assertEqual(len(wb.datasources[0].connection), 2) |
| 139 | + self.assertIsInstance(wb.datasources[0].connection, list) |
| 140 | + self.assertIsInstance(wb.datasources[0], Datasource) |
| 141 | + self.assertEqual(wb.datasources[0].name, |
| 142 | + 'federated.1s4nxn20cywkdv13ql0yk0g1mpdx') |
| 143 | + temp.close() |
116 | 144 |
|
117 | 145 | if __name__ == '__main__':
|
118 | 146 | unittest.main()
|
0 commit comments