Skip to content

Commit bdd352c

Browse files
mklaberTim Kutcher
authored andcommitted
fix: Don't call get_fields_for_table for skipped tables (#44)
1 parent bed6f3b commit bdd352c

4 files changed

Lines changed: 36 additions & 9 deletions

File tree

poetry.lock

Lines changed: 19 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ Sphinx = "^3.3.0"
4242
sphinx-rtd-theme = "^0.5.0"
4343
python-dotenv = "^0.15.0"
4444
six = "^1.15.0"
45+
pytest-mock = "^3.6.1"
4546

4647
[tool.poetry.scripts]
4748
qbc = 'quickbase_client.tools.qbc:main'

src/quickbase_client/tools/model_generate.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,6 @@ def add_app_file(self, app_data):
161161
def add_table_file(self, table, fields):
162162
table_ident = table['singleRecordName']
163163
file_name = make_var_name(table_ident)
164-
if len(self.table_ids) and not any(
165-
x in self.table_ids for x in [table_ident, file_name, table['id']]
166-
):
167-
# if table_ids have been specified, and this table's ID, single record name, or var name
168-
# is not in the list, skip it
169-
return
170164
if file_name in self.pkg_writer.modules:
171165
table_ident = table['alias'].replace('_DBID_', '')
172166
file_name = make_var_name(table_ident)
@@ -196,8 +190,15 @@ def run(self):
196190
tables = api.get_tables_for_app(self.app_id)
197191
for table in tables.json():
198192
table_id = table['id']
199-
fields = api.get_fields_for_table(table_id)
200-
self.add_table_file(table, fields.json())
193+
table_ident = table['singleRecordName']
194+
table_var = make_var_name(table_ident)
195+
if not len(self.table_ids) or any(
196+
x in self.table_ids for x in [table_var, table_ident, table_id]
197+
):
198+
# if not table_ids have been specified, or they have but this table's ID,
199+
# single record name, or var name are in the list, generate it
200+
fields = api.get_fields_for_table(table_id)
201+
self.add_table_file(table, fields.json())
201202

202203
self.pkg_writer.write()
203204
return True

tests/test_tools/test_model_generate.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import os
22
from tempfile import TemporaryDirectory
3+
from unittest.mock import ANY
34

45
import pytest
56
from requests import Response
@@ -71,6 +72,12 @@ def _asserts(d, _):
7172
assert os.path.exists(os.path.join(d, 'qbcpy', 'ideas_2.py'))
7273
run_generator(_asserts, table_ids=['idea', 'cccccc'])
7374

75+
def test_gets_fields_only_for_requested_tables(self, run_generator, mocker):
76+
spy = mocker.spy(model_generate.QuickBaseApiClient, 'get_fields_for_table')
77+
run_generator(table_ids=['aaaaaa'])
78+
# first arg is `self` because it is an instance method
79+
spy.assert_called_once_with(ANY, 'aaaaaa')
80+
7481
def test_writes_table_class(self, run_generator):
7582
gen = run_generator()
7683
m = gen.pkg_writer.modules['debug']

0 commit comments

Comments
 (0)