feat: automatic insertion of primary key tests#203
Conversation
Codecov Report
@@ Coverage Diff @@
## dev/0.1.0 #203 +/- ##
=============================================
- Coverage 84.29% 81.90% -2.39%
=============================================
Files 18 18
Lines 1057 1205 +148
=============================================
+ Hits 891 987 +96
- Misses 166 218 +52
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
feat: adding tests
cceb33d to
868747c
Compare
There was a problem hiding this comment.
Really really cool @virvirlopez I've changed the base branch to dev/0.1.0 just to put those new features aside for a bit while we finalise and wait for potential issues with the current release in case we have to ship more patches.
I made some suggestions and questions for you.
Our coverage is taking a big hit. Do you think you could add tests on the add function? I know it's "just" a runner but the logic inside is actually not simple and there are a few boolean logic pieces that I would like to make sure we have covered. What do you think?
Other than that, I think it's gonna work especially if you address my concern around how we get the path of the corresponding schema.yml file (see my comment in the code)
Finally, if you could:
- add "Resolves #ticket-numer in the PR description
- write a news fragment for the changelog that would be amazing.
Oh one more: make sure you check the issue and see if any if what I say or link too makes sense #194
Co-authored-by: Sourcery AI <>
for more information, see https://pre-commit.ci
bastienboutonnet
left a comment
There was a problem hiding this comment.
Looks good but can you make sure that you add a changelog entry please (instructions here: https://github.com/bitpicky/dbt-sugar/blob/main/CONTRIBUTING.md#shout-out-your-hardwork-in-the-changelog) this is a big feature so we want to make sure people know about it
Other than that the code change is fine with me.
Sourcery Code Quality Report✅ Merging this PR will increase code quality in the affected files by 0.12%.
Here are some functions in these files that still need a tune-up:
Legend and ExplanationThe emojis denote the absolute quality of the code:
The 👍 and 👎 indicate whether the quality has improved or gotten worse with this pull request. Please see our documentation here for details on how these metrics are calculated. We are actively working on this report - lots more documentation and extra metrics to come! Let us know what you think of it by mentioning @sourcery-ai in a comment. |
* feat: automatic insertion of primary key tests. * feat: adding tests feat: adding tests * feat: cleaning documentation * feat: change the way of getting the SQL file * Add new tests * 'Refactored by Sourcery' (#216) Co-authored-by: Sourcery AI <> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * feat: adding changelog defintion primary key tests * feat: adding changelog defintion primary key tests * rename and rephrase news fragment (#219) Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Bastien Boutonnet <bastien.b1@gmail.com>
* feat: add describe table logic in snowflake connector (#212) * implement `describe table` logic in SnowflakeConnector * add flag for experimental feature in config * update test expectations to have use_describe_snowflake False * add use_describe_snowflake CLI arg parsing * update cli consumption tests * 'Refactored by Sourcery' (#213) Co-authored-by: Sourcery AI <> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * add changelog entry * lowercase column names Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * feat: automatic insertion of primary key tests (#203) * feat: automatic insertion of primary key tests. * feat: adding tests feat: adding tests * feat: cleaning documentation * feat: change the way of getting the SQL file * Add new tests * 'Refactored by Sourcery' (#216) Co-authored-by: Sourcery AI <> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * feat: adding changelog defintion primary key tests * feat: adding changelog defintion primary key tests * rename and rephrase news fragment (#219) Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Bastien Boutonnet <bastien.b1@gmail.com> * refactor: add use_describe to base (#236) * add `use_describe` to the base `get_columns_from_table` def * 'Refactored by Sourcery' (#237) Co-authored-by: Sourcery AI <> Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> * feat: bootstrap task (#233) * setup arg parser and skeleton of bootstrap task * implement barebone all dbt models dict building * iterate through models and get col list and schema path * combine getting columns and finding descriptor * update tests for bootstrap_task * update tests for audit_task * add model placeholders in bootstrap_task add all models placeholders * refactor dbt models info in a dataclass for cleaner type checking * feat: bootstrap task (Sourcery refactored) (#234) * 'Refactored by Sourcery' * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: Sourcery AI <> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * fix typo in new fragment Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * feat: allow audit task to run bootstrap (#239) * add bootstrap option to `audit` and call it if passed * add news fragement * feat: collect rich user input for tests with subprocess (#238) * feat: collect rich user input for tests with subprocess * fix: order of the combine list Make nicer the logs Secure variable * add: feature.md * [pre-commit.ci] pre-commit autoupdate (#242) updates: - [github.com/psf/black: 21.4b0 → 21.4b2](psf/black@21.4b0...21.4b2) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * add dbt sugar logo * chore(deps): Bump sqlalchemy from 1.4.12 to 1.4.13 (#243) Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.4.12 to 1.4.13. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps-dev): Bump pytest from 6.2.3 to 6.2.4 (#244) * feat: add redshift connector (#229) * add RedshiftConnector engine creation module * add news fragment * move pytest-dictsdiff to dev requirements * make read_profile use PostgresDbtProfilesModel pydantic validation class * 'Refactored by Sourcery' (#231) Co-authored-by: Sourcery AI <> * Bump version: 0.0.0 → 0.1.0-a.0 Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: virvirlopez <virbyte@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Resolves #194
Description
Automatic insertion of the primary key tests into the primary key column.
If an SQL file has a configuration specifying the primary key, this new functionality will try (is try because if the tests did not pass it will not add them) to add the unique test and the null test (only if there are not implemented already).
How was the change tested
Ran it in local.
Checklist
(Ideally, all boxes are checked by the time we merged the PR, if you don't know how to do any of these don't hesitate to say so in the PR and we'll help you out.)