Skip to content

Commit 3a69f43

Browse files
committed
test: Model single field in where uniq input
1 parent 6226fcf commit 3a69f43

File tree

4 files changed

+81
-1
lines changed

4 files changed

+81
-1
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ Default: `false`
128128

129129
#### `requireSingleFieldsInWhereUniqueInput`
130130

131-
When a `Model`s `WhereUniqueInput` class has only a single field, mark that field as **required** (TypeScript) and **not nullable** (GraphQL). See [#58](https://github.com/unlight/prisma-nestjs-graphql/issues/58) for more details.
131+
When a `Model`s `WhereUniqueInput` class has only a single field, mark that field as **required** (TypeScript) and **not nullable** (GraphQL).
132+
See [#58](https://github.com/unlight/prisma-nestjs-graphql/issues/58) for more details.
132133
Type: `boolean`
133134
Default: `false`
134135

Taskfile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ compatibilty_check() {
3333

3434
sed -i 's/emitCompiled = true/emitCompiled = false/g' prisma/schema.prisma
3535
sed -i 's/emitSingle = true/emitSingle = false/g' prisma/schema.prisma
36+
37+
# requireSingleFieldsInWhereUniqueInput
38+
sed -i 's/requireSingleFieldsInWhereUniqueInput = false/requireSingleFieldsInWhereUniqueInput = true/g' prisma/schema.prisma
39+
rm -rf ./@generated && npm run prisma:g && npm run tscheck
40+
sed -i 's/requireSingleFieldsInWhereUniqueInput = true/requireSingleFieldsInWhereUniqueInput = false/g' prisma/schema.prisma
41+
3642
set +x
3743
}
3844

prisma/schema.prisma

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ generator nestgraphql {
1717
emitSingle = false
1818
emitCompiled = false
1919
purgeOutput = false
20+
requireSingleFieldsInWhereUniqueInput = false
2021
fields_Validator_from = "class-validator"
2122
fields_Validator_input = true
2223
fields_Scalars_from = "graphql-scalars"

src/test/generate.spec.ts

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2166,3 +2166,75 @@ describe('non list optional properties should be nullable', () => {
21662166
expect(p('articles')?.type).toEqual('Array<Article>');
21672167
});
21682168
});
2169+
2170+
describe('requireSingleFieldsInWhereUniqueInput', () => {
2171+
it('requireSingleFieldsInWhereUniqueInput several fields', async () => {
2172+
({ project, sourceFiles } = await testGenerate({
2173+
schema: `
2174+
model User {
2175+
id String @id
2176+
email String @unique
2177+
}
2178+
`,
2179+
options: [
2180+
`outputFilePattern = "{name}.{type}.ts"`,
2181+
`requireSingleFieldsInWhereUniqueInput = true`,
2182+
],
2183+
}));
2184+
setSourceFile('user-where-unique.input.ts');
2185+
2186+
expect(p('id')).toEqual(
2187+
expect.objectContaining({ hasQuestionToken: true, type: 'string' }),
2188+
);
2189+
expect(f('id')).toEqual(['() => String', '{nullable:true}']);
2190+
expect(p('email')).toEqual(
2191+
expect.objectContaining({ hasQuestionToken: true, type: 'string' }),
2192+
);
2193+
expect(f('email')).toEqual(['() => String', '{nullable:true}']);
2194+
});
2195+
2196+
it('requireSingleFieldsInWhereUniqueInput single fields', async () => {
2197+
({ project, sourceFiles } = await testGenerate({
2198+
schema: `
2199+
model User {
2200+
id String @id
2201+
}
2202+
`,
2203+
options: [
2204+
`outputFilePattern = "{name}.{type}.ts"`,
2205+
`requireSingleFieldsInWhereUniqueInput = true`,
2206+
],
2207+
}));
2208+
setSourceFile('user-where-unique.input.ts');
2209+
2210+
expect(p('id')).toEqual(
2211+
expect.objectContaining({ hasQuestionToken: false, type: 'string' }),
2212+
);
2213+
expect(f('id')).toEqual(['() => String', '{nullable:false}']);
2214+
});
2215+
2216+
it('requireSingleFieldsInWhereUniqueInput compound', async () => {
2217+
({ project, sourceFiles } = await testGenerate({
2218+
schema: `
2219+
model User {
2220+
name String
2221+
email String
2222+
2223+
@@unique([name,email])
2224+
}
2225+
`,
2226+
options: [
2227+
`outputFilePattern = "{name}.{type}.ts"`,
2228+
`requireSingleFieldsInWhereUniqueInput = true`,
2229+
],
2230+
}));
2231+
setSourceFile('user-where-unique.input.ts');
2232+
2233+
expect(p('name_email')?.hasQuestionToken).toEqual(false);
2234+
expect(p('name_email')?.type).toEqual('UserNameEmailCompoundUniqueInput');
2235+
expect(f('name_email')).toEqual([
2236+
'() => UserNameEmailCompoundUniqueInput',
2237+
'{nullable:false}',
2238+
]);
2239+
});
2240+
});

0 commit comments

Comments
 (0)