Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -253,3 +253,5 @@ schema.graphql

# git hooks
/.husky

api/.claude/
12 changes: 0 additions & 12 deletions api/jest.config.js

This file was deleted.

15,649 changes: 7,868 additions & 7,781 deletions api/package-lock.json

Large diffs are not rendered by default.

17 changes: 8 additions & 9 deletions api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@
"start:debug": "dotenv -e .env/.env.local nest start -- --debug --watch",
"lint": "biome lint --write",
"format": "biome format --write",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:dev": "jest --runInBand",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "jest --config ./test/jest-e2e.json",
"test": "vitest run",
"test:watch": "vitest",
"test:cov": "vitest run --coverage",
"test:dev": "vitest run",
"test:debug": "vitest --inspect-brk --run",
"test:e2e": "vitest run --config ./vitest.config.e2e.ts",
"i18n:extract": "ts-node --transpile-only --require dotenv/config scripts/extract-and-replace-translations.ts dotenv_config_path=.env/.env.local && npm run format:fix",
"generate-hetarchief-database-types": "dotenv -e ./.env/.env.local graphql-codegen -- --config codegen-hetarchief.ts",
"generate-avo-database-types": "dotenv -e ./.env/.env.local graphql-codegen -- --config codegen-avo.ts",
Expand Down Expand Up @@ -90,7 +90,6 @@
"@swc/cli": "^0.6.0",
"@swc/core": "^1.11.13",
"@types/express": "^4.17.13",
"@types/jest": "28.1.8",
"@types/joi": "^17.2.3",
"@types/lodash": "^4.14.191",
"@types/node": "^20.4.0",
Expand All @@ -105,12 +104,12 @@
"eslint-import-resolver-typescript": "3.6.1",
"eslint-plugin-import": "2.29.1",
"eslint-plugin-prettier": "5.1.3",
"jest": "^28.1.3",
"prettier": "^3.2.5",
"source-map-support": "^0.5.20",
"supertest": "^6.3.0",
"swagger-ui-express": "^4.5.0",
"ts-jest": "^28.0.8",
"vitest": "^3.0.0",
"@vitest/coverage-v8": "^3.0.0",
"ts-loader": "^9.2.3",
"ts-node": "^10.0.0",
"tsconfig-paths": "^4.1.0",
Expand Down
7 changes: 4 additions & 3 deletions api/src/modules/assets/controllers/assets.controller.spec.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
import { Test, type TestingModule } from '@nestjs/testing';
import type { AvoFileUploadUploadAssetInfo } from '@viaa/avo2-types';
import { vi, type MockInstance } from 'vitest';
import { getMockUserAvo } from '../../../mock-user';
import { mockTranslationsService } from '../../shared/helpers/mockTranslationsService';
import { Locale, TranslationsService } from '../../translations';
import { SessionUserEntity } from '../../users/classes/session-user';
import { AssetsService } from '../services/assets.service';
import { AssetsController } from './assets.controller';

const mockAssetsService: Partial<Record<keyof AssetsService, jest.SpyInstance>> = {
uploadAndTrack: jest.fn(),
delete: jest.fn(),
const mockAssetsService: Partial<Record<keyof AssetsService, MockInstance>> = {
uploadAndTrack: vi.fn(),
delete: vi.fn(),
};

const mockUploadUrl = 'http//my-s3-bucket.com/my-asset.png';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Test, type TestingModule } from '@nestjs/testing';
import { AvoSearchOrderDirection } from '@viaa/avo2-types';
import { vi, type MockInstance } from 'vitest';
import { Lookup_App_Content_Type_Enum } from '../../shared/generated/graphql-db-types-hetarchief';
import { TestingLogger } from '../../shared/logging/test-logger';
import { UpdateContentPageLabelDto } from '../dto/content-page-label.dto';
Expand All @@ -13,15 +14,15 @@ import { ContentPageLabelsService } from '../services/content-page-labels.servic
import { ContentPageLabelsController } from './content-page-labels.controller';

