Skip to content

Commit 4c19722

Browse files
committed
refactor: add CasualMockValueGenerator class
1 parent d40b9e6 commit 4c19722

File tree

2 files changed

+45
-11
lines changed

2 files changed

+45
-11
lines changed

src/index.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { pascalCase } from 'pascal-case';
55
import { upperCase } from 'upper-case';
66
import { sentenceCase } from 'sentence-case';
77
import a from 'indefinite';
8+
import { CasualMockValueGenerator } from './mockValueGenerator';
89

910
type NamingConvention = 'upper-case#upperCase' | 'pascal-case#pascalCase' | 'keep';
1011

@@ -107,19 +108,18 @@ const getNamedType = (opts: Options<NamedTypeNode>): string | number | boolean =
107108
if (!opts.dynamicValues) casual.seed(hashedString(opts.typeName + opts.fieldName));
108109
const name = opts.currentType.name.value;
109110
const casedName = createNameConverter(opts.typenamesConvention, opts.transformUnderscore)(name);
111+
const mockValueGenerator = new CasualMockValueGenerator({ dynamicValues: opts.dynamicValues });
110112
switch (name) {
111113
case 'String':
112-
return opts.dynamicValues ? `casual.word` : `'${casual.word}'`;
114+
return mockValueGenerator.word();
113115
case 'Float':
114-
return opts.dynamicValues
115-
? `Math.round(casual.double(0, 10) * 100) / 100`
116-
: Math.round(casual.double(0, 10) * 100) / 100;
116+
return mockValueGenerator.float();
117117
case 'ID':
118-
return opts.dynamicValues ? `casual.uuid` : `'${casual.uuid}'`;
118+
return mockValueGenerator.uuid();
119119
case 'Boolean':
120-
return opts.dynamicValues ? `casual.boolean` : casual.boolean;
120+
return mockValueGenerator.boolean();
121121
case 'Int':
122-
return opts.dynamicValues ? `casual.integer(0, 9999)` : casual.integer(0, 9999);
122+
return mockValueGenerator.integer();
123123
default: {
124124
const foundType = opts.types.find((enumType: TypeItem) => enumType.name === name);
125125
if (foundType) {
@@ -151,11 +151,9 @@ const getNamedType = (opts: Options<NamedTypeNode>): string | number | boolean =
151151
// mapping for this particular scalar
152152
if (!customScalar || !customScalar.generator) {
153153
if (foundType.name === 'Date') {
154-
return opts.dynamicValues
155-
? `new Date(casual.unix_time).toISOString()`
156-
: `'${new Date(casual.unix_time).toISOString()}'`;
154+
return mockValueGenerator.date();
157155
}
158-
return opts.dynamicValues ? `casual.word` : `'${casual.word}'`;
156+
return mockValueGenerator.word();
159157
}
160158

161159
// If there is a mapping to a `casual` type, then use it and make sure

src/mockValueGenerator.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import casual from 'casual';
2+
3+
interface MockValueGenerator {
4+
dynamicValues: boolean;
5+
word: () => string;
6+
uuid: () => string;
7+
boolean: () => boolean | string;
8+
integer: () => number | string;
9+
float: () => number | string;
10+
date: () => string;
11+
}
12+
13+
type MockValueGeneratorOptions = {
14+
dynamicValues: boolean;
15+
};
16+
17+
export class CasualMockValueGenerator implements MockValueGenerator {
18+
dynamicValues: boolean;
19+
20+
constructor(opts: MockValueGeneratorOptions) {
21+
this.dynamicValues = opts.dynamicValues;
22+
}
23+
24+
word = () => (this.dynamicValues ? `casual.word` : `'${casual.word}'`);
25+
uuid = () => (this.dynamicValues ? `casual.uuid` : `'${casual.uuid}'`);
26+
boolean = () => (this.dynamicValues ? `casual.boolean` : casual.boolean);
27+
integer = () => (this.dynamicValues ? `casual.integer(0, 9999)` : `${casual.integer(0, 9999)}`);
28+
float = () =>
29+
this.dynamicValues
30+
? `Math.round(casual.double(0, 10) * 100) / 100`
31+
: `${Math.round(casual.double(0, 10) * 100) / 100}`;
32+
date = () =>
33+
this.dynamicValues
34+
? `new Date(casual.unix_time).toISOString()`
35+
: `'${new Date(casual.unix_time).toISOString()}'`;
36+
}

0 commit comments

Comments
 (0)