@kidemy/lib 1.0.9 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -56,6 +56,9 @@ export declare const GetAssignmentsQueryDtoSchema: z.ZodObject<{
56
56
  createdAtTo: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<Date | undefined, string | undefined>>;
57
57
  submittedAtFrom: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<Date | undefined, string | undefined>>;
58
58
  submittedAtTo: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<Date | undefined, string | undefined>>;
59
+ status: z.ZodOptional<z.ZodEnum<{
60
+ [x: string]: string;
61
+ }>>;
59
62
  }, z.core.$strip>;
60
63
  export type GetAssignmentsQueryDto = z.infer<typeof GetAssignmentsQueryDtoSchema>;
61
64
  export declare const PaginatedAssignmentsDtoSchema: z.ZodObject<{
@@ -76,6 +76,7 @@ export const GetAssignmentsQueryDtoSchema = z.object({
76
76
  .string()
77
77
  .optional()
78
78
  .transform((val) => (val ? new Date(val) : undefined)),
79
+ status: createZodEnum(ActivationStatus).optional(),
79
80
  });
80
81
  export const PaginatedAssignmentsDtoSchema = z.object({
81
82
  assignments: z.array(AssignmentDtoSchema),
@@ -1 +1 @@
1
- {"version":3,"file":"assignment.dto.js","sourceRoot":"","sources":["../../../src/model/assignment.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assignment.dto.js","sourceRoot":"","sources":["../../../src/model/assignment.dto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,256 @@
1
+ import { GetAssignmentsQueryDtoSchema } from '../model/assignment.dto';
2
+ describe('GetAssignmentsQueryDtoSchema', () => {
3
+ it('should validate an empty query object with defaults', () => {
4
+ const emptyQuery = {};
5
+ const result = GetAssignmentsQueryDtoSchema.safeParse(emptyQuery);
6
+ expect(result.success).toBe(true);
7
+ if (result.success) {
8
+ expect(result.data.page).toBe(1);
9
+ expect(result.data.limit).toBe(10);
10
+ expect(result.data.sortBy).toBe('createdAt');
11
+ expect(result.data.sortOrder).toBe('desc');
12
+ }
13
+ });
14
+ it('should validate query with all optional fields', () => {
15
+ const fullQuery = {
16
+ page: '2',
17
+ limit: '20',
18
+ sortBy: 'updatedAt',
19
+ sortOrder: 'asc',
20
+ assigneeId: '123e4567-e89b-12d3-a456-426614174000',
21
+ createdByUserId: '123e4567-e89b-12d3-a456-426614174001',
22
+ title: 'Test Assignment',
23
+ hasAnswers: 'true',
24
+ createdAtFrom: '2024-01-01T00:00:00Z',
25
+ createdAtTo: '2024-12-31T23:59:59Z',
26
+ submittedAtFrom: '2024-01-01T00:00:00Z',
27
+ submittedAtTo: '2024-12-31T23:59:59Z',
28
+ status: 'active',
29
+ };
30
+ const result = GetAssignmentsQueryDtoSchema.safeParse(fullQuery);
31
+ expect(result.success).toBe(true);
32
+ if (result.success) {
33
+ expect(result.data.page).toBe(2);
34
+ expect(result.data.limit).toBe(20);
35
+ expect(result.data.sortBy).toBe('updatedAt');
36
+ expect(result.data.sortOrder).toBe('asc');
37
+ expect(result.data.assigneeId).toBe('123e4567-e89b-12d3-a456-426614174000');
38
+ expect(result.data.createdByUserId).toBe('123e4567-e89b-12d3-a456-426614174001');
39
+ expect(result.data.title).toBe('Test Assignment');
40
+ expect(result.data.hasAnswers).toBe(true);
41
+ expect(result.data.createdAtFrom).toBeInstanceOf(Date);
42
+ expect(result.data.createdAtTo).toBeInstanceOf(Date);
43
+ expect(result.data.submittedAtFrom).toBeInstanceOf(Date);
44
+ expect(result.data.submittedAtTo).toBeInstanceOf(Date);
45
+ expect(result.data.status).toBe('active');
46
+ }
47
+ });
48
+ it('should accept valid status values', () => {
49
+ const validStatuses = ['active', 'disabled'];
50
+ validStatuses.forEach((status) => {
51
+ const query = {
52
+ status,
53
+ };
54
+ const result = GetAssignmentsQueryDtoSchema.safeParse(query);
55
+ expect(result.success).toBe(true);
56
+ if (result.success) {
57
+ expect(result.data.status).toBe(status);
58
+ }
59
+ });
60
+ });
61
+ it('should reject invalid status value', () => {
62
+ const invalidQuery = {
63
+ status: 'invalid-status',
64
+ };
65
+ const result = GetAssignmentsQueryDtoSchema.safeParse(invalidQuery);
66
+ expect(result.success).toBe(false);
67
+ if (!result.success) {
68
+ expect(result.error.issues[0].path).toEqual(['status']);
69
+ expect(result.error.issues[0].code).toBe('invalid_value');
70
+ }
71
+ });
72
+ it('should work without status field', () => {
73
+ const queryWithoutStatus = {
74
+ page: '1',
75
+ limit: '10',
76
+ };
77
+ const result = GetAssignmentsQueryDtoSchema.safeParse(queryWithoutStatus);
78
+ expect(result.success).toBe(true);
79
+ if (result.success) {
80
+ expect(result.data.status).toBeUndefined();
81
+ expect(result.data.page).toBe(1);
82
+ expect(result.data.limit).toBe(10);
83
+ }
84
+ });
85
+ it('should transform page string to number', () => {
86
+ const query = {
87
+ page: '5',
88
+ };
89
+ const result = GetAssignmentsQueryDtoSchema.safeParse(query);
90
+ expect(result.success).toBe(true);
91
+ if (result.success) {
92
+ expect(result.data.page).toBe(5);
93
+ expect(typeof result.data.page).toBe('number');
94
+ }
95
+ });
96
+ it('should reject page less than or equal to 0', () => {
97
+ const invalidQueries = [
98
+ { page: '0' },
99
+ { page: '-1' },
100
+ ];
101
+ invalidQueries.forEach((query) => {
102
+ const result = GetAssignmentsQueryDtoSchema.safeParse(query);
103
+ expect(result.success).toBe(false);
104
+ if (!result.success) {
105
+ expect(result.error.issues[0].path).toEqual(['page']);
106
+ expect(result.error.issues[0].message).toBe('Page must be greater than 0');
107
+ }
108
+ });
109
+ });
110
+ it('should transform limit string to number', () => {
111
+ const query = {
112
+ limit: '25',
113
+ };
114
+ const result = GetAssignmentsQueryDtoSchema.safeParse(query);
115
+ expect(result.success).toBe(true);
116
+ if (result.success) {
117
+ expect(result.data.limit).toBe(25);
118
+ expect(typeof result.data.limit).toBe('number');
119
+ }
120
+ });
121
+ it('should reject limit less than 1 or greater than 100', () => {
122
+ const invalidQueries = [
123
+ { limit: '0' },
124
+ { limit: '101' },
125
+ { limit: '-1' },
126
+ ];
127
+ invalidQueries.forEach((query) => {
128
+ const result = GetAssignmentsQueryDtoSchema.safeParse(query);
129
+ expect(result.success).toBe(false);
130
+ if (!result.success) {
131
+ expect(result.error.issues[0].path).toEqual(['limit']);
132
+ expect(result.error.issues[0].message).toBe('Limit must be between 1 and 100');
133
+ }
134
+ });
135
+ });
136
+ it('should reject invalid UUID for assigneeId', () => {
137
+ const invalidQuery = {
138
+ assigneeId: 'invalid-uuid',
139
+ };
140
+ const result = GetAssignmentsQueryDtoSchema.safeParse(invalidQuery);
141
+ expect(result.success).toBe(false);
142
+ if (!result.success) {
143
+ expect(result.error.issues[0].path).toEqual(['assigneeId']);
144
+ expect(result.error.issues[0].message).toBe('Invalid assignee ID format');
145
+ }
146
+ });
147
+ it('should reject invalid UUID for createdByUserId', () => {
148
+ const invalidQuery = {
149
+ createdByUserId: 'invalid-uuid',
150
+ };
151
+ const result = GetAssignmentsQueryDtoSchema.safeParse(invalidQuery);
152
+ expect(result.success).toBe(false);
153
+ if (!result.success) {
154
+ expect(result.error.issues[0].path).toEqual(['createdByUserId']);
155
+ expect(result.error.issues[0].message).toBe('Invalid creator ID format');
156
+ }
157
+ });
158
+ it('should reject empty title', () => {
159
+ const invalidQuery = {
160
+ title: '',
161
+ };
162
+ const result = GetAssignmentsQueryDtoSchema.safeParse(invalidQuery);
163
+ expect(result.success).toBe(false);
164
+ if (!result.success) {
165
+ expect(result.error.issues[0].path).toEqual(['title']);
166
+ expect(result.error.issues[0].message).toBe('Title search term cannot be empty');
167
+ }
168
+ });
169
+ it('should reject title longer than 255 characters', () => {
170
+ const invalidQuery = {
171
+ title: 'A'.repeat(256),
172
+ };
173
+ const result = GetAssignmentsQueryDtoSchema.safeParse(invalidQuery);
174
+ expect(result.success).toBe(false);
175
+ if (!result.success) {
176
+ expect(result.error.issues[0].path).toEqual(['title']);
177
+ expect(result.error.issues[0].message).toBe('Title search term too long');
178
+ }
179
+ });
180
+ it('should transform hasAnswers string to boolean', () => {
181
+ const testCases = [
182
+ { hasAnswers: 'true', expected: true },
183
+ { hasAnswers: 'false', expected: false },
184
+ { hasAnswers: 'other', expected: undefined },
185
+ ];
186
+ testCases.forEach(({ hasAnswers, expected }) => {
187
+ const query = { hasAnswers };
188
+ const result = GetAssignmentsQueryDtoSchema.safeParse(query);
189
+ expect(result.success).toBe(true);
190
+ if (result.success) {
191
+ expect(result.data.hasAnswers).toBe(expected);
192
+ }
193
+ });
194
+ });
195
+ it('should transform date strings to Date objects', () => {
196
+ const query = {
197
+ createdAtFrom: '2024-01-01T00:00:00Z',
198
+ createdAtTo: '2024-12-31T23:59:59Z',
199
+ submittedAtFrom: '2024-01-01T00:00:00Z',
200
+ submittedAtTo: '2024-12-31T23:59:59Z',
201
+ };
202
+ const result = GetAssignmentsQueryDtoSchema.safeParse(query);
203
+ expect(result.success).toBe(true);
204
+ if (result.success) {
205
+ expect(result.data.createdAtFrom).toBeInstanceOf(Date);
206
+ expect(result.data.createdAtTo).toBeInstanceOf(Date);
207
+ expect(result.data.submittedAtFrom).toBeInstanceOf(Date);
208
+ expect(result.data.submittedAtTo).toBeInstanceOf(Date);
209
+ }
210
+ });
211
+ it('should accept valid sortBy values', () => {
212
+ const validSortByValues = ['createdAt', 'updatedAt', 'submittedAt'];
213
+ validSortByValues.forEach((sortBy) => {
214
+ const query = { sortBy };
215
+ const result = GetAssignmentsQueryDtoSchema.safeParse(query);
216
+ expect(result.success).toBe(true);
217
+ if (result.success) {
218
+ expect(result.data.sortBy).toBe(sortBy);
219
+ }
220
+ });
221
+ });
222
+ it('should reject invalid sortBy value', () => {
223
+ const invalidQuery = {
224
+ sortBy: 'invalid-sort',
225
+ };
226
+ const result = GetAssignmentsQueryDtoSchema.safeParse(invalidQuery);
227
+ expect(result.success).toBe(false);
228
+ if (!result.success) {
229
+ expect(result.error.issues[0].path).toEqual(['sortBy']);
230
+ expect(result.error.issues[0].code).toBe('invalid_value');
231
+ }
232
+ });
233
+ it('should accept valid sortOrder values', () => {
234
+ const validSortOrderValues = ['asc', 'desc'];
235
+ validSortOrderValues.forEach((sortOrder) => {
236
+ const query = { sortOrder };
237
+ const result = GetAssignmentsQueryDtoSchema.safeParse(query);
238
+ expect(result.success).toBe(true);
239
+ if (result.success) {
240
+ expect(result.data.sortOrder).toBe(sortOrder);
241
+ }
242
+ });
243
+ });
244
+ it('should reject invalid sortOrder value', () => {
245
+ const invalidQuery = {
246
+ sortOrder: 'invalid-order',
247
+ };
248
+ const result = GetAssignmentsQueryDtoSchema.safeParse(invalidQuery);
249
+ expect(result.success).toBe(false);
250
+ if (!result.success) {
251
+ expect(result.error.issues[0].path).toEqual(['sortOrder']);
252
+ expect(result.error.issues[0].code).toBe('invalid_value');
253
+ }
254
+ });
255
+ });
256
+ //# sourceMappingURL=get-assignments-query.dto.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-assignments-query.dto.spec.js","sourceRoot":"","sources":["../../../src/tests/get-assignments-query.dto.spec.ts"],"names":[],"mappings":"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"}