From a639f2648cb6fd47a3b07a81a10fd29d39d88db9 Mon Sep 17 00:00:00 2001 From: Edward Emanuel Date: Mon, 10 Feb 2025 13:40:45 -0600 Subject: [PATCH] Add warning for unsupported minorversion --- quickbooks/client.py | 8 ++++++++ tests/unit/test_client.py | 21 +++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/quickbooks/client.py b/quickbooks/client.py index df88d375..d83a62d0 100644 --- a/quickbooks/client.py +++ b/quickbooks/client.py @@ -5,6 +5,7 @@ import hashlib import hmac import decimal +import warnings from . import exceptions from requests_oauthlib import OAuth2Session @@ -19,6 +20,7 @@ class Environments(object): class QuickBooks(object): + MINIMUM_MINOR_VERSION = 75 company_id = 0 session = None auth_client = None @@ -77,6 +79,12 @@ def __new__(cls, **kwargs): if 'minorversion' in kwargs: instance.minorversion = kwargs['minorversion'] + if instance.minorversion < instance.MINIMUM_MINOR_VERSION: + warnings.warn( + 'Minor Version no longer supported.' + 'See: https://blogs.intuit.com/2025/01/21/changes-to-our-accounting-api-that-may-impact-your-application/', + DeprecationWarning) + instance.invoice_link = kwargs.get('invoice_link', False) if 'verifier_token' in kwargs: diff --git a/tests/unit/test_client.py b/tests/unit/test_client.py index a145e4d6..23c20632 100644 --- a/tests/unit/test_client.py +++ b/tests/unit/test_client.py @@ -1,4 +1,5 @@ import json +import warnings from tests.integration.test_base import QuickbooksUnitTestCase try: @@ -31,12 +32,28 @@ def test_client_new(self): self.qb_client = client.QuickBooks( company_id="company_id", verbose=True, - minorversion=4, + minorversion=75, verifier_token=TEST_VERIFIER_TOKEN, ) self.assertEqual(self.qb_client.company_id, "company_id") - self.assertEqual(self.qb_client.minorversion, 4) + self.assertEqual(self.qb_client.minorversion, 75) + + def test_client_with_deprecated_minor_version(self): + with warnings.catch_warnings(record=True) as w: + self.qb_client = client.QuickBooks( + company_id="company_id", + verbose=True, + minorversion=74, + verifier_token=TEST_VERIFIER_TOKEN, + ) + + warnings.simplefilter("always") + self.assertEqual(self.qb_client.company_id, "company_id") + self.assertEqual(self.qb_client.minorversion, 74) + self.assertEqual(len(w), 1) + self.assertTrue(issubclass(w[-1].category, DeprecationWarning)) + self.assertTrue("Minor Version no longer supported." in str(w[-1].message)) def test_api_url(self): qb_client = client.QuickBooks(sandbox=False)