mirror of
https://github.com/nowcommunity/nowdatabase.git
synced 2026-10-12 19:13:52 +03:00
Remove duplicate test and rename remaining permissions test
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
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<SpeciesDetailsType>(`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<LocalityDetailsType>(`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<LogRow>[] = [
|
||||
{
|
||||
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)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user