saleor-dashboard/src/custom-apps/utils.test.ts

122 lines
3.8 KiB
TypeScript
Raw Normal View History

import { MultiAutocompleteChoiceType } from "@dashboard/components/MultiAutocompleteSelectField";
import { WebhookEventTypeAsyncEnum } from "@dashboard/graphql";
import { filterSelectedAsyncEvents, mapAsyncEventsToChoices } from "./utils";
describe("Custom Apps mapping events", () => {
it("should return enabled async events choices when not any event selected", () => {
// Arrange
const events: WebhookEventTypeAsyncEnum[] = [
WebhookEventTypeAsyncEnum.ANY_EVENTS,
WebhookEventTypeAsyncEnum.PAGE_CREATED,
WebhookEventTypeAsyncEnum.PRODUCT_CREATED,
];
const selectedEvents: WebhookEventTypeAsyncEnum[] = [
WebhookEventTypeAsyncEnum.PAGE_CREATED,
];
// Act
const asyncEvents = mapAsyncEventsToChoices(events, selectedEvents);
// Assert
const expectedAsyncEvents: MultiAutocompleteChoiceType[] = [
{
label: WebhookEventTypeAsyncEnum.ANY_EVENTS,
value: WebhookEventTypeAsyncEnum.ANY_EVENTS,
badge: undefined,
disabled: false,
},
{
label: WebhookEventTypeAsyncEnum.PAGE_CREATED,
value: WebhookEventTypeAsyncEnum.PAGE_CREATED,
badge: undefined,
disabled: false,
},
{
label: WebhookEventTypeAsyncEnum.PRODUCT_CREATED,
value: WebhookEventTypeAsyncEnum.PRODUCT_CREATED,
badge: undefined,
disabled: false,
},
];
expect(asyncEvents).toHaveLength(3);
expect(asyncEvents).toEqual(expectedAsyncEvents);
});
it("should return disabled async events choices when any event selected", () => {
// Arrange
const events: WebhookEventTypeAsyncEnum[] = [
WebhookEventTypeAsyncEnum.ANY_EVENTS,
WebhookEventTypeAsyncEnum.PAGE_CREATED,
WebhookEventTypeAsyncEnum.PRODUCT_CREATED,
];
const selectedEvents: WebhookEventTypeAsyncEnum[] = [
WebhookEventTypeAsyncEnum.ANY_EVENTS,
WebhookEventTypeAsyncEnum.PAGE_CREATED,
];
// Act
const asyncEvents = mapAsyncEventsToChoices(events, selectedEvents);
// Assert
const expectedAsyncEvents: MultiAutocompleteChoiceType[] = [
{
label: WebhookEventTypeAsyncEnum.ANY_EVENTS,
value: WebhookEventTypeAsyncEnum.ANY_EVENTS,
badge: undefined,
disabled: false,
},
{
label: WebhookEventTypeAsyncEnum.PAGE_CREATED,
value: WebhookEventTypeAsyncEnum.PAGE_CREATED,
badge: undefined,
disabled: true,
},
{
label: WebhookEventTypeAsyncEnum.PRODUCT_CREATED,
value: WebhookEventTypeAsyncEnum.PRODUCT_CREATED,
badge: undefined,
disabled: true,
},
];
expect(asyncEvents).toHaveLength(3);
expect(asyncEvents).toEqual(expectedAsyncEvents);
});
});
describe("Custom Apps filtering events", () => {
it("should return selected async event types when not any event selected", () => {
// Arrange
const selectedEvents: WebhookEventTypeAsyncEnum[] = [
WebhookEventTypeAsyncEnum.PAGE_CREATED,
WebhookEventTypeAsyncEnum.PRODUCT_CREATED,
];
// Act
const asyncEvents = filterSelectedAsyncEvents(selectedEvents);
// Assert
expect(asyncEvents).toHaveLength(2);
expect(asyncEvents).toEqual(selectedEvents);
});
it("should return only any async event type when any event selected", () => {
// Arrange
const selectedEvents: WebhookEventTypeAsyncEnum[] = [
WebhookEventTypeAsyncEnum.ANY_EVENTS,
WebhookEventTypeAsyncEnum.PAGE_CREATED,
WebhookEventTypeAsyncEnum.PRODUCT_CREATED,
];
// Act
const asyncEvents = filterSelectedAsyncEvents(selectedEvents);
// Assert
const expectedAsyncEvents: WebhookEventTypeAsyncEnum[] = [
WebhookEventTypeAsyncEnum.ANY_EVENTS,
];
expect(asyncEvents).toHaveLength(1);
expect(asyncEvents).toEqual(expectedAsyncEvents);
});
});