Add JSON field type and Event object (#4566)

* Add JSON field type and Event object

* Simplify code

* Adress PR comments and add featureFlag
This commit is contained in:
Félix Malfait
2024-03-19 21:54:08 +01:00
committed by GitHub
parent 4ab426c52a
commit 4bfb90657f
51 changed files with 575 additions and 117 deletions

View File

@ -1,9 +0,0 @@
import { gql } from '@apollo/client';
export const CREATE_EVENT = gql`
mutation CreateEvent($type: String!, $data: JSON!) {
createEvent(type: $type, data: $data) {
success
}
}
`;

View File

@ -0,0 +1,9 @@
import { gql } from '@apollo/client';
export const TRACK = gql`
mutation Track($type: String!, $data: JSON!) {
track(type: $type, data: $data) {
success
}
}
`;

View File

@ -11,8 +11,8 @@ const mocks: MockedResponse[] = [
{
request: {
query: gql`
mutation CreateEvent($type: String!, $data: JSON!) {
createEvent(type: $type, data: $data) {
mutation Track($type: String!, $data: JSON!) {
track(type: $type, data: $data) {
success
}
}
@ -24,7 +24,7 @@ const mocks: MockedResponse[] = [
},
result: jest.fn(() => ({
data: {
createEvent: {
track: {
success: true,
},
},

View File

@ -4,10 +4,10 @@ import { RecoilRoot } from 'recoil';
import { useTrackEvent } from '../useTrackEvent';
const mockCreateEventMutation = jest.fn();
const mockTrackMutation = jest.fn();
jest.mock('~/generated/graphql', () => ({
useCreateEventMutation: () => [mockCreateEventMutation],
useTrackMutation: () => [mockTrackMutation],
}));
describe('useTrackEvent', () => {
@ -17,8 +17,8 @@ describe('useTrackEvent', () => {
renderHook(() => useTrackEvent(eventType, eventData), {
wrapper: RecoilRoot,
});
expect(mockCreateEventMutation).toHaveBeenCalledTimes(1);
expect(mockCreateEventMutation).toHaveBeenCalledWith({
expect(mockTrackMutation).toHaveBeenCalledTimes(1);
expect(mockTrackMutation).toHaveBeenCalledWith({
variables: { type: eventType, data: eventData },
});
});

View File

@ -2,7 +2,7 @@ import { useCallback } from 'react';
import { useRecoilValue } from 'recoil';
import { telemetryState } from '@/client-config/states/telemetryState';
import { useCreateEventMutation } from '~/generated/graphql';
import { useTrackMutation } from '~/generated/graphql';
interface EventLocation {
pathname: string;
@ -14,7 +14,7 @@ export interface EventData {
export const useEventTracker = () => {
const telemetry = useRecoilValue(telemetryState());
const [createEventMutation] = useCreateEventMutation();
const [createEventMutation] = useTrackMutation();
return useCallback(
(eventType: string, eventData: EventData) => {

View File

@ -77,8 +77,8 @@ describe('useApolloFactory', () => {
await act(async () => {
await result.current.factory.mutate({
mutation: gql`
mutation CreateEvent($type: String!, $data: JSON!) {
createEvent(type: $type, data: $data) {
mutation Track($type: String!, $data: JSON!) {
track(type: $type, data: $data) {
success
}
}

View File

@ -41,8 +41,8 @@ const makeRequest = async () => {
await client.mutate({
mutation: gql`
mutation CreateEvent($type: String!, $data: JSON!) {
createEvent(type: $type, data: $data) {
mutation Track($type: String!, $data: JSON!) {
track(type: $type, data: $data) {
success
}
}

View File

@ -1,4 +1,5 @@
export type FeatureFlagKey =
| 'IS_BLOCKLIST_ENABLED'
| 'IS_CALENDAR_ENABLED'
| 'IS_QUICK_ACTIONS_ENABLED';
| 'IS_QUICK_ACTIONS_ENABLED'
| 'IS_EVENT_OBJECT_ENABLED';