refactor: remove mappers (#326)
* refactor: remove mappers * chore: generate graphql types * lint: remove useless import * Remove preset-react-create-app from storybook addons * test: remove old tests * Upgrade storybook version * Remove sb preset-cra and add sb svgr loader * chore: remove figma image url from storybook --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -12,8 +12,7 @@ const meta: Meta<typeof Avatar> = {
|
||||
export default meta;
|
||||
type Story = StoryObj<typeof Avatar>;
|
||||
|
||||
const avatarUrl =
|
||||
'https://s3-alpha-sig.figma.com/img/bbb5/4905/f0a52cc2b9aaeb0a82a360d478dae8bf?Expires=1687132800&Signature=iVBr0BADa3LHoFVGbwqO-wxC51n1o~ZyFD-w7nyTyFP4yB-Y6zFawL-igewaFf6PrlumCyMJThDLAAc-s-Cu35SBL8BjzLQ6HymzCXbrblUADMB208PnMAvc1EEUDq8TyryFjRO~GggLBk5yR0EXzZ3zenqnDEGEoQZR~TRqS~uDF-GwQB3eX~VdnuiU2iittWJkajIDmZtpN3yWtl4H630A3opQvBnVHZjXAL5YPkdh87-a-H~6FusWvvfJxfNC2ZzbrARzXofo8dUFtH7zUXGCC~eUk~hIuLbLuz024lFQOjiWq2VKyB7dQQuGFpM-OZQEV8tSfkViP8uzDLTaCg__&Key-Pair-Id=APKAQ4GOSFWCVNEHN3O4';
|
||||
const avatarUrl = 'http://placekitten.com/300/300';
|
||||
|
||||
export const Rounded: Story = {
|
||||
render: getRenderWrapperForComponent(
|
||||
|
||||
@ -1,77 +0,0 @@
|
||||
import {
|
||||
GraphqlMutationUser,
|
||||
GraphqlQueryUser,
|
||||
mapToGqlUser,
|
||||
mapToUser,
|
||||
User,
|
||||
} from '../user.interface';
|
||||
|
||||
describe('User mappers', () => {
|
||||
it('should map GraphqlUser to User', () => {
|
||||
const now = new Date();
|
||||
now.setMilliseconds(0);
|
||||
const graphQLUser = {
|
||||
id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6b',
|
||||
displayName: 'John Doe',
|
||||
avatarUrl: 'https://example.com/avatar.png',
|
||||
email: 'john.doe@gmail.com',
|
||||
workspaceMember: {
|
||||
id: '7af20dea-0412-4c4c-8b13-d6f0e6e09e88',
|
||||
workspace: {
|
||||
id: '7af20dea-0412-4c4c-8b13-d6f0e6e09e89',
|
||||
displayName: 'John Doe',
|
||||
__typename: 'workspace',
|
||||
},
|
||||
__typename: 'workspace_members',
|
||||
},
|
||||
__typename: 'users',
|
||||
} satisfies GraphqlQueryUser;
|
||||
|
||||
const User = mapToUser(graphQLUser);
|
||||
expect(User).toStrictEqual({
|
||||
__typename: 'users',
|
||||
id: graphQLUser.id,
|
||||
displayName: graphQLUser.displayName,
|
||||
avatarUrl: graphQLUser.avatarUrl,
|
||||
email: graphQLUser.email,
|
||||
workspaceMember: {
|
||||
id: graphQLUser.workspaceMember.id,
|
||||
workspace: {
|
||||
id: graphQLUser.workspaceMember.workspace.id,
|
||||
displayName: graphQLUser.workspaceMember.workspace.displayName,
|
||||
domainName: undefined,
|
||||
logo: undefined,
|
||||
},
|
||||
},
|
||||
} satisfies User);
|
||||
});
|
||||
|
||||
it('should map User to GraphQlUser', () => {
|
||||
const now = new Date();
|
||||
now.setMilliseconds(0);
|
||||
const user = {
|
||||
__typename: 'users',
|
||||
id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6b',
|
||||
displayName: 'John Doe',
|
||||
avatarUrl: 'https://example.com/avatar.png',
|
||||
email: 'john.doe@gmail.com',
|
||||
workspaceMember: {
|
||||
id: '7af20dea-0412-4c4c-8b13-d6f0e6e09e88',
|
||||
workspace: {
|
||||
id: '7af20dea-0412-4c4c-8b13-d6f0e6e09e89',
|
||||
displayName: 'John Doe',
|
||||
},
|
||||
},
|
||||
} satisfies User;
|
||||
|
||||
const graphQLUser = mapToGqlUser(user);
|
||||
expect(graphQLUser).toStrictEqual({
|
||||
id: user.id,
|
||||
displayName: user.displayName,
|
||||
avatarUrl: user.avatarUrl,
|
||||
email: user.email,
|
||||
workspaceMemberId: user.workspaceMember.id,
|
||||
__typename: 'users',
|
||||
} satisfies GraphqlMutationUser);
|
||||
});
|
||||
});
|
||||
@ -1,52 +1,12 @@
|
||||
import {
|
||||
GraphqlQueryWorkspaceMember,
|
||||
mapToWorkspaceMember,
|
||||
WorkspaceMember,
|
||||
} from './workspaceMember.interface';
|
||||
import { User as GQLUser } from '../../../generated/graphql';
|
||||
import { DeepPartial } from '../../utils/utils';
|
||||
|
||||
export interface User {
|
||||
__typename: 'users';
|
||||
id: string;
|
||||
email?: string;
|
||||
displayName?: string;
|
||||
avatarUrl?: string;
|
||||
workspaceMember?: WorkspaceMember | null;
|
||||
}
|
||||
export type User = DeepPartial<GQLUser> & { id: string };
|
||||
|
||||
export type GraphqlQueryUser = {
|
||||
id: string;
|
||||
email?: string;
|
||||
displayName?: string;
|
||||
workspaceMember?: GraphqlQueryWorkspaceMember | null;
|
||||
avatarUrl?: string;
|
||||
__typename?: string;
|
||||
};
|
||||
export type GraphqlQueryUser = User;
|
||||
|
||||
export type GraphqlMutationUser = {
|
||||
id: string;
|
||||
email?: string;
|
||||
displayName?: string;
|
||||
avatarUrl?: string;
|
||||
workspaceMemberId?: string;
|
||||
__typename?: string;
|
||||
};
|
||||
export type GraphqlMutationUser = User;
|
||||
|
||||
export const mapToUser = (user: GraphqlQueryUser): User => ({
|
||||
__typename: 'users',
|
||||
id: user.id,
|
||||
email: user.email,
|
||||
displayName: user.displayName,
|
||||
avatarUrl: user.avatarUrl,
|
||||
workspaceMember: user.workspaceMember
|
||||
? mapToWorkspaceMember(user.workspaceMember)
|
||||
: user.workspaceMember,
|
||||
});
|
||||
export const mapToUser = (user: GraphqlQueryUser): User => user;
|
||||
|
||||
export const mapToGqlUser = (user: User): GraphqlMutationUser => ({
|
||||
id: user.id,
|
||||
email: user.email,
|
||||
displayName: user.displayName,
|
||||
avatarUrl: user.avatarUrl,
|
||||
workspaceMemberId: user.workspaceMember?.id,
|
||||
__typename: 'users',
|
||||
});
|
||||
export const mapToGqlUser = (user: User): GraphqlMutationUser => user;
|
||||
|
||||
@ -1,39 +1,18 @@
|
||||
import {
|
||||
GraphqlQueryWorkspace,
|
||||
mapToWorkspace,
|
||||
Workspace,
|
||||
} from '../../workspaces/interfaces/workspace.interface';
|
||||
import { WorkspaceMember as GQLWorkspaceMember } from '../../../generated/graphql';
|
||||
import { DeepPartial } from '../../utils/utils';
|
||||
|
||||
export interface WorkspaceMember {
|
||||
id: string;
|
||||
workspace: Workspace;
|
||||
}
|
||||
|
||||
export type GraphqlQueryWorkspaceMember = {
|
||||
id: string;
|
||||
workspace: GraphqlQueryWorkspace;
|
||||
__typename?: string;
|
||||
export type WorkspaceMember = DeepPartial<GQLWorkspaceMember> & {
|
||||
id: GQLWorkspaceMember['id'];
|
||||
};
|
||||
|
||||
export type GraphqlMutationWorkspaceMember = {
|
||||
id: string;
|
||||
workspace_id: string;
|
||||
__typename?: string;
|
||||
};
|
||||
export type GraphqlQueryWorkspaceMember = WorkspaceMember;
|
||||
|
||||
export type GraphqlMutationWorkspaceMember = WorkspaceMember;
|
||||
|
||||
export const mapToWorkspaceMember = (
|
||||
workspaceMember: GraphqlQueryWorkspaceMember,
|
||||
): WorkspaceMember => ({
|
||||
id: workspaceMember.id,
|
||||
workspace: workspaceMember.workspace
|
||||
? mapToWorkspace(workspaceMember.workspace)
|
||||
: workspaceMember.workspace,
|
||||
});
|
||||
): WorkspaceMember => workspaceMember;
|
||||
|
||||
export const mapToGqlWorkspaceMember = (
|
||||
workspaceMember: WorkspaceMember,
|
||||
): GraphqlMutationWorkspaceMember => ({
|
||||
id: workspaceMember.id,
|
||||
workspace_id: workspaceMember.workspace?.id,
|
||||
__typename: 'workspace_members',
|
||||
});
|
||||
): GraphqlMutationWorkspaceMember => workspaceMember;
|
||||
|
||||
Reference in New Issue
Block a user