8000 Improve test coverage (#70) · DavidSvnssn/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 addition & 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