2023-01-16 09:45:12 +00:00
|
|
|
import { MultiAutocompleteChoiceType } from "@dashboard/components/MultiAutocompleteSelectField";
|
|
|
|
import { WebhookEventTypeAsyncEnum } from "@dashboard/graphql";
|
2022-12-15 13:51:05 +00:00
|
|
|
|
|
|
|
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);
|
|
|
|
});
|
|
|
|
});
|