Ethermap collaborative map tool inspired by etherpad.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.4 KiB

// testing tools
import test from 'ava'
import request from 'supertest'
// express app
import App from '../express.js'
import db from '../db/DB.js'
test.before(async () => {
await db.migrate.latest()
})
test.failing('get "/" route should return status code of 200', async t => {
const res = await request(App).get('/')
t.is(res.status, 200)
})
test.serial('get "/api/maps" route should return an object containing an array called "maps"', async t => {
const res = await request(App).get('/api/maps')
t.is(res.status, 200)
t.truthy(res.body.maps?.constructor === Array)
})
test.serial('get "/api/map/:mapName" route should return map with matching name', async t => {
const res = await request(App).get('/api/map/bingo')
t.is(res.status, 200)
t.is(res.body.name, 'bingo')
})
test.serial('get "/api/map/:mapName" route with different mapName should create new map with different id', async t => {
const res = await request(App).get('/api/map/cheese')
t.is(res.status, 200)
t.truthy(res.body.id)
t.not(res.body.id, 1)
})
test.serial('get "/api/map/:mapName" route with existing mapName should return same id', async t => {
const res = await request(App).get('/api/map/bingo')
t.is(res.status, 200)
t.is(res.body.id, 1)
})
test.serial('post "/api/point/add" body containing a name, location and map_id should return a point', async t => {
const { body: { id: mapId } } = await request(App).get('/api/map/bingo')
const res = await request(App)
.post('/api/point/add')
.send({
mapId,
point: {
name: 'pointy',
location: '(50.8552,4.3454)',
}
})
t.is(res.status, 200)
t.is(res.body.id, 1)
t.is(res.body.map_id, mapId)
t.is(res.body.name, 'pointy')
})
test.serial('get "/api/map/:mapName" with associated points should return a map with an array of points', async t => {
const res = await request(App).get('/api/map/bingo')
t.is(res.status, 200)
t.truthy(res.body.map_points)
t.is(res.body.map_points.length, 1)
})
test.serial('post "/api/point/add" with incorrect data keys throws 500 error', async t => {
const { body: { id: mapId } } = await request(App).get('/api/map/bingo')
const error = await request(App)
.post('/api/point/add')
.send({
mapId,
point: {
title: 'pointy',
coords: '(50.8552,4.3454)',
}
})
t.is(error.status, 500)
})
test.after(async () => {
await db.migrate.down()
})