122 lines
3.8 KiB
TypeScript
122 lines
3.8 KiB
TypeScript
![]() |
import { MultiAutocompleteChoiceType } from "@saleor/components/MultiAutocompleteSelectField";
|
||
|
import { WebhookEventTypeAsyncEnum } from "@saleor/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);
|
||
|
});
|
||
|
});
|