From 77418e127cfc1afd252d45d767733c65e9eedddb Mon Sep 17 00:00:00 2001 From: Kari Lintulaakso Date: Thu, 15 Jan 2026 15:02:59 +0200 Subject: [PATCH] Format backend Jest config --- backend/jest-config.js | 19 ++---- backend/package.json | 2 +- src/api-tests/species/create.test.ts | 94 ---------------------------- 3 files changed, 5 insertions(+), 110 deletions(-) delete mode 100644 src/api-tests/species/create.test.ts diff --git a/backend/jest-config.js b/backend/jest-config.js index d9aea66e..8aff0365 100644 --- a/backend/jest-config.js +++ b/backend/jest-config.js @@ -1,17 +1,6 @@ module.exports = { - testPathIgnorePatterns: [ - "/build", - "/node_modules", - ], - collectCoverageFrom: [ - "./src/**", - "!./src/api-tests/**" - ], - roots: [ - "./src" - ], - coverageReporters: [ - "text", - "lcov" - ] + testPathIgnorePatterns: ["/build", "/node_modules", "/../src/api-tests"], + collectCoverageFrom: ["./src/**", "!./src/api-tests/**"], + roots: ["./src"], + coverageReporters: ["text", "lcov"], } diff --git a/backend/package.json b/backend/package.json index f62f08b6..f86320f9 100644 --- a/backend/package.json +++ b/backend/package.json @@ -6,7 +6,7 @@ "scripts": { "dev": "npx tsx watch --clear-screen=false src/index.ts", "build": "tsc", - "test:api": "jest src/api-tests --runInBand --coverage --config jest-config.js --detectOpenHandles --forceExit --silent", + "test:api": "jest ./src/api-tests --runInBand --coverage --config jest-config.js --detectOpenHandles --forceExit --silent", "test:unit": "jest src/unit-tests --coverage --config jest-config.js --detectOpenHandles --forceExit --silent", "test:api:local": "DOTENV_CONFIG_PATH=../.test.env npm run test:api -- --setupFiles dotenv/config", "start": "node build/index.js", diff --git a/src/api-tests/species/create.test.ts b/src/api-tests/species/create.test.ts deleted file mode 100644 index d571d5e0..00000000 --- a/src/api-tests/species/create.test.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { beforeEach, beforeAll, afterAll, describe, it, expect } from '@jest/globals' -import { LocalityDetailsType, SpeciesDetailsType } from '../../../../frontend/src/shared/types' -import { LogRow } from '../../services/write/writeOperations/types' -import { newSpeciesBasis, newSpeciesWithoutRequiredFields } from './data' -import { login, logout, resetDatabase, send, testLogRows, resetDatabaseTimeout, noPermError } from '../utils' -import { pool } from '../../utils/db' - -let createdSpecies: SpeciesDetailsType | null = null - -describe('Creating new species works', () => { - beforeAll(async () => { - await resetDatabase() - }, resetDatabaseTimeout) - beforeEach(async () => { - await login() - }) - afterAll(async () => { - await pool.end() - }) - - it('Request succeeds and returns valid number id', async () => { - const { body: resultBody } = await send<{ species_id: number }>('species', 'PUT', { - species: { ...newSpeciesBasis, comment: 'species test' }, - }) - const { species_id: createdId } = resultBody - - expect(typeof createdId).toEqual('number') // `Invalid result returned on write: ${createdId}` - - const { body } = await send(`species/${createdId}`, 'GET') - createdSpecies = body - }) - - it('Contains correct data', () => { - const { species_name, now_ls } = createdSpecies! - expect(species_name).toEqual(newSpeciesBasis.species_name) // 'Name is different' - const locality = now_ls.find(ls => ls.now_loc.lid === 24750) - expect(!!locality).toEqual(true) // 'Locality in locality-species not found' - }) - - it('Locality-species change was updated also to locality', async () => { - const localityFound = createdSpecies!.now_ls.find(ls => ls.now_loc.loc_name.startsWith('Romany')) - if (!localityFound) throw new Error('Locality was not found in now_ls') - const speciesResult = await send(`locality/24750`, 'GET') - const update = speciesResult.body.now_lau.find(lau => lau.lid === 24750 && lau.lau_comment === 'species test') - if (!update) throw new Error('Update not found') - const logRows = update.updates - const expectedLogRows: Partial[] = [ - { - oldValue: null, - value: '24750', - type: 'add', - column: 'lid', - table: 'now_ls', - }, - ] - testLogRows(logRows, expectedLogRows, 2) - }) - - it('Species without required fields fails', async () => { - const res = await send('species', 'PUT', { - species: { ...newSpeciesWithoutRequiredFields, comment: 'species test' }, - }) - expect(res.status).toEqual(403) - }) - - it('Creation fails without reference', async () => { - const resultNoRef = await send('species', 'PUT', { - species: { ...newSpeciesBasis, references: [] }, - }) - expect(resultNoRef.status).toEqual(403) // can't create one without a reference - - const resultWithRef = await send('species', 'PUT', { - species: { ...newSpeciesBasis }, - }) - expect(resultWithRef.status).toEqual(200) - }) - - it('Creation fails without permissions for non-authenticated and non-privileged users', async () => { - logout() - const result1 = await send('species', 'PUT', { - species: { ...newSpeciesBasis, comment: 'species test' }, - }) - expect(result1.body).toEqual(noPermError) - expect(result1.status).toEqual(403) - - logout() - await login('testEr', 'test') - const result2 = await send('species', 'PUT', { - species: { ...newSpeciesBasis, comment: 'species test' }, - }) - expect(result2.body).toEqual(noPermError) - expect(result2.status).toEqual(403) - }) -}) \ No newline at end of file