From c4be200925a0c5ea9676fa75538453ea91287b82 Mon Sep 17 00:00:00 2001 From: Adrian Pilarczyk Date: Mon, 19 Jun 2023 12:06:05 +0200 Subject: [PATCH] fix: QA bugs in Taxes App (#654) * fix: :bug: turn off validateAddress in TaxJar * refactor: :recycle: make avatax & taxjar schemas strict * fix: :bug: update providers bug * build: :construction_worker: add changeset * Update cold-candles-fly.md --- .changeset/cold-candles-fly.md | 5 +++++ .../avatax/configuration/avatax-connection-repository.ts | 4 ++-- .../avatax/configuration/avatax-connection.service.ts | 2 +- .../taxjar/configuration/taxjar-connection-repository.ts | 4 ++-- .../taxjar/configuration/taxjar-connection.service.ts | 2 +- apps/taxes/src/modules/taxjar/taxjar-client.ts | 7 ++++++- 6 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 .changeset/cold-candles-fly.md diff --git a/.changeset/cold-candles-fly.md b/.changeset/cold-candles-fly.md new file mode 100644 index 0000000..603d285 --- /dev/null +++ b/.changeset/cold-candles-fly.md @@ -0,0 +1,5 @@ +--- +"saleor-app-taxes": patch +--- + +The update provider configuration views no longer return "invalid credentials" and "invalid address" errors in inappropriate cases. The latter required temporarily disabling the TaxJar address validation, as it currently doesn't work. diff --git a/apps/taxes/src/modules/avatax/configuration/avatax-connection-repository.ts b/apps/taxes/src/modules/avatax/configuration/avatax-connection-repository.ts index 4c086bf..59de3e1 100644 --- a/apps/taxes/src/modules/avatax/configuration/avatax-connection-repository.ts +++ b/apps/taxes/src/modules/avatax/configuration/avatax-connection-repository.ts @@ -13,7 +13,7 @@ import { avataxConnectionSchema, } from "../avatax-connection-schema"; -const getSchema = avataxConnectionSchema; +const getSchema = avataxConnectionSchema.strict(); export class AvataxConnectionRepository { private crudSettingsManager: CrudSettingsManager; @@ -83,7 +83,7 @@ export class AvataxConnectionRepository { return result.data; } - async patch(id: string, input: AvataxConfig): Promise { + async patch(id: string, input: Pick): Promise { return this.crudSettingsManager.update(id, input); } diff --git a/apps/taxes/src/modules/avatax/configuration/avatax-connection.service.ts b/apps/taxes/src/modules/avatax/configuration/avatax-connection.service.ts index f3cd316..e87f172 100644 --- a/apps/taxes/src/modules/avatax/configuration/avatax-connection.service.ts +++ b/apps/taxes/src/modules/avatax/configuration/avatax-connection.service.ts @@ -50,7 +50,7 @@ export class AvataxConnectionService { await validationService.validate(input); - return this.avataxConnectionRepository.patch(id, input); + return this.avataxConnectionRepository.patch(id, { config: input }); } async delete(id: string): Promise { diff --git a/apps/taxes/src/modules/taxjar/configuration/taxjar-connection-repository.ts b/apps/taxes/src/modules/taxjar/configuration/taxjar-connection-repository.ts index 3246911..0ee30f0 100644 --- a/apps/taxes/src/modules/taxjar/configuration/taxjar-connection-repository.ts +++ b/apps/taxes/src/modules/taxjar/configuration/taxjar-connection-repository.ts @@ -9,7 +9,7 @@ import { import { TAX_PROVIDER_KEY } from "../../provider-connections/public-provider-connections.service"; import { TaxJarConfig, TaxJarConnection, taxJarConnection } from "../taxjar-connection-schema"; -const getSchema = taxJarConnection; +const getSchema = taxJarConnection.strict(); export class TaxJarConnectionRepository { private crudSettingsManager: CrudSettingsManager; @@ -79,7 +79,7 @@ export class TaxJarConnectionRepository { return result.data; } - async patch(id: string, input: TaxJarConfig): Promise { + async patch(id: string, input: Pick): Promise { return this.crudSettingsManager.update(id, input); } diff --git a/apps/taxes/src/modules/taxjar/configuration/taxjar-connection.service.ts b/apps/taxes/src/modules/taxjar/configuration/taxjar-connection.service.ts index 74ce1db..041902b 100644 --- a/apps/taxes/src/modules/taxjar/configuration/taxjar-connection.service.ts +++ b/apps/taxes/src/modules/taxjar/configuration/taxjar-connection.service.ts @@ -49,7 +49,7 @@ export class TaxJarConnectionService { await validationService.validate(input); - return this.taxJarConnectionRepository.patch(id, input); + return this.taxJarConnectionRepository.patch(id, { config: input }); } async delete(id: string): Promise { diff --git a/apps/taxes/src/modules/taxjar/taxjar-client.ts b/apps/taxes/src/modules/taxjar/taxjar-client.ts index ab063cd..ee4420f 100644 --- a/apps/taxes/src/modules/taxjar/taxjar-client.ts +++ b/apps/taxes/src/modules/taxjar/taxjar-client.ts @@ -46,7 +46,12 @@ export class TaxJarClient { return this.client.createOrder(params); } + /** + * TaxJar validateAddress doesn't work. It's turned off for now. + * @see https://github.com/taxjar/taxjar-node/issues/70 + * @todo Revisit this when TaxJar fixes the issue. Alternatively, create a custom validation. + */ async validateAddress({ params }: ValidateAddressArgs) { - return this.client.validateAddress(params); + // return this.client.validateAddress(params); } }