Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
lkostrowski committed Oct 10, 2024
1 parent 405dee1 commit 007d36c
Show file tree
Hide file tree
Showing 10 changed files with 53 additions and 50 deletions.
2 changes: 2 additions & 0 deletions apps/avatax/src/graphql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ export const graphql = initGraphQLTada<{
disableMasking: true;
scalars: {
Date: string;
DateTime: string;
Day: string;
Boolean: boolean;
Decimal: number;
};
Expand Down
5 changes: 5 additions & 0 deletions apps/avatax/src/mocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,17 @@ import { OrderConfirmedFragment } from "../graphql/subscriptions/OrderConfirmed"

export const defaultOrder: ResultOf<typeof OrderConfirmedFragment> = {
id: "T3JkZXI6ZTUzZTBlM2MtMjk5Yi00OWYxLWIyZDItY2Q4NWExYTgxYjY2",
userEmail: "",
user: {
avataxCustomerCode: null,
id: "VXNlcjoyMDg0NTEwNDEw",
email: "[email protected]",
},
number: "1234",
avataxEntityCode: null,
avataxCustomerCode: null,
avataxDocumentCode: null,
avataxTaxCalculationDate: null,
created: "2023-05-25T09:18:55.203440+00:00",
status: "UNFULFILLED",
channel: {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
import { TransactionModel } from "avatax/lib/models/TransactionModel";

import { ResultOf } from "@/graphql";

import { OrderConfirmedSubscription } from "../../../../graphql/subscriptions/OrderConfirmed";
import { defaultOrder } from "../../../mocks";
import { ChannelConfig } from "../../channel-configuration/channel-config";
import { AvataxConfigMockGenerator } from "../avatax-config-mock-generator";
Expand Down Expand Up @@ -31,29 +28,10 @@ type TestingScenario = keyof typeof testingScenariosMap;

export class AvataxOrderConfirmedMockGenerator {
constructor(private scenario: TestingScenario = "default") {}
generateOrder = (
overrides: Partial<ResultOf<typeof OrderConfirmedSubscription>> = {},
): ResultOf<typeof OrderConfirmedSubscription> =>
structuredClone({
...testingScenariosMap[this.scenario].order,
...overrides,
});

generateChannelConfig = (overrides: Partial<ChannelConfig> = {}): ChannelConfig =>
structuredClone({
...testingScenariosMap[this.scenario].channelConfig,
...overrides,
});

generateAvataxConfig = (overrides: Partial<AvataxConfig> = {}): AvataxConfig => {
const mockGenerator = new AvataxConfigMockGenerator();

return mockGenerator.generateAvataxConfig(overrides);
};

generateResponse = (overrides: Partial<TransactionModel> = {}): TransactionModel =>
structuredClone({
...testingScenariosMap[this.scenario].response,
...overrides,
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ const channelSlug = "default-channel";

const getBasePayload = (): CalculateTaxesPayload => {
return {
issuedAt: null,
version: "",
__typename: "CalculateTaxes",
recipient: {
privateMetadata: [],
Expand Down Expand Up @@ -77,6 +79,7 @@ const getBasePayload = (): CalculateTaxesPayload => {
},
],
sourceObject: {
avataxCustomerCode: "",
id: "123",
avataxEntityCode: "",
__typename: "Checkout",
Expand Down
4 changes: 2 additions & 2 deletions apps/avatax/src/modules/saleor/order-cancelled/event.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ describe("SaleorCancelledOrderEvent", () => {
it("should fail to create a SaleorCancelledOrderEvent when 'order' is missing", () => {
const result = SaleorCancelledOrderEvent.create({
...validPayload,
order: undefined,
order: null,
});

expect(result.isErr()).toBe(true);
Expand All @@ -51,7 +51,7 @@ describe("SaleorCancelledOrderEvent", () => {
...validPayload,
order: {
...validPayload.order,
avataxId: undefined,
avataxId: null,
},
} as OrderCancelledPayload);

Expand Down
7 changes: 4 additions & 3 deletions apps/avatax/src/modules/saleor/order-confirmed/event.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ describe("SaleorOrderConfirmedEvent", () => {
const payload = SaleorOrderConfirmedEventMockFactory.getGraphqlPayload();
const result = SaleorOrderConfirmedEvent.createFromGraphQL({
...payload,
order: undefined,
// @ts-expect-error testing
order: null,
});

expect(result.isErr()).toBe(true);
Expand Down Expand Up @@ -167,8 +168,8 @@ describe("SaleorOrderConfirmedEvent", () => {
it("Returns empty string if neither user.email or userEmail exist", () => {
const payload = SaleorOrderConfirmedEventMockFactory.getGraphqlPayload();

payload.order.user = undefined;
payload.order.userEmail = undefined;
payload.order.user = null;
payload.order.userEmail = null;

const result = SaleorOrderConfirmedEvent.createFromGraphQL(payload);

Expand Down
48 changes: 32 additions & 16 deletions apps/avatax/src/modules/saleor/order-confirmed/mocks.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
import { ResultOf } from "@/graphql";
import { SaleorOrderConfirmedEvent } from "@/modules/saleor";

import { OrderConfirmedFragment } from "../../../../graphql/subscriptions/OrderConfirmed";
import { OrderConfirmedPayload } from "../../webhooks/payloads/order-confirmed-payload";
import { SaleorOrderLineMockFactory } from "../order-line-mocks";
import { SaleorOrderConfirmedEvent } from "./event";

export class SaleorOrderConfirmedEventMockFactory {
private static _getGraphqlPayload = (): {
order: NonNullable<OrderConfirmedPayload["order"]>;
__typename: "OrderConfirmed";
} => ({
order: {
private static _getGraphqlPayload = () => {
const o = {
userEmail: "",
avataxDocumentCode: null,
avataxEntityCode: null,
avataxCustomerCode: null,
avataxTaxCalculationDate: null,
user: {
id: "id",
avataxCustomerCode: null,
email: "[email protected]",
},
id: "order-id",
Expand All @@ -33,9 +39,16 @@ export class SaleorOrderConfirmedEventMockFactory {
},
},
shippingAddress: {
__typename: "Address",
city: "Krakow",
country: { code: "PL", __typename: "CountryDisplay" },
country: { code: "PL" },
countryArea: "Malopolskie",
postalCode: "12345",
streetAddress1: "Jana Pawla 2",
streetAddress2: "2137",
},
billingAddress: {
city: "Krakow",
country: { code: "PL" },
countryArea: "Malopolskie",
postalCode: "12345",
streetAddress1: "Jana Pawla 2",
Expand All @@ -51,15 +64,18 @@ export class SaleorOrderConfirmedEventMockFactory {
currency: "USD",
},
lines: [SaleorOrderLineMockFactory.getGraphqlPayload()],
__typename: "Order" as const,
},
__typename: "OrderConfirmed" as const,
});
} satisfies NonNullable<ResultOf<typeof OrderConfirmedFragment>>;

return {
order: o,
} as const;
};

static create(
graphqlPayload: OrderConfirmedPayload = SaleorOrderConfirmedEventMockFactory._getGraphqlPayload(),
) {
const possibleOrderLine = SaleorOrderConfirmedEvent.createFromGraphQL(graphqlPayload);
static create(graphqlPayload?: OrderConfirmedPayload) {
const possibleOrderLine = SaleorOrderConfirmedEvent.createFromGraphQL(
graphqlPayload ??
(SaleorOrderConfirmedEventMockFactory._getGraphqlPayload() as OrderConfirmedPayload),
);

if (possibleOrderLine.isErr()) {
throw possibleOrderLine.error;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import { ResultOf } from "@/graphql";

import {
OrderConfirmedEventFragment,
OrderConfirmedSubscription,
} from "../../../../graphql/subscriptions/OrderConfirmed";
import { OrderConfirmedEventFragment } from "../../../../graphql/subscriptions/OrderConfirmed";

export type OrderConfirmedPayload = Extract<
ResultOf<typeof OrderConfirmedEventFragment>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ const getBasePayload = (): CalculateTaxesPayload => {
sourceLine: {
__typename: "OrderLine",
orderProductVariant: {
__typename: "ProductVariant",
id: "123",
product: {
taxClass: {
Expand All @@ -53,9 +52,10 @@ const getBasePayload = (): CalculateTaxesPayload => {
],
sourceObject: {
id: "123",
avataxCustomerCode: "",
avataxEntityCode: "",
__typename: "Checkout",
user: { __typename: "User", email: "", avataxCustomerCode: "", id: "" },
user: { email: "", avataxCustomerCode: "", id: "" },
},
},
};
Expand Down
3 changes: 2 additions & 1 deletion apps/avatax/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
"name": "gql.tada/ts-plugin",
"schema": "./graphql/schema.graphql",
"tadaOutputLocation": "./src/graphql-env.d.ts",
"shouldCheckForColocatedFragments": false
"shouldCheckForColocatedFragments": false,
"trackFieldUsage": false
}
]
},
Expand Down

0 comments on commit 007d36c

Please sign in to comment.