saleor-apps-redis_apl/apps/taxes/src/modules/taxjar/address-factory.ts

37 lines
1.2 KiB
TypeScript
Raw Normal View History

refactor: refine taxjar (#494) * feat: :white_check_mark: add first tests & use address-factory * feat: :sparkles: add distributeDiscount * refactor: taxjar maps to adapters (#495) * refactor: :recycle: taxjar-calculate-taxes-map with taxjar-calculate-taxes-adapter * refactor: :recycle: taxjar-order-created-map -> taxjar-order-created-adapter * refactor: :recycle: address 1st batch of feedback * refactor: :recycle: split up taxjar-calculate-taxes-adapter * refactor: :truck: extract shipping transformer * docs: :bulb: add comment about refunds in distribute-discount * refactor: :truck: split up taxjar-order-created-adapter classes * refactor: :recycle: mocks with taxjar-mock-factory * refactor: :recycle: mocks with avatax-mock-factory * refactor: avatax maps to adapters (#506) * refactor: :recycle: move around & refactor avatax-order-created-map -> adapter * refactor: :truck: move avatax-order-created- to its own folder * refactor: :recycle: avatax-calculate-taxes-map -> adapter * refactor: :recycle: avatax-order-fulfilled-maps -> adapter * feat: :sparkles: add logger to adapters * refactor: :recycle: mocks -> avatax-mock-transaction-factory & fix tests * feat: add tests for taxjar (#509) * fix: :truck: tax-provider-utils.test name * feat: :white_check_mark: add nexus tests & other taxjar tests * feat: :goal_net: add ExpectedError and use it in webhook-response * refactor: :white_check_mark: unify taxjar-calculate-taxes tests with mock-generator * feat: :white_check_mark: add TaxJarOrderCreatedMockGenerator * feat: :white_check_mark: add avatax-calculate-taxes-mock-generator * feat: :white_check_mark: add AvataxOrderCreatedMockGenerator * refactor: :fire: tax-mock-factory * fix: :bug: housekeeping * fix: :bug: feedback * feat: :white_check_mark: add taxBase with discounts test * fix: :bug: address feedback * refactor: :fire: unused avatax-mock-factory functions * feat: :sparkles: use discount utils in all providers * feat: :sparkles: differentiate between pricesEnteredWithTax in taxjar
2023-05-29 08:35:34 +00:00
import { ChannelAddress } from "../channels-configuration/channels-config";
import { AddressFragment as SaleorAddress } from "../../../generated/graphql";
import { AddressParams as TaxJarAddress, TaxParams } from "taxjar/dist/types/paramTypes";
function joinAddresses(address1: string, address2: string): string {
return `${address1}${address2.length > 0 ? " " + address2 : ""}`;
}
function mapSaleorAddressToTaxJarAddress(
address: SaleorAddress
): Pick<TaxParams, "to_city" | "to_country" | "to_state" | "to_street" | "to_zip"> {
return {
to_street: joinAddresses(address.streetAddress1, address.streetAddress2),
to_city: address.city,
to_zip: address.postalCode,
to_state: address.countryArea,
to_country: address.country.code,
};
}
function mapChannelAddressToTaxJarAddress(
address: ChannelAddress
): Pick<TaxParams, "from_city" | "from_country" | "from_state" | "from_street" | "from_zip"> {
return {
from_city: address.city,
from_country: address.country,
from_state: address.state,
from_street: address.street,
from_zip: address.zip,
};
}
export const taxJarAddressFactory = {
fromSaleorAddress: mapSaleorAddressToTaxJarAddress,
fromChannelAddress: mapChannelAddressToTaxJarAddress,
};