mirror of
https://github.com/nowcommunity/nowdatabase.git
synced 2026-10-12 19:13:52 +03:00
add update tests and remove comment from MuseumTable
This commit is contained in:
@@ -33,9 +33,13 @@ describe('Creating new museum works', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
it('Contains correct data', () => {
|
it('Contains correct data', () => {
|
||||||
const { museum: museumId, institution } = createdMuseum!
|
const { museum: museumId, institution, used_morph, used_now, used_gene } = createdMuseum!
|
||||||
expect(institution).toEqual('Australian Museum') // 'Institution name is different'
|
|
||||||
expect(museumId).toBeDefined()
|
expect(museumId).toBeDefined()
|
||||||
|
expect(institution).toEqual('Australian Museum') // 'Institution name is different'
|
||||||
|
expect(used_morph).toEqual(true)
|
||||||
|
// fixRadioSelection converts null values into false
|
||||||
|
expect(used_now).toEqual(false)
|
||||||
|
expect(used_gene).toEqual(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Creation fails with empty museum code', async () => {
|
it('Creation fails with empty museum code', async () => {
|
||||||
|
|||||||
@@ -12,3 +12,16 @@ export const newMuseumBasis: Museum = {
|
|||||||
used_now: null,
|
used_now: null,
|
||||||
used_gene: null,
|
used_gene: null,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const editedMuseum: Museum = {
|
||||||
|
...newMuseumBasis,
|
||||||
|
institution: 'Australian Museum',
|
||||||
|
alt_int_name: '',
|
||||||
|
city: 'Canberra',
|
||||||
|
state_code: 'NSW',
|
||||||
|
state: 'New South Wales',
|
||||||
|
country: 'Australia',
|
||||||
|
used_morph: false,
|
||||||
|
used_now: true,
|
||||||
|
used_gene: null,
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,93 @@
|
|||||||
|
import { afterAll, beforeAll, beforeEach, describe, expect, it } from '@jest/globals'
|
||||||
|
import { Museum } from '../../../../frontend/src/shared/types'
|
||||||
|
import { pool } from '../../utils/db'
|
||||||
|
import { login, logout, noPermError, resetDatabase, resetDatabaseTimeout, send } from '../utils'
|
||||||
|
import { editedMuseum } from './data'
|
||||||
|
|
||||||
|
let updatedMuseum: Museum | null = null
|
||||||
|
|
||||||
|
describe('Updating museum 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, status: getReqStatus } = await send<{ museum: string }>('museum/', 'PUT', {
|
||||||
|
museum: editedMuseum,
|
||||||
|
})
|
||||||
|
const { museum: updatedId } = resultBody
|
||||||
|
|
||||||
|
expect(typeof updatedId).toEqual('string') // `Invalid result returned on write: ${createdId}`
|
||||||
|
expect(getReqStatus).toEqual(200)
|
||||||
|
|
||||||
|
const { body, status: getReqStat } = await send<Museum>(`museum/${updatedId}`, 'GET')
|
||||||
|
expect(getReqStat).toEqual(200)
|
||||||
|
updatedMuseum = body
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Contains correct data', () => {
|
||||||
|
const { museum, city, state, state_code, used_morph, used_now, used_gene } = updatedMuseum!
|
||||||
|
expect(museum).toEqual('AM')
|
||||||
|
expect(city).toEqual('Canberra')
|
||||||
|
expect(state).toEqual('New South Wales')
|
||||||
|
expect(state_code).toEqual('NSW')
|
||||||
|
expect(used_morph).toEqual(false)
|
||||||
|
expect(used_now).toEqual(true)
|
||||||
|
expect(used_gene).toEqual(false) // fixRadioSelection converts null values into false
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Updating succeeds with string values for used_fields', async () => {
|
||||||
|
const { body: resultBody, status: putReqStatus } = await send<{ museum: string }>('museum/', 'PUT', {
|
||||||
|
museum: { ...editedMuseum, used_morph: 'true', used_now: 'true', used_gene: 'true' },
|
||||||
|
})
|
||||||
|
const { museum: updatedId } = resultBody
|
||||||
|
|
||||||
|
expect(typeof updatedId).toEqual('string') // `Invalid result returned on write: ${createdId}`
|
||||||
|
expect(putReqStatus).toEqual(200)
|
||||||
|
|
||||||
|
const { body: getReqBody, status: getReqStat } = await send<Museum>(`museum/${updatedId}`, 'GET')
|
||||||
|
expect(getReqStat).toEqual(200)
|
||||||
|
|
||||||
|
const { used_morph, used_now, used_gene } = getReqBody
|
||||||
|
expect(used_morph).toEqual(true)
|
||||||
|
expect(used_now).toEqual(true)
|
||||||
|
expect(used_gene).toEqual(true)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Updating fails with empty institution', async () => {
|
||||||
|
const { body: resultBody, status: getReqStatus } = await send('museum/', 'PUT', {
|
||||||
|
museum: { ...editedMuseum, institution: null },
|
||||||
|
})
|
||||||
|
expect(getReqStatus).toEqual(403)
|
||||||
|
expect(resultBody.length).toEqual(1) //There should be 1 validation error
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Updating fails without permissions', async () => {
|
||||||
|
logout()
|
||||||
|
const { body: resultBodyNoPerm, status: resultStatusNoPerm } = await send('museum/', 'PUT', {
|
||||||
|
museum: { ...editedMuseum, institution: 'New Museum 2' },
|
||||||
|
})
|
||||||
|
expect(resultBodyNoPerm).toEqual(noPermError)
|
||||||
|
expect(resultStatusNoPerm).toEqual(403)
|
||||||
|
|
||||||
|
await login('testEr')
|
||||||
|
const { body: resultBodyEr, status: resultStatusEr } = await send('museum/', 'PUT', {
|
||||||
|
museum: { ...editedMuseum, institution: 'New Museum 2' },
|
||||||
|
})
|
||||||
|
expect(resultBodyEr).toEqual(noPermError)
|
||||||
|
expect(resultStatusEr).toEqual(403)
|
||||||
|
|
||||||
|
await login('testEu')
|
||||||
|
const { body: resultBodyEu, status: resultStatusEu } = await send('museum/', 'PUT', {
|
||||||
|
museum: { ...editedMuseum, institution: 'New Museum 2' },
|
||||||
|
})
|
||||||
|
expect(resultBodyEu).toEqual(noPermError)
|
||||||
|
expect(resultStatusEu).toEqual(403)
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -7,19 +7,6 @@ import { Museum } from '@/shared/types'
|
|||||||
export const MuseumTable = ({ selectorFn }: { selectorFn?: (museum: Museum) => void }) => {
|
export const MuseumTable = ({ selectorFn }: { selectorFn?: (museum: Museum) => void }) => {
|
||||||
const { data: museumQueryData, isFetching } = useGetAllMuseumsQuery()
|
const { data: museumQueryData, isFetching } = useGetAllMuseumsQuery()
|
||||||
|
|
||||||
/*
|
|
||||||
museum: string;
|
|
||||||
institution: string;
|
|
||||||
alt_int_name: string | null;
|
|
||||||
city: string | null;
|
|
||||||
state_code: string | null;
|
|
||||||
state: string | null;
|
|
||||||
country: string | null;
|
|
||||||
used_morph: boolean | null;
|
|
||||||
used_now: boolean | null;
|
|
||||||
used_gene: boolean | null;
|
|
||||||
*/
|
|
||||||
|
|
||||||
const columns = useMemo<MRT_ColumnDef<Museum>[]>(
|
const columns = useMemo<MRT_ColumnDef<Museum>[]>(
|
||||||
() => [
|
() => [
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user