graphql-codegen-factories
graphql-codegen-factories copied to clipboard
Accept nested partials
Another DX improvement idea, what I have in the code now is similar to this:
createBlogListQueryQueryMock_node({
parsedHeadline: createBlogListQueryQueryMock_parsedHeadline({
childMarkdownRemark: createBlogListQueryQueryMock_parsedHeadline_childMarkdownRemark({
html: 'This is pizza',
})
})
})
What would be more convenient and much less verbose is if the factory function accepted a nested partial param, like
createBlogListQueryQueryMock_node({
parsedHeadline: {
childMarkdownRemark: {
html: 'This is pizza',
}
}
})
but currently it requires me to pass all the data necessary for the operation mock. I would need to add missing __typename
and all other fields that are selected even if the example/story/test doesn't care about them.
The factories are already kinda recursive, it shouldn't require drastic changes.
Tricky cases that I anticipate:
- arrays, could be ignore and keep them full-speced
- unions,
__typename
would need to be required
That makes a lot of sense and would also make our code simpler. To add to your observations, we also need to introduce a helper type DeepPartial
:
- export function createUserMock(props: Partial<User>): User {
+ export function createUserMock(props: DeepPartial<User>): User {
}
We can probably take the implementation from ts-essentials/ts-essentials or sindresorhus/type-fest. The simpler the better I guess.