10000 Improve test coverage (#70) · randyoswald/document-api-python@90d6a28 · GitHub
[go: up one dir, main page]

Skip to content

Commit 90d6a28

Browse files
author
Russell Hay
authored
Improve test coverage (tableau#70)
* Removing code that should have been removed in a previous checkin * another small improvement * Adding coverage for one of the xfile edge cases * Adding a few additional tests * Updating based on code review feedback. Note: assertRaises does not take a message
1 parent e0d1eb5 commit 90d6a28

File tree

8 files changed

+70
-10
lines changed

8 files changed

+70
-10
lines changed

tableaudocumentapi/datasource.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
# dropped, remove this and change the basestring references below to str
2020
try:
2121
basestring
22-
except NameError:
22+
except NameError: # pragma: no cover
2323
basestring = str
2424
########
2525

tableaudocumentapi/field.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@ def __init__(self, column_xml=None, metadata_xml=None):
4242

4343
if column_xml is not None:
4444
self._initialize_from_column_xml(column_xml)
45-
if metadata_xml is not None:
46-
self.apply_metadata(metadata_xml)
45+
# This isn't currently never called because of the way we get the data from the xml,
46+
# but during the refactor, we might need it. This is commented out as a reminder
47+
# if metadata_xml is not None:
48+
# self.apply_metadata(metadata_xml)
4749

4850
elif metadata_xml is not None:
4951
self._initialize_from_metadata_xml(metadata_xml)

tableaudocumentapi/multilookup_dict.py

Lines changed: 1 additio 10000 n & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ def _resolve_value(key, value):
1313
if retval is None:
1414
retval = getattr(value, key, None)
1515
except AttributeError:
16+
# We should never hit this.
1617
retval = None
1718
return retval
1819

@@ -50,13 +51,6 @@ def _get_real_key(self, key):
5051
def __setitem__(self, key, value):
5152
real_key = self._get_real_key(key)
5253

53-
alias = _resolve_value('alias', value)
54-
caption = _resolve_value('caption', value)
55-
if alias is not None:
56-
self._indexes['alias'][alias] = real_key
57-
if caption is not None:
58-
self._indexes['caption'][caption] = real_key
59-
6054
dict.__setitem__(self, real_key, value)
6155

6256
def get(self, key, default_value=_no_default_value):

test/assets/BadZip.zip

201 Bytes
Binary file not shown.

test/bvt.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,14 @@ def test_can_extract_datasource(self):
201201
self.assertEqual(wb.datasources[0].name,
202202
'sqlserver.17u3bqc16tjtxn14e2hxh19tyvpo')
203203

204+
def test_can_get_worksheets(self):
205+
wb = Workbook(self.workbook_file.name)
206+
self.assertIsNotNone(wb.worksheets)
207+
208+
def test_has_filename(self):
209+
wb = Workbook(self.workbook_file.name)
210+
self.assertEqual(wb.filename, self.workbook_file.name)
211+
204212
def test_can_update_datasource_connection_and_save(self):
205213
original_wb = Workbook(self.workbook_file.name)
206214
original_wb.datasources[0].connections[0].dbname = 'newdb.test.tsi.lan'

test/test_field.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import unittest
2+
import os.path
3+
4+
from tableaudocumentapi import Datasource, Field
5+
from tableaudocumentapi.field import _find_metadata_record
6+
7+
TEST_ASSET_DIR = os.path.join(
8+
os.path.dirname(__file__),
9+
'assets'
10+
)
11+
TEST_TDS_FILE = os.path.join(
12+
TEST_ASSET_DIR,
13+
'datasource_test.tds'
14+
)
15+
16+
17+
class FieldsUnitTest(unittest.TestCase):
18+
def test_field_throws_if_no_data_passed_in(self):
19+
with self.assertRaises(AttributeError):
20+
Field()
21+
22+
23+
class FindMetaDataRecordEdgeTest(unittest.TestCase):
24+
class MockXmlWithNoFind(object):
25+
def find(self, *args, **kwargs):
26+
return None
27+
28+
def test_find_metadata_record_returns_none(self):
29+
self.assertIsNone(_find_metadata_record(self.MockXmlWithNoFind(), 'foo'))

test/test_multidict.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ def setUp(self):
2222
}
2323
})
2424

25+
def test_multilookupdict_can_be_empty(self):
26+
mld = MultiLookupDict()
27+
self.assertIsNotNone(mld)
28+
2529
def test_multilookupdict_name_only(self):
2630
actual = self.mld['[baz]']
2731
self.assertEqual(3, actual['value'])
@@ -70,3 +74,7 @@ def test_multilookupdict_can_set_item(self):
7074
def test_multilookupdict_can_set_new_item(self):
7175
self.mld['wakka'] = 1
7276
self.assertEqual(1, self.mld['wakka'])
77+
78+
def test_multilookupdict_can_set_with_alias(self):
79+
self.mld['bar'] = 2
80+
self.assertEqual(2, self.mld['[foo]'])

test/test_xfile.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import os.path
2+
import unittest
3+
import zipfile
4+
from tableaudocumentapi.xfile import find_file_in_zip
5+
6+
TEST_ASSET_DIR = os.path.join(
7+
os.path.dirname(__file__),
8+
'assets'
9+
)
10+
BAD_ZIP_FILE = os.path.join(
11+
TEST_ASSET_DIR,
12+
'BadZip.zip'
13+
)
14+
15+
16+
class XFileEdgeTests(unittest.TestCase):
17+
def test_find_file_in_zip_no_xml_file(self):
18+
badzip = zipfile.ZipFile(BAD_ZIP_FILE)
19+
self.assertIsNone(find_file_in_zip(badzip))

0 commit comments

Comments
 (0)
0