CI - Unit & Integration #125
Open
Annotations
20 errors and 2 warnings
|
Run Integration Tests:
tests/utility/publicationsUtility.ts#L20
TypeError: Cannot convert undefined or null to object
❯ Module.randomEnumValue tests/utility/publicationsUtility.ts:20:49
❯ Module.generateCourseData tests/utility/courses.ts:41:21
❯ tests/integration/endpoints/course.test.ts:30:22
|
|
Run Integration Tests:
tests/utility/publicationsUtility.ts#L20
TypeError: Cannot convert undefined or null to object
❯ Module.randomEnumValue tests/utility/publicationsUtility.ts:20:49
❯ Module.generateCourseData tests/utility/courses.ts:41:21
❯ tests/integration/endpoints/course.test.ts:22:25
|
|
Run Integration Tests:
tests/utility/publicationsUtility.ts#L20
TypeError: Cannot convert undefined or null to object
❯ Module.randomEnumValue tests/utility/publicationsUtility.ts:20:49
❯ Module.generateCourseData tests/utility/courses.ts:41:21
❯ tests/integration/endpoints/course.test.ts:22:25
|
|
Run Integration Tests:
tests/utility/publicationsUtility.ts#L20
TypeError: Cannot convert undefined or null to object
❯ Module.randomEnumValue tests/utility/publicationsUtility.ts:20:49
❯ Module.generateCourseData tests/utility/courses.ts:41:21
❯ tests/integration/endpoints/course.test.ts:22:25
|
|
Run Integration Tests:
tests/utility/publicationsUtility.ts#L113
PrismaClientValidationError:
Invalid `prisma.material.create()` invocation:
{
data: {
copyright: "7CEDXxkRqm",
timeEstimate: 10,
theoryPractice: 0.9311622231319256,
encapsulatingType: "examQuestions",
publication: {
create: {
title: "kYTKRuJpAjUtvqgETllz",
description: "d5123Sp2RUzANDHj2w4oelghwQbaCkXN3hm7C4Gdoza3eux6FqSAkvisTK5LByXKcSUD1bCoi9ZEzADkXJQUDpUczTHQhMNOGrIG",
difficulty: "easy",
learningObjectives: [
"G21kURMY7FA2qv8vp7Ku"
],
prerequisites: [
"XujiUxjg8R7Rw4gE3wCo"
],
type: "Material",
publisher: {
connect: {
id: "cda7c342-bd89-4f8a-9f49-6e1fbedd48ac"
}
},
course: {
connect: {
id: undefined,
? courseName?: String,
? AND?: CourseWhereInput | CourseWhereInput[],
? OR?: CourseWhereInput[],
? NOT?: CourseWhereInput | CourseWhereInput[],
? learningObjectives?: StringNullableListFilter,
? prerequisites?: StringNullableListFilter,
? educationalLevel?: StringFilter | String,
? copyright?: StringFilter | String,
? publications?: PublicationListRelationFilter,
? maintainers?: UserListRelationFilter,
? coverPic?: FileNullableRelationFilter | FileWhereInput | Null
}
},
isDraft: false
}
}
},
include: {
publication: true
}
}
Argument `connect` of type CourseWhereUniqueInput needs at least one of `id` or `courseName` arguments. Available options are marked with ?.
❯ wn node_modules/@prisma/client/runtime/library.js:29:1363
❯ $n.handleRequestError node_modules/@prisma/client/runtime/library.js:121:6958
❯ $n.handleAndLogRequestError node_modules/@prisma/client/runtime/library.js:121:6623
❯ $n.request node_modules/@prisma/client/runtime/library.js:121:6307
❯ l node_modules/@prisma/client/runtime/library.js:130:9633
❯ Module.createUniqueMaterial tests/utility/publicationsUtility.ts:113:22
❯ tests/integration/endpoints/circuit.test.ts:166:21
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { clientVersion: '5.22.0' }
|
|
Run Integration Tests:
tests/utility/publicationsUtility.ts#L113
PrismaClientValidationError:
Invalid `prisma.material.create()` invocation:
{
data: {
copyright: "jb14iUFqFG",
timeEstimate: 8,
theoryPractice: 0.7047340683198371,
encapsulatingType: "assignment",
publication: {
create: {
title: "gegHJIq0uCm9txFhYjoN",
description: "afcrasjvFIdjp9fq6Xj2kDf4L8soc28lhUo3wPyp0tXuQ9p06K05zbMy97h9Haj5ASUsosi3nhtODeEPElbraWDqFHGD4wYG7evQ",
difficulty: "easy",
learningObjectives: [
"AVqVuvtETBo4wtHe5JXg"
],
prerequisites: [
"DR359LtnBKwiZV8lgT5K"
],
type: "Material",
publisher: {
connect: {
id: "d6059bee-194a-4c84-b9a4-64383a5d0fb2"
}
},
course: {
connect: {
id: undefined,
? courseName?: String,
? AND?: CourseWhereInput | CourseWhereInput[],
? OR?: CourseWhereInput[],
? NOT?: CourseWhereInput | CourseWhereInput[],
? learningObjectives?: StringNullableListFilter,
? prerequisites?: StringNullableListFilter,
? educationalLevel?: StringFilter | String,
? copyright?: StringFilter | String,
? publications?: PublicationListRelationFilter,
? maintainers?: UserListRelationFilter,
? coverPic?: FileNullableRelationFilter | FileWhereInput | Null
}
},
isDraft: false
}
}
},
include: {
publication: true
}
}
Argument `connect` of type CourseWhereUniqueInput needs at least one of `id` or `courseName` arguments. Available options are marked with ?.
❯ wn node_modules/@prisma/client/runtime/library.js:29:1363
❯ $n.handleRequestError node_modules/@prisma/client/runtime/library.js:121:6958
❯ $n.handleAndLogRequestError node_modules/@prisma/client/runtime/library.js:121:6623
❯ $n.request node_modules/@prisma/client/runtime/library.js:121:6307
❯ l node_modules/@prisma/client/runtime/library.js:130:9633
❯ Module.createUniqueMaterial tests/utility/publicationsUtility.ts:113:22
❯ tests/integration/endpoints/circuit.test.ts:166:21
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { clientVersion: '5.22.0' }
|
|
Run Integration Tests:
tests/utility/publicationsUtility.ts#L113
PrismaClientValidationError:
Invalid `prisma.material.create()` invocation:
{
data: {
copyright: "GYTapakwaH",
timeEstimate: 2,
theoryPractice: 0.3723194913439192,
encapsulatingType: "lectureNotes",
publication: {
create: {
title: "9fQcZ8Ye806tvBcClleg",
description: "AqC5IsUSpCCIa04RxE4h1gUTV6CfsuKMXGqrY81zfVJFDzH6bYwKUTyMxgtvcReyC9rjEfzjJnKEWDs5XkbZw3x6nw9pm9DZ5QcO",
difficulty: "medium",
learningObjectives: [
"G2LDfhE3Dzt56mqI1vrl"
],
prerequisites: [
"AktJtRXetvAm9Ohr7KWE"
],
type: "Material",
publisher: {
connect: {
id: "2e247379-adcc-4047-9318-5d1b4f9fbc44"
}
},
course: {
connect: {
id: undefined,
? courseName?: String,
? AND?: CourseWhereInput | CourseWhereInput[],
? OR?: CourseWhereInput[],
? NOT?: CourseWhereInput | CourseWhereInput[],
? learningObjectives?: StringNullableListFilter,
? prerequisites?: StringNullableListFilter,
? educationalLevel?: StringFilter | String,
? copyright?: StringFilter | String,
? publications?: PublicationListRelationFilter,
? maintainers?: UserListRelationFilter,
? coverPic?: FileNullableRelationFilter | FileWhereInput | Null
}
},
isDraft: false
}
}
},
include: {
publication: true
}
}
Argument `connect` of type CourseWhereUniqueInput needs at least one of `id` or `courseName` arguments. Available options are marked with ?.
❯ wn node_modules/@prisma/client/runtime/library.js:29:1363
❯ $n.handleRequestError node_modules/@prisma/client/runtime/library.js:121:6958
❯ $n.handleAndLogRequestError node_modules/@prisma/client/runtime/library.js:121:6623
❯ $n.request node_modules/@prisma/client/runtime/library.js:121:6307
❯ l node_modules/@prisma/client/runtime/library.js:130:9633
❯ Module.createUniqueMaterial tests/utility/publicationsUtility.ts:113:22
❯ tests/integration/endpoints/circuit.test.ts:166:21
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { clientVersion: '5.22.0' }
|
|
Run Integration Tests:
tests/integration/endpoints/circuit.test.ts#L80
AssertionError: expected 200 to be 500 // Object.is equality
- Expected
+ Received
- 500
+ 200
❯ tests/integration/endpoints/circuit.test.ts:80:28
|
|
Run Integration Tests:
tests/integration/endpoints/circuit.test.ts#L80
AssertionError: expected 200 to be 500 // Object.is equality
- Expected
+ Received
- 500
+ 200
❯ tests/integration/endpoints/circuit.test.ts:80:28
|
|
Run Integration Tests:
tests/integration/endpoints/circuit.test.ts#L80
AssertionError: expected 200 to be 500 // Object.is equality
- Expected
+ Received
- 500
+ 200
❯ tests/integration/endpoints/circuit.test.ts:80:28
|
|
Run Unit Tests:
tests/unit/file.test.ts#L135
AssertionError: expected "spy" to be called with arguments: [ { data: { …(4) } } ]
Received:
1st spy call:
[
{
"data": {
"path": "coverPicPath",
- "publicationId": 1,
+ "publicationId": undefined,
"title": "cover.jpg",
"type": "image/jpeg",
},
},
]
Number of calls: 1
❯ tests/unit/file.test.ts:135:30
|
|
Run Unit Tests:
tests/unit/file.test.ts#L105
AssertionError: expected Promise{…} to deeply equal { fileId: 'coverPicPath', …(1) }
- Expected
+ Received
- {
- "data": "Y292ZXJQaWNEYXRh",
- "fileId": "coverPicPath",
- }
+ Promise {}
❯ tests/unit/file.test.ts:105:18
|
|
Run Unit Tests:
tests/unit/file.test.ts#L85
AssertionError: expected Promise{…} to deeply equal { fileId: undefined, …(1) }
- Expected
+ Received
- {
- "data": "ZGVmYXVsdENvdmVyUGljRGF0YQ==",
- "fileId": undefined,
- }
+ Promise {}
❯ tests/unit/file.test.ts:85:18
|
|
Run Unit Tests:
tests/unit/file.test.ts#L62
AssertionError: expected Promise{…} to deeply equal { fileId: 'profilePicPath', …(1) }
- Expected
+ Received
- {
- "data": "cHJvZmlsZVBpY0RhdGE=",
- "fileId": "profilePicPath",
- }
+ Promise {}
❯ tests/unit/file.test.ts:62:18
|
|
Run Unit Tests:
tests/unit/file.test.ts#L42
AssertionError: expected Promise{…} to deeply equal { fileId: undefined, …(1) }
- Expected
+ Received
- {
- "data": "ZGVmYXVsdFByb2ZpbGVQaWNEYXRh",
- "fileId": undefined,
- }
+ Promise {}
❯ tests/unit/file.test.ts:42:18
|
|
Run Unit Tests:
tests/unit/db.test.ts#L271
AssertionError: expected "spy" to be called with arguments: [ { where: { AND: [] }, …(1) } ]
Received:
1st spy call:
@@ -3,20 +3,26 @@
"include": {
"circuit": true,
"coverPic": true,
"materials": true,
"publisher": {
- "include": {
+ "select": {
+ "firstName": true,
+ "lastName": true,
"profilePic": true,
+ "username": true,
},
},
"tags": true,
"usedInCourse": {
"select": {
"course": true,
},
},
+ },
+ "orderBy": {
+ "createdAt": "desc",
},
"where": {
"AND": [],
},
},
Number of calls: 1
❯ tests/unit/db.test.ts:271:39
|
|
Run Unit Tests:
tests/unit/db.test.ts#L237
AssertionError: expected "spy" to be called with arguments: [ { where: { AND: [] }, …(1) } ]
Received:
1st spy call:
@@ -3,20 +3,26 @@
"include": {
"circuit": true,
"coverPic": true,
"materials": true,
"publisher": {
- "include": {
+ "select": {
+ "firstName": true,
+ "lastName": true,
"profilePic": true,
+ "username": true,
},
},
"tags": true,
"usedInCourse": {
"select": {
"course": true,
},
},
+ },
+ "orderBy": {
+ "createdAt": "desc",
},
"where": {
"AND": [],
},
},
Number of calls: 1
❯ tests/unit/db.test.ts:237:39
|
|
Run Unit Tests:
tests/unit/db.test.ts#L184
AssertionError: expected "spy" to be called with arguments: [ { …(2) } ]
Received:
1st spy call:
@@ -3,20 +3,26 @@
"include": {
"circuit": true,
"coverPic": true,
"materials": true,
"publisher": {
- "include": {
+ "select": {
+ "firstName": true,
+ "lastName": true,
"profilePic": true,
+ "username": true,
},
},
"tags": true,
"usedInCourse": {
"select": {
"course": true,
},
},
+ },
+ "orderBy": {
+ "createdAt": "desc",
},
"where": {
"AND": [
{
"publisherId": {
Number of calls: 1
❯ tests/unit/db.test.ts:184:39
|
|
Run Unit Tests:
tests/unit/db.test.ts#L99
AssertionError: expected "spy" to be called with arguments: [ { where: { id: 999 }, …(1) } ]
Received:
1st spy call:
@@ -45,19 +45,35 @@
"profilePic": true,
},
},
},
},
+ "course": {
+ "select": {
+ "courseName": true,
+ "educationalLevel": true,
+ "id": true,
+ "learningObjectives": true,
+ "prerequisites": true,
+ },
+ },
"coverPic": true,
"maintainers": {
"include": {
"profilePic": true,
},
},
"materials": {
"include": {
- "files": true,
+ "fileURLs": true,
+ "files": {
+ "select": {
+ "path": true,
+ "title": true,
+ "type": true,
+ },
+ },
"publication": true,
},
},
"publisher": {
"include": {
Number of calls: 1
❯ tests/unit/db.test.ts:99:41
|
|
Run Unit Tests:
tests/unit/db.test.ts#L21
AssertionError: expected "spy" to be called with arguments: [ { where: { id: 1 }, …(1) } ]
Received:
1st spy call:
@@ -45,19 +45,35 @@
"profilePic": true,
},
},
},
},
+ "course": {
+ "select": {
+ "courseName": true,
+ "educationalLevel": true,
+ "id": true,
+ "learningObjectives": true,
+ "prerequisites": true,
+ },
+ },
"coverPic": true,
"maintainers": {
"include": {
"profilePic": true,
},
},
"materials": {
"include": {
- "files": true,
+ "fileURLs": true,
+ "files": {
+ "select": {
+ "path": true,
+ "title": true,
+ "type": true,
+ },
+ },
"publication": true,
},
},
"publisher": {
"include": {
Number of calls: 1
❯ tests/unit/db.test.ts:21:41
|
|
Complete job
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
Restore Docker Image cache
Input 'save-always' has been deprecated with message: save-always does not work as intended and will be removed in a future release.
A separate `actions/cache/restore` step should be used instead.
See https://github.com/actions/cache/tree/main/save#always-save-cache for more details.
|
background
wait
wait-all
cancel
Loading