const mockContentPageLabelsService: Partial<
Record<keyof ContentPageLabelsService, jest.SpyInstance>
Record<keyof ContentPageLabelsService, MockInstance>
> = {
fetchContentPageLabels: jest.fn(),
fetchContentPageLabelById: jest.fn(),
insertContentPageLabels: jest.fn(),
updateContentPageLabel: jest.fn(),
deleteContentPageLabel: jest.fn(),
getContentPageLabelsByTypeAndLabels: jest.fn(),
getContentPageLabelsByTypeAndIds: jest.fn(),
fetchContentPageLabels: vi.fn(),
fetchContentPageLabelById: vi.fn(),
insertContentPageLabels: vi.fn(),
updateContentPageLabel: vi.fn(),
deleteContentPageLabel: vi.fn(),
getContentPageLabelsByTypeAndLabels: vi.fn(),
getContentPageLabelsByTypeAndIds: vi.fn(),
};

describe('ContentPageLabelsController', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Test, type TestingModule } from '@nestjs/testing';
import { AvoCoreDatabaseType, AvoSearchOrderDirection } from '@viaa/avo2-types';
import { vi, type MockInstance } from 'vitest';

import { DataService } from '../../data';
import {
Expand All @@ -23,8 +24,8 @@ import {

import { ContentPageLabelsService } from './content-page-labels.service';

const mockDataService: Partial<Record<keyof DataService, jest.SpyInstance>> = {
execute: jest.fn(),
const mockDataService: Partial<Record<keyof DataService, MockInstance>> = {
execute: vi.fn(),
};

const getDefaultContentPageLabelsResponse = (): {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Test, type TestingModule } from '@nestjs/testing';
import { AvoAuthIdpType, type AvoUserHetArchiefUser, PermissionName } from '@viaa/avo2-types';
import { vi, type MockInstance } from 'vitest';

import { PlayerTicketService } from '../../player-ticket';
import { SessionHelper } from '../../shared/auth/session-helper';
Expand Down Expand Up @@ -31,25 +32,25 @@ export const mockUser: AvoUserHetArchiefUser = {
language: 'nl',
};

const mockContentPagesService: Partial<Record<keyof ContentPagesService, jest.SpyInstance>> = {
adaptContentPage: jest.fn(),
adaptContentBlock: jest.fn(),
getContentPagesForPageOverviewBlock: jest.fn(),
getContentPageByLanguageAndPath: jest.fn(),
fetchCollectionOrItem: jest.fn(),
fetchItemByExternalId: jest.fn(),
updatePublishDates: jest.fn(),
getContentPagesByIds: jest.fn(),
const mockContentPagesService: Partial<Record<keyof ContentPagesService, MockInstance>> = {
adaptContentPage: vi.fn(),
adaptContentBlock: vi.fn(),
getContentPagesForPageOverviewBlock: vi.fn(),
getContentPageByLanguageAndPath: vi.fn(),
fetchCollectionOrItem: vi.fn(),
fetchItemByExternalId: vi.fn(),
updatePublishDates: vi.fn(),
getContentPagesByIds: vi.fn(),
};

const mockPlayerTicketService: Partial<Record<keyof PlayerTicketService, jest.SpyInstance>> = {
getPlayableUrl: jest.fn(),
getEmbedUrl: jest.fn(),
const mockPlayerTicketService: Partial<Record<keyof PlayerTicketService, MockInstance>> = {
getPlayableUrl: vi.fn(),
getEmbedUrl: vi.fn(),
};

describe('ContentPagesController', () => {
let contentPagesController: ContentPagesController;
let sessionHelperSpy: jest.SpyInstance;
let sessionHelperSpy: MockInstance;

beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
Expand All @@ -69,7 +70,7 @@ describe('ContentPagesController', () => {

contentPagesController = module.get<ContentPagesController>(ContentPagesController);

sessionHelperSpy = jest.spyOn(SessionHelper, 'getUserInfo').mockReturnValue(mockUser);
sessionHelperSpy = vi.spyOn(SessionHelper, 'getUserInfo').mockReturnValue(mockUser);
});

afterAll(async () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
import { Test, type TestingModule } from '@nestjs/testing';
import { vi, type MockInstance } from 'vitest';

import { DataService } from '../../data';
import { AdminOrganisationsService } from '../../organisations';
import { PlayerTicketService } from '../../player-ticket';

import { ContentPagesService } from './content-pages.service';

const mockDataService: Partial<Record<keyof DataService, jest.SpyInstance>> = {
execute: jest.fn(),
const mockDataService: Partial<Record<keyof DataService, MockInstance>> = {
execute: vi.fn(),
};

const mockPlayerTicketService: Partial<Record<keyof PlayerTicketService, jest.SpyInstance>> = {
getPlayableUrl: jest.fn(),
getEmbedUrl: jest.fn(),
const mockPlayerTicketService: Partial<Record<keyof PlayerTicketService, MockInstance>> = {
getPlayableUrl: vi.fn(),
getEmbedUrl: vi.fn(),
};

const mockOrganisationsService: Partial<Record<keyof AdminOrganisationsService, jest.SpyInstance>> =
const mockOrganisationsService: Partial<Record<keyof AdminOrganisationsService, MockInstance>> =
{
getOrganisation: jest.fn(),
adapt: jest.fn(),
getOrganisation: vi.fn(),
adapt: vi.fn(),
};

describe('ContentPagesService', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Test, type TestingModule } from '@nestjs/testing';
import { vi, type MockInstance } from 'vitest';

import { Lookup_Languages_Enum } from '../../shared/generated/graphql-db-types-hetarchief';
import { TestingLogger } from '../../shared/logging/test-logger';
Expand All @@ -16,13 +17,13 @@ import { MaintenanceAlertsService } from '../services/maintenance-alerts.service
import { MaintenanceAlertsController } from './maintenance-alerts.controller';

const mockMaintenanceAlertsService: Partial<
Record<keyof MaintenanceAlertsService, jest.SpyInstance>
Record<keyof MaintenanceAlertsService, MockInstance>
> = {
findAll: jest.fn(),
findById: jest.fn(),
createMaintenanceAlert: jest.fn(),
updateMaintenanceAlert: jest.fn(),
deleteMaintenanceAlert: jest.fn(),
findAll: vi.fn(),
findById: vi.fn(),
createMaintenanceAlert: vi.fn(),
updateMaintenanceAlert: vi.fn(),
deleteMaintenanceAlert: vi.fn(),
};

describe('MaintenanceAlertsController', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Test, type TestingModule } from '@nestjs/testing';
import { vi, type MockInstance, describe, it, expect, beforeEach, afterEach } from 'vitest';

import { DataService } from '../../data';
import { TestingLogger } from '../../shared/logging/test-logger';
Expand All @@ -20,8 +21,8 @@ import {
type UpdateMaintenanceAlertMutation,
} from 'src/modules/shared/generated/graphql-db-types-hetarchief';

const mockDataService: Partial<Record<keyof DataService, jest.SpyInstance>> = {
execute: jest.fn(),
const mockDataService: Partial<Record<keyof DataService, MockInstance>> = {
execute: vi.fn(),
};

const getDefaultMaintenanceAlertsResponse = (): {
Expand Down Expand Up @@ -97,7 +98,7 @@ describe('MaintenanceAlertsService', () => {
expect(adapted.type).toEqual(mockGqlMaintenanceAlert1.type);
expect(adapted.fromDate).toEqual(mockGqlMaintenanceAlert1.from_date);
expect(adapted.untilDate).toEqual(mockGqlMaintenanceAlert1.until_date);
expect(adapted.userGroups).toEqual(undefined);
expect(adapted.userGroups).toEqual(mockGqlMaintenanceAlert1.user_groups);
});

it('returns null when the maintenance alert does not exist', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Test, type TestingModule } from '@nestjs/testing';
import { vi, type MockInstance, describe, it, expect, beforeEach } from 'vitest';

import { type DeleteResponse } from '../../shared/types/types';
import { Locale } from '../../translations';
Expand All @@ -17,18 +18,24 @@ const mockNavigationsResponse = {
],
};

const mockNavigationsService: Partial<Record<keyof AdminNavigationsService, jest.SpyInstance>> = {
findNavigationBars: jest.fn(),
findElementById: jest.fn(),
insertElement: jest.fn(),
updateElement: jest.fn(),
deleteElement: jest.fn(),
const mockNavigationsService: Partial<Record<keyof AdminNavigationsService, MockInstance>> = {
findNavigationBars: vi.fn(),
findElementById: vi.fn(),
insertElement: vi.fn(),
updateElement: vi.fn(),
deleteElement: vi.fn(),
};

describe('NavigationsController', () => {
let navigationsController: AdminNavigationsController;

beforeEach(async () => {
mockNavigationsService.findNavigationBars.mockReset();
mockNavigationsService.findElementById.mockReset();
mockNavigationsService.insertElement.mockReset();
mockNavigationsService.updateElement.mockReset();
mockNavigationsService.deleteElement.mockReset();

const module: TestingModule = await Test.createTestingModule({
controllers: [AdminNavigationsController],
imports: [],
Expand Down
Loading