saleor-apps-redis_apl/apps/taxes/src/modules/avatax/maps/avatax-calculate-taxes-map.test.ts
Adrian Pilarczyk 453baf78a1
feat: finalize order process (#355)
* feat:  add dummy order-created

* refactor: 🔥 unused private-providers-configuration-service

* feat:  add dummy order-fulfilled

* refactor: 🚚 move provider-config

* refactor: 🚚 crudSettingsConfigurator -> crudSettingsManager

* refactor: ♻️ [tax-provider].ts -> [tax-provider]-webhook.service.ts

* feat:  add dummy createOrder

* refactor: ♻️ distinguish between salesOrder and salesInvoice in avatax

* refactor: 🚚 [provider]-calculate.ts to [provider]-transform.ts

* refactor: 🚚 ResponseTaxPayload to tax-provider-webhook.ts

* refactor: 🚚 ResponseTaxPayload -> CalculateTaxesResponse

* refactor: ♻️ webhooks with active-tax-provider.service.ts

* feat:  add skeleton orderCreate functionality

* refactor: ♻️ [provider]-transform.ts -> [provider]-[webhook]-transform.ts

* feat:  add order-fulfilled with avatax call

* refactor: ♻️ move getActiveTaxProvider to active-tax-provider

* refactor: 🏷️ export types for [provider]-client function args

* refactor: 🚚 UpdateAppMetadata -> UpdateMetadata

* feat:  fulfill order with id from metadata

* build: ⬆️ upgrade avatax

* feat:  commit transaction on fulfill in avatax

* fix: 🐛 return of webhooks to ensure valid retry behavior

* refactor: 🚚 [provider]-[webhook]-transform -> [provider]-[webhook]-map

* refactor: 🏷️ export types of avatax-calculate-taxes mapPayload

* refactor: ♻️ extract address-map to separate function

* refactor: ♻️ remove schema.ts

* refactor: ♻️ move addressSchema to channels-config.ts

* feat:  add tests & placeholder tests for avatax & taxjar maps

* refactor: ♻️ throw error if no metadata

* refactor: ♻️ change EXTERNAL_ID_KEY to PROVIDER_ORDER_ID_KEY

add comments

* refactor: ♻️ comments -> it.todo in tests

* refactor: 💡 add comment about shipping_item_code

* refactor:  add todo items for tests

* refactor: ♻️ remove export and add sumLines to taxJarOrderCreated

* refactor: ♻️ address-map with avatarAddressFactory

* docs: 💡 add comment about MOCKED_SALEOR_PAYLOAD

* refactor: ♻️ remove export of mapLines and add to avataxCalculateTaxes

* style: 🎨 add newline-after-var warn to eslint-config-saleor

* style: 🎨 autofix newline-after-var in taxes

* test:  restructure tests according to new naming in address-map

* refactor: ♻️ add shippingItemCode to avataxCalculateTaxes wrapper object

* refactor: 🚚 payloadProps -> payloadArgs

* refactor: ♻️ add Maps suffix to map wrapper objects

* refactor: ♻️ remove data: null from ActiveTaxProviderResult

* refactor: ♻️ maintain the object hierarchy in tests

* refactor: ♻️ refactor webhook responses with WebhookResponseFactory

* build: ⬆️ vitest

* test:  add tests for get-app-config-test

* test:  add tests for getActiveTaxProvider

* refactor: ♻️ use address fragment for taxBase and order

* refactor: ♻️ rename WebhookResponseFactory -> WebhookResponse

* style: 👷 add multiline-comment-style

* fix: 🐛 dummy test in get-app-config.test.ts

* refactor: ♻️ rename AddressFragment -> Address

* refactor: ♻️ use debug instead of error in webhook-response noRetry

* refactor: ♻️ refactor as variables in mutation

* build: 👷 add changeset

* refactor: ♻️ split changesets in two

* build: ⬆️ vite

* build: ⬆️ vite && vitest in all apps
2023-04-17 13:58:21 +02:00

126 lines
3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
AvataxCalculateTaxesMapPayloadArgs,
avataxCalculateTaxesMaps,
} from "./avatax-calculate-taxes-map";
// * Mocked payload data, channel config and avatax config
const MOCKED_CALCULATE_TAXES_ARGS: AvataxCalculateTaxesMapPayloadArgs = {
taxBase: {
currency: "PLN",
channel: {
slug: "channel-pln",
},
sourceObject: {
__typename: "Order",
user: {
id: "VXNlcjo5ZjY3ZjY0Zi1iZjY5LTQ5ZjYtYjQ4Zi1iZjY3ZjY0ZjY0ZjY=",
},
},
discounts: [],
address: {
streetAddress1: "123 Palm Grove Ln",
streetAddress2: "",
city: "LOS ANGELES",
country: {
code: "US",
},
countryArea: "CA",
postalCode: "90002",
},
shippingPrice: {
amount: 48.33,
},
lines: [
{
chargeTaxes: true,
quantity: 1,
unitPrice: {
amount: 84,
},
totalPrice: {
amount: 84,
},
sourceLine: {
__typename: "OrderLine",
id: "T3JkZXJMaW5lOmY1NGQ1MWY2LTc1OTctNGY2OC1hNDk0LTFjYjZlYjRmOTlhMQ==",
variant: {
id: "UHJvZHVjdFZhcmlhbnQ6MzQ2",
product: {
metafield: null,
productType: {
metafield: null,
},
},
},
},
},
{
chargeTaxes: true,
quantity: 1,
unitPrice: {
amount: 5.99,
},
totalPrice: {
amount: 5.99,
},
sourceLine: {
__typename: "OrderLine",
id: "T3JkZXJMaW5lOjU1NTFjNTFjLTM5MWQtNGI0Ny04MGU0LWVjY2Q5ZjU4MjQyNQ==",
variant: {
id: "UHJvZHVjdFZhcmlhbnQ6Mzg1",
product: {
metafield: null,
productType: {
metafield: null,
},
},
},
},
},
],
},
channel: {
providerInstanceId: "b8c29f49-7cae-4762-8458-e9a27eb83081",
enabled: false,
address: {
country: "US",
zip: "92093",
state: "CA",
city: "La Jolla",
street: "9500 Gilman Drive",
},
},
config: {
companyCode: "DEFAULT",
isAutocommit: false,
isSandbox: true,
name: "Avatax-1",
password: "password",
username: "username",
},
};
describe("avataxCalculateTaxesMaps", () => {
describe.todo("mapResponse", () => {
it.todo("calculation of fields");
it.todo("formatting the fields");
it.todo("rounding of numbers");
});
describe.todo("mapPayload", () => {
it.todo("calculation of fields");
it.todo("formatting the fields");
it.todo("rounding of numbers");
});
describe("mapLines", () => {
it("includes shipping as a line", () => {
const lines = avataxCalculateTaxesMaps.mapLines(MOCKED_CALCULATE_TAXES_ARGS.taxBase);
expect(lines).toContainEqual({
itemCode: avataxCalculateTaxesMaps.shippingItemCode,
quantity: 1,
amount: 48.33,
});
});
});
});