Removing tests which hadn't been updated since React (shame on me).
This commit is contained in:
parent
57010f89f4
commit
03c0476f46
|
@ -1,86 +0,0 @@
|
||||||
import { initDb } from '.';
|
|
||||||
import { existsGpx, putNewGpx } from './gpx';
|
|
||||||
declare global {
|
|
||||||
var db: any;
|
|
||||||
var dbReady: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const originalDb = globalThis.db;
|
|
||||||
const originalDateNow = globalThis.Date.now;
|
|
||||||
|
|
||||||
describe('The gpx module', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
globalThis.db = { put: jest.fn() };
|
|
||||||
globalThis.Date.now = () => 0;
|
|
||||||
});
|
|
||||||
afterEach(() => {
|
|
||||||
globalThis.db = originalDb;
|
|
||||||
globalThis.Date.now = originalDateNow;
|
|
||||||
});
|
|
||||||
test('db.put() a new Gpx when required', async () => {
|
|
||||||
await putNewGpx({ gpx: 0 });
|
|
||||||
expect(globalThis.db.put).toBeCalledWith({
|
|
||||||
_id: 'gpx/0000000000000000',
|
|
||||||
_rev: undefined,
|
|
||||||
doc: {
|
|
||||||
$: {
|
|
||||||
creator: 'dyomedea version 0.000002',
|
|
||||||
version: '1.1',
|
|
||||||
xmlns: 'http://www.topografix.com/GPX/1/1',
|
|
||||||
'xmlns:dyo': 'http://xmlns.dyomedea.com/',
|
|
||||||
'xmlns:gpxtpx':
|
|
||||||
'http://www.garmin.com/xmlschemas/TrackPointExtension/v1',
|
|
||||||
'xmlns:gpxx': 'http://www.garmin.com/xmlschemas/GpxExtensions/v3',
|
|
||||||
'xmlns:wptx1':
|
|
||||||
'http://www.garmin.com/xmlschemas/WaypointExtension/v1',
|
|
||||||
'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
|
|
||||||
'xsi:schemaLocation':
|
|
||||||
'http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www8.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/WaypointExtension/v1 http://www8.garmin.com/xmlschemas/WaypointExtensionv1.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd',
|
|
||||||
},
|
|
||||||
extensions: undefined,
|
|
||||||
metadata: {
|
|
||||||
author: undefined,
|
|
||||||
bounds: undefined,
|
|
||||||
copyright: undefined,
|
|
||||||
desc: undefined,
|
|
||||||
extensions: undefined,
|
|
||||||
keywords: undefined,
|
|
||||||
link: undefined,
|
|
||||||
name: undefined,
|
|
||||||
time: '1970-01-01T00:00:00.000Z',
|
|
||||||
},
|
|
||||||
rte: undefined,
|
|
||||||
trk: undefined,
|
|
||||||
wpt: undefined,
|
|
||||||
},
|
|
||||||
type: 'gpx',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
test('db.put() generates an id if needed', async () => {
|
|
||||||
const id = await putNewGpx();
|
|
||||||
expect(id).toEqual({ gpx: 4320000000000000 });
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('The gpx module with a real db', () => {
|
|
||||||
beforeEach(async () => {
|
|
||||||
await initDb({});
|
|
||||||
globalThis.Date.now = () => 0;
|
|
||||||
});
|
|
||||||
afterEach(async () => {
|
|
||||||
await db.destroy();
|
|
||||||
db = undefined;
|
|
||||||
globalThis.Date.now = originalDateNow;
|
|
||||||
});
|
|
||||||
|
|
||||||
test("existsGpx returns false if the GPX doesn't exist", async () => {
|
|
||||||
const exists = await existsGpx({ gpx: 1 });
|
|
||||||
expect(exists).toBeFalsy();
|
|
||||||
});
|
|
||||||
test('existsGpx returns false if the GPX exists', async () => {
|
|
||||||
const id = { gpx: 1 };
|
|
||||||
await putNewGpx(id);
|
|
||||||
const exists = await existsGpx(id);
|
|
||||||
expect(exists).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,299 +0,0 @@
|
||||||
import { initDb } from '.';
|
|
||||||
import uri from '../lib/ids';
|
|
||||||
import { getDocsByType, getFamily } from './lib';
|
|
||||||
import { putNewRte } from './rte';
|
|
||||||
import { putNewRtept } from './rtept';
|
|
||||||
import { putNewTrk } from './trk';
|
|
||||||
import { putNewTrkpt } from './trkpt';
|
|
||||||
import { putNewTrkseg } from './trkseg';
|
|
||||||
import { putNewWpt } from './wpt';
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
var db: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
const originalDateNow = globalThis.Date.now;
|
|
||||||
|
|
||||||
describe('getFamily', () => {
|
|
||||||
beforeEach(async () => {
|
|
||||||
await initDb({});
|
|
||||||
globalThis.Date.now = () => 0;
|
|
||||||
});
|
|
||||||
afterEach(async () => {
|
|
||||||
await db.destroy();
|
|
||||||
db = undefined;
|
|
||||||
globalThis.Date.now = originalDateNow;
|
|
||||||
});
|
|
||||||
test('returns two rows after a gpx and a track have been inserted.', async () => {
|
|
||||||
await putNewTrk();
|
|
||||||
const allDocs: any = await getFamily('gpx/');
|
|
||||||
expect(allDocs).toMatchInlineSnapshot(`
|
|
||||||
Object {
|
|
||||||
"offset": 0,
|
|
||||||
"rows": Array [
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000",
|
|
||||||
"key": "gpx/4320000000000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-49baa096ec0c89962f2cafd3ff50b80b",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000/3trk/000000",
|
|
||||||
"key": "gpx/4320000000000000/3trk/000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-4c114f3ae0073151e4082ff1d220c2a4",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"total_rows": 4,
|
|
||||||
}
|
|
||||||
`);
|
|
||||||
});
|
|
||||||
test('also returns the docs if required.', async () => {
|
|
||||||
await putNewTrk();
|
|
||||||
const allDocs: any = await getFamily('gpx/', {
|
|
||||||
include_docs: true,
|
|
||||||
});
|
|
||||||
expect(allDocs).toMatchInlineSnapshot(`
|
|
||||||
Object {
|
|
||||||
"offset": 0,
|
|
||||||
"rows": Array [
|
|
||||||
Object {
|
|
||||||
"doc": Object {
|
|
||||||
"_id": "gpx/4320000000000000",
|
|
||||||
"_rev": "1-49baa096ec0c89962f2cafd3ff50b80b",
|
|
||||||
"doc": Object {
|
|
||||||
"$": Object {
|
|
||||||
"creator": "dyomedea version 0.000002",
|
|
||||||
"version": "1.1",
|
|
||||||
"xmlns": "http://www.topografix.com/GPX/1/1",
|
|
||||||
"xmlns:dyo": "http://xmlns.dyomedea.com/",
|
|
||||||
"xmlns:gpxtpx": "http://www.garmin.com/xmlschemas/TrackPointExtension/v1",
|
|
||||||
"xmlns:gpxx": "http://www.garmin.com/xmlschemas/GpxExtensions/v3",
|
|
||||||
"xmlns:wptx1": "http://www.garmin.com/xmlschemas/WaypointExtension/v1",
|
|
||||||
"xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
|
|
||||||
"xsi:schemaLocation": "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www8.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/WaypointExtension/v1 http://www8.garmin.com/xmlschemas/WaypointExtensionv1.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd",
|
|
||||||
},
|
|
||||||
"metadata": Object {
|
|
||||||
"time": "1970-01-01T00:00:00.000Z",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"type": "gpx",
|
|
||||||
},
|
|
||||||
"id": "gpx/4320000000000000",
|
|
||||||
"key": "gpx/4320000000000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-49baa096ec0c89962f2cafd3ff50b80b",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Object {
|
|
||||||
"doc": Object {
|
|
||||||
"_id": "gpx/4320000000000000/3trk/000000",
|
|
||||||
"_rev": "1-4c114f3ae0073151e4082ff1d220c2a4",
|
|
||||||
"doc": Object {
|
|
||||||
"number": 0,
|
|
||||||
},
|
|
||||||
"type": "trk",
|
|
||||||
},
|
|
||||||
"id": "gpx/4320000000000000/3trk/000000",
|
|
||||||
"key": "gpx/4320000000000000/3trk/000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-4c114f3ae0073151e4082ff1d220c2a4",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"total_rows": 4,
|
|
||||||
}
|
|
||||||
`);
|
|
||||||
});
|
|
||||||
test('returns three rows after a gpx and a track segment have been inserted.', async () => {
|
|
||||||
await putNewTrkseg();
|
|
||||||
const allDocs: any = await getFamily('gpx/');
|
|
||||||
expect(allDocs).toMatchInlineSnapshot(`
|
|
||||||
Object {
|
|
||||||
"offset": 0,
|
|
||||||
"rows": Array [
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000",
|
|
||||||
"key": "gpx/4320000000000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-49baa096ec0c89962f2cafd3ff50b80b",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000/3trk/000000",
|
|
||||||
"key": "gpx/4320000000000000/3trk/000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-4c114f3ae0073151e4082ff1d220c2a4",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000/3trk/000000/000000",
|
|
||||||
"key": "gpx/4320000000000000/3trk/000000/000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-68d7de0569de570229ea9f9e1a0b13cb",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"total_rows": 5,
|
|
||||||
}
|
|
||||||
`);
|
|
||||||
});
|
|
||||||
test('returns four rows after a gpx and a track point have been inserted.', async () => {
|
|
||||||
await putNewTrkpt();
|
|
||||||
const allDocs: any = await getFamily('gpx/');
|
|
||||||
expect(allDocs).toMatchInlineSnapshot(`
|
|
||||||
Object {
|
|
||||||
"offset": 0,
|
|
||||||
"rows": Array [
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000",
|
|
||||||
"key": "gpx/4320000000000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-49baa096ec0c89962f2cafd3ff50b80b",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000/3trk/000000",
|
|
||||||
"key": "gpx/4320000000000000/3trk/000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-4c114f3ae0073151e4082ff1d220c2a4",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000/3trk/000000/000000",
|
|
||||||
"key": "gpx/4320000000000000/3trk/000000/000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-68d7de0569de570229ea9f9e1a0b13cb",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000/3trk/000000/000000/000000",
|
|
||||||
"key": "gpx/4320000000000000/3trk/000000/000000/000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-7d917d1f3505fe0e3092161694904b53",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"total_rows": 6,
|
|
||||||
}
|
|
||||||
`);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('returns two rows after a gpx and a waypoint have been inserted.', async () => {
|
|
||||||
await putNewWpt();
|
|
||||||
const allDocs: any = await getFamily('gpx/');
|
|
||||||
expect(allDocs).toMatchInlineSnapshot(`
|
|
||||||
Object {
|
|
||||||
"offset": 0,
|
|
||||||
"rows": Array [
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000",
|
|
||||||
"key": "gpx/4320000000000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-49baa096ec0c89962f2cafd3ff50b80b",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000/1wpt/000000",
|
|
||||||
"key": "gpx/4320000000000000/1wpt/000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-c6793365fd0dd56236ab8734a41c7ae7",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"total_rows": 4,
|
|
||||||
}
|
|
||||||
`);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('returns two rows after a gpx and a route have been inserted.', async () => {
|
|
||||||
await putNewRte();
|
|
||||||
const allDocs: any = await getFamily('gpx/');
|
|
||||||
expect(allDocs).toMatchInlineSnapshot(`
|
|
||||||
Object {
|
|
||||||
"offset": 0,
|
|
||||||
"rows": Array [
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000",
|
|
||||||
"key": "gpx/4320000000000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-49baa096ec0c89962f2cafd3ff50b80b",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000/2rte/000000",
|
|
||||||
"key": "gpx/4320000000000000/2rte/000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-2ca14f512a9c83f5a239389e580befce",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"total_rows": 4,
|
|
||||||
}
|
|
||||||
`);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('returns three rows after a gpx and a route point have been inserted.', async () => {
|
|
||||||
await putNewRtept();
|
|
||||||
const allDocs: any = await getFamily('gpx/');
|
|
||||||
expect(allDocs).toMatchInlineSnapshot(`
|
|
||||||
Object {
|
|
||||||
"offset": 0,
|
|
||||||
"rows": Array [
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000",
|
|
||||||
"key": "gpx/4320000000000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-49baa096ec0c89962f2cafd3ff50b80b",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000/2rte/000000",
|
|
||||||
"key": "gpx/4320000000000000/2rte/000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-2ca14f512a9c83f5a239389e580befce",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Object {
|
|
||||||
"id": "gpx/4320000000000000/2rte/000000/000000",
|
|
||||||
"key": "gpx/4320000000000000/2rte/000000/000000",
|
|
||||||
"value": Object {
|
|
||||||
"rev": "1-0f4064d20f6bfac3888a7758851fbac5",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"total_rows": 5,
|
|
||||||
}
|
|
||||||
`);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('getDocsByType', () => {
|
|
||||||
beforeEach(async () => {
|
|
||||||
await initDb({});
|
|
||||||
globalThis.Date.now = () => 0;
|
|
||||||
});
|
|
||||||
afterEach(async () => {
|
|
||||||
await db.destroy();
|
|
||||||
db = undefined;
|
|
||||||
globalThis.Date.now = originalDateNow;
|
|
||||||
});
|
|
||||||
test('gets the rte amongst other docs', async () => {
|
|
||||||
await putNewRtept();
|
|
||||||
const rtes = await getDocsByType('rte');
|
|
||||||
expect(rtes).toMatchInlineSnapshot(`
|
|
||||||
Array [
|
|
||||||
Object {
|
|
||||||
"_id": "gpx/4320000000000000/2rte/000000",
|
|
||||||
"_rev": "1-2ca14f512a9c83f5a239389e580befce",
|
|
||||||
"doc": Object {
|
|
||||||
"number": 0,
|
|
||||||
},
|
|
||||||
"type": "rte",
|
|
||||||
},
|
|
||||||
]
|
|
||||||
`);
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,47 +0,0 @@
|
||||||
import { putNewRte } from './rte';
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
var db: any;
|
|
||||||
var dbReady: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const originalDb = globalThis.db;
|
|
||||||
const originalDateNow = globalThis.Date.now;
|
|
||||||
|
|
||||||
describe('The rte module', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
globalThis.db = { put: jest.fn() };
|
|
||||||
globalThis.Date.now = () => 0;
|
|
||||||
});
|
|
||||||
afterEach(() => {
|
|
||||||
globalThis.db = originalDb;
|
|
||||||
globalThis.Date.now = originalDateNow;
|
|
||||||
});
|
|
||||||
test('db.put() a new rte when required', async () => {
|
|
||||||
putNewRte({ gpx: 4320000000000000, rte: 25 });
|
|
||||||
await expect(globalThis.db.put).toBeCalledWith({
|
|
||||||
_id: 'gpx/4320000000000000/2rte/000025',
|
|
||||||
_rev: undefined,
|
|
||||||
doc: {
|
|
||||||
cmt: undefined,
|
|
||||||
desc: undefined,
|
|
||||||
extensions: undefined,
|
|
||||||
link: undefined,
|
|
||||||
name: undefined,
|
|
||||||
number: 0,
|
|
||||||
rtept: undefined,
|
|
||||||
src: undefined,
|
|
||||||
type: undefined,
|
|
||||||
},
|
|
||||||
type: 'rte',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
test('db.put() generates an id for the trk if needed', async () => {
|
|
||||||
const id = await putNewRte({ gpx: 0 });
|
|
||||||
expect(id).toEqual({ gpx: 0, rte: 0 });
|
|
||||||
});
|
|
||||||
test('db.put() generates ids for both gpx and trk if needed', async () => {
|
|
||||||
const id = await putNewRte();
|
|
||||||
expect(id).toEqual({ gpx: 4320000000000000, rte: 0 });
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,58 +0,0 @@
|
||||||
import { putNewRtept } from './rtept';
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
var db: any;
|
|
||||||
var dbReady: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const originalDb = globalThis.db;
|
|
||||||
const originalDateNow = globalThis.Date.now;
|
|
||||||
|
|
||||||
describe('The rtept module', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
globalThis.db = { put: jest.fn() };
|
|
||||||
globalThis.Date.now = () => 0;
|
|
||||||
});
|
|
||||||
afterEach(() => {
|
|
||||||
globalThis.db = originalDb;
|
|
||||||
globalThis.Date.now = originalDateNow;
|
|
||||||
});
|
|
||||||
test('db.put() a new rtept when required', async () => {
|
|
||||||
putNewRtept({ gpx: 0, rte: 0, rtept: 0 });
|
|
||||||
await expect(globalThis.db.put).toBeCalledWith({
|
|
||||||
_id: 'gpx/0000000000000000/2rte/000000/000000',
|
|
||||||
_rev: undefined,
|
|
||||||
doc: {
|
|
||||||
$: { lat: 0, lon: 0 },
|
|
||||||
ageofdgpsdata: undefined,
|
|
||||||
cmt: undefined,
|
|
||||||
desc: undefined,
|
|
||||||
dgpsid: undefined,
|
|
||||||
ele: undefined,
|
|
||||||
extensions: undefined,
|
|
||||||
fix: undefined,
|
|
||||||
geoidheight: undefined,
|
|
||||||
hdop: undefined,
|
|
||||||
link: undefined,
|
|
||||||
magvar: undefined,
|
|
||||||
name: undefined,
|
|
||||||
pdop: undefined,
|
|
||||||
sat: undefined,
|
|
||||||
src: undefined,
|
|
||||||
sym: undefined,
|
|
||||||
time: undefined,
|
|
||||||
type: undefined,
|
|
||||||
vdop: undefined,
|
|
||||||
},
|
|
||||||
type: 'rtept',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
test('db.put() generates an id for the rtept if needed', async () => {
|
|
||||||
const id = await putNewRtept({ gpx: 0 });
|
|
||||||
expect(id).toEqual({ gpx: 0, rte: 0, rtept: 0 });
|
|
||||||
});
|
|
||||||
test('db.put() generates ids for both gpx and rte if needed', async () => {
|
|
||||||
const id = await putNewRtept();
|
|
||||||
expect(id).toEqual({ gpx: 4320000000000000, rte: 0, rtept: 0 });
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,47 +0,0 @@
|
||||||
import { putNewTrk } from './trk';
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
var db: any;
|
|
||||||
var dbReady: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const originalDb = globalThis.db;
|
|
||||||
const originalDateNow = globalThis.Date.now;
|
|
||||||
|
|
||||||
describe('The trk module', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
globalThis.db = { put: jest.fn() };
|
|
||||||
globalThis.Date.now = () => 0;
|
|
||||||
});
|
|
||||||
afterEach(() => {
|
|
||||||
globalThis.db = originalDb;
|
|
||||||
globalThis.Date.now = originalDateNow;
|
|
||||||
});
|
|
||||||
test('db.put() a new trk when required', async () => {
|
|
||||||
putNewTrk({ gpx: 1, trk: 2 });
|
|
||||||
await expect(globalThis.db.put).toBeCalledWith({
|
|
||||||
_id: 'gpx/0000000000000001/3trk/000002',
|
|
||||||
_rev: undefined,
|
|
||||||
doc: {
|
|
||||||
cmt: undefined,
|
|
||||||
desc: undefined,
|
|
||||||
extensions: undefined,
|
|
||||||
link: undefined,
|
|
||||||
name: undefined,
|
|
||||||
number: 0,
|
|
||||||
src: undefined,
|
|
||||||
trkseg: undefined,
|
|
||||||
type: undefined,
|
|
||||||
},
|
|
||||||
type: 'trk',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
test('db.put() generates an id for the trk if needed', async () => {
|
|
||||||
const id = await putNewTrk({ gpx: 2 });
|
|
||||||
expect(id).toEqual({ gpx: 2, trk: 0});
|
|
||||||
});
|
|
||||||
test('db.put() generates ids for both gpx and trk if needed', async () => {
|
|
||||||
const id = await putNewTrk();
|
|
||||||
expect(id).toEqual({ gpx: 4320000000000000, trk: 0});
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,79 +0,0 @@
|
||||||
import { putNewTrkpt } from './trkpt';
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
var db: any;
|
|
||||||
var dbReady: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const originalDb = globalThis.db;
|
|
||||||
const originalDateNow = globalThis.Date.now;
|
|
||||||
|
|
||||||
describe('The trkpt module', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
globalThis.db = { put: jest.fn() };
|
|
||||||
globalThis.Date.now = () => 0;
|
|
||||||
});
|
|
||||||
afterEach(() => {
|
|
||||||
globalThis.db = originalDb;
|
|
||||||
globalThis.Date.now = originalDateNow;
|
|
||||||
});
|
|
||||||
test('db.put() a new trkpt when required', async () => {
|
|
||||||
putNewTrkpt({
|
|
||||||
gpx: 1,
|
|
||||||
trk: 2,
|
|
||||||
trkseg: 3,
|
|
||||||
trkpt: 4,
|
|
||||||
});
|
|
||||||
await expect(globalThis.db.put).toBeCalledWith({
|
|
||||||
_id: 'gpx/0000000000000001/3trk/000002/000003/000004',
|
|
||||||
_rev: undefined,
|
|
||||||
doc: {
|
|
||||||
$: { lat: 0, lon: 0 },
|
|
||||||
ageofdgpsdata: undefined,
|
|
||||||
cmt: undefined,
|
|
||||||
desc: undefined,
|
|
||||||
dgpsid: undefined,
|
|
||||||
ele: undefined,
|
|
||||||
extensions: {
|
|
||||||
'dyo:accuracy': undefined,
|
|
||||||
'dyo:batterylevel': undefined,
|
|
||||||
'dyo:course': undefined,
|
|
||||||
'dyo:speed': undefined,
|
|
||||||
'dyo:useragent': undefined,
|
|
||||||
},
|
|
||||||
fix: undefined,
|
|
||||||
geoidheight: undefined,
|
|
||||||
hdop: undefined,
|
|
||||||
link: undefined,
|
|
||||||
magvar: undefined,
|
|
||||||
name: undefined,
|
|
||||||
pdop: undefined,
|
|
||||||
sat: undefined,
|
|
||||||
src: undefined,
|
|
||||||
sym: undefined,
|
|
||||||
time: undefined,
|
|
||||||
type: undefined,
|
|
||||||
vdop: undefined,
|
|
||||||
},
|
|
||||||
type: 'trkpt',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
test('db.put() generates an id for the trk if needed', async () => {
|
|
||||||
const id = await putNewTrkpt({ gpx: 5 });
|
|
||||||
expect(id).toEqual({
|
|
||||||
gpx: 5,
|
|
||||||
trk: 0,
|
|
||||||
trkseg: 0,
|
|
||||||
trkpt: 0,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
test('db.put() generates ids for both gpx and trk if needed', async () => {
|
|
||||||
const id = await putNewTrkpt();
|
|
||||||
expect(id).toEqual({
|
|
||||||
gpx: 4320000000000000,
|
|
||||||
trk: 0,
|
|
||||||
trkseg: 0,
|
|
||||||
trkpt: 0,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,40 +0,0 @@
|
||||||
import { putNewTrkseg } from './trkseg';
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
var db: any;
|
|
||||||
var dbReady: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const originalDb = globalThis.db;
|
|
||||||
const originalDateNow = globalThis.Date.now;
|
|
||||||
|
|
||||||
describe('The trkseg module', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
globalThis.db = { put: jest.fn() };
|
|
||||||
globalThis.Date.now = () => 0;
|
|
||||||
});
|
|
||||||
afterEach(() => {
|
|
||||||
globalThis.db = originalDb;
|
|
||||||
globalThis.Date.now = originalDateNow;
|
|
||||||
});
|
|
||||||
test('db.put() a new trk when required', async () => {
|
|
||||||
putNewTrkseg({ gpx: 1234567890123456, trk: 123456, trkseg: 5 });
|
|
||||||
await expect(globalThis.db.put).toBeCalledWith({
|
|
||||||
_id: 'gpx/1234567890123456/3trk/123456/000005',
|
|
||||||
_rev: undefined,
|
|
||||||
doc: {
|
|
||||||
trkpt: undefined,
|
|
||||||
extensions: undefined,
|
|
||||||
},
|
|
||||||
type: 'trkseg',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
test('db.put() generates an id for the trk if needed', async () => {
|
|
||||||
const id = await putNewTrkseg({ gpx: 1 });
|
|
||||||
expect(id).toEqual({ gpx: 1, trk: 0, trkseg: 0 });
|
|
||||||
});
|
|
||||||
test('db.put() generates ids for both gpx and trk if needed', async () => {
|
|
||||||
const id = await putNewTrkseg();
|
|
||||||
expect(id).toEqual({ gpx: 4320000000000000, trk: 0, trkseg: 0 });
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,58 +0,0 @@
|
||||||
import { putNewWpt } from './wpt';
|
|
||||||
|
|
||||||
declare global {
|
|
||||||
var db: any;
|
|
||||||
var dbReady: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const originalDb = globalThis.db;
|
|
||||||
const originalDateNow = globalThis.Date.now;
|
|
||||||
|
|
||||||
describe('The wpt module', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
globalThis.db = { put: jest.fn() };
|
|
||||||
globalThis.Date.now = () => 0;
|
|
||||||
});
|
|
||||||
afterEach(() => {
|
|
||||||
globalThis.db = originalDb;
|
|
||||||
globalThis.Date.now = originalDateNow;
|
|
||||||
});
|
|
||||||
test('db.put() a new wpt when required', async () => {
|
|
||||||
putNewWpt({ gpx: 1, wpt: 2 });
|
|
||||||
await expect(globalThis.db.put).toBeCalledWith({
|
|
||||||
_id: 'gpx/0000000000000001/1wpt/000002',
|
|
||||||
_rev: undefined,
|
|
||||||
doc: {
|
|
||||||
$: { lat: 0, lon: 0 },
|
|
||||||
ageofdgpsdata: undefined,
|
|
||||||
cmt: undefined,
|
|
||||||
desc: undefined,
|
|
||||||
dgpsid: undefined,
|
|
||||||
ele: undefined,
|
|
||||||
extensions: undefined,
|
|
||||||
fix: undefined,
|
|
||||||
geoidheight: undefined,
|
|
||||||
hdop: undefined,
|
|
||||||
link: undefined,
|
|
||||||
magvar: undefined,
|
|
||||||
name: undefined,
|
|
||||||
pdop: undefined,
|
|
||||||
sat: undefined,
|
|
||||||
src: undefined,
|
|
||||||
sym: undefined,
|
|
||||||
time: undefined,
|
|
||||||
type: undefined,
|
|
||||||
vdop: undefined,
|
|
||||||
},
|
|
||||||
type: 'wpt',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
test('db.put() generates an id for the wpt if needed', async () => {
|
|
||||||
const id = await putNewWpt({ gpx: 1 });
|
|
||||||
expect(id).toEqual({ gpx: 1, wpt: 0 });
|
|
||||||
});
|
|
||||||
test('db.put() generates ids for both gpx and trk if needed', async () => {
|
|
||||||
const id = await putNewWpt();
|
|
||||||
expect(id).toEqual({ gpx: 4320000000000000, wpt: 0 });
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,33 +0,0 @@
|
||||||
import { assert } from 'console';
|
|
||||||
import { findStartTime } from './gpx';
|
|
||||||
|
|
||||||
describe('findStartTime', () => {
|
|
||||||
test('to be undefined for a string', () => {
|
|
||||||
const start = findStartTime('');
|
|
||||||
expect(start).toBeUndefined();
|
|
||||||
});
|
|
||||||
test('to be undefined for an object without time key', () => {
|
|
||||||
const start = findStartTime({ foo: 'foo', bar: 'bar' });
|
|
||||||
expect(start).toBeUndefined();
|
|
||||||
});
|
|
||||||
test('to be the time value for an object with a time key', () => {
|
|
||||||
const start = findStartTime({ foo: 'foo', time: 'bar' });
|
|
||||||
expect(start).toEqual('bar');
|
|
||||||
});
|
|
||||||
test('to be the lowest time value for an object with several time keys', () => {
|
|
||||||
const start = findStartTime({
|
|
||||||
foo: { time: 'foo' },
|
|
||||||
time: 'bar',
|
|
||||||
bar: { time: 'a' },
|
|
||||||
});
|
|
||||||
expect(start).toEqual('a');
|
|
||||||
});
|
|
||||||
test('to be the lowest time value for an array with several objects with time keys', () => {
|
|
||||||
const start = findStartTime({
|
|
||||||
foos: [{ time: 'foo' }, { time: '0' }],
|
|
||||||
time: 'bar',
|
|
||||||
bar: { time: 'a' },
|
|
||||||
});
|
|
||||||
expect(start).toEqual('0');
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,120 +0,0 @@
|
||||||
import { route } from './docuri';
|
|
||||||
import uri from './ids';
|
|
||||||
|
|
||||||
describe('Checking some DocURI features', () => {
|
|
||||||
test(', basic route', () => {
|
|
||||||
const gpx = route('gpx/:id');
|
|
||||||
expect(gpx({ id: 10 })).toBe('gpx/10');
|
|
||||||
});
|
|
||||||
test(', basic route (vice-versa', () => {
|
|
||||||
const gpx = route('gpx/:id');
|
|
||||||
expect(gpx('gpx/10')).toMatchObject({ id: '10' });
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Checking a multilevel route', () => {
|
|
||||||
test(', using the two levels', () => {
|
|
||||||
const gpx = route('gpx/:gpx/3trk/:trk');
|
|
||||||
expect(gpx({ gpx: 10, trk: 0 })).toBe('gpx/10/3trk/0');
|
|
||||||
});
|
|
||||||
test(', using the two levels (vive-versa)', () => {
|
|
||||||
const gpx = route('gpx/:gpx/3trk/:trk');
|
|
||||||
expect(gpx('gpx/10/3trk/0')).toMatchObject({ gpx: '10', trk: '0' });
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Checking a multilevel route with optional part', () => {
|
|
||||||
test(', using the two levels', () => {
|
|
||||||
const gpx = route('gpx/:gpx(/3trk/:trk)');
|
|
||||||
expect(gpx({ gpx: 10, trk: 0 })).toBe('gpx/10/3trk/0');
|
|
||||||
});
|
|
||||||
test(', using the two levels (vive-versa)', () => {
|
|
||||||
const gpx = route('gpx/:gpx(/3trk/:trk)');
|
|
||||||
expect(gpx('gpx/10/3trk/0')).toMatchObject({ gpx: '10', trk: '0' });
|
|
||||||
});
|
|
||||||
test(', using only one level', () => {
|
|
||||||
const gpx = route('gpx/:gpx(/3trk/:trk)');
|
|
||||||
expect(gpx({ gpx: 10 })).toBe('gpx/10/3trk/'); //Unfortunately !
|
|
||||||
});
|
|
||||||
test(', using only one level (vive-versa)', () => {
|
|
||||||
const gpx = route('gpx/:gpx(/3trk/:trk)');
|
|
||||||
expect(gpx('gpx/10')).toMatchObject({ gpx: '10' });
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Checking gpx ids', () => {
|
|
||||||
const id = {
|
|
||||||
gpx: 1234567890123456,
|
|
||||||
};
|
|
||||||
const key = 'gpx/1234567890123456';
|
|
||||||
test(', vice', () => {
|
|
||||||
const gpx = uri('gpx', id);
|
|
||||||
expect(gpx).toBe(key);
|
|
||||||
});
|
|
||||||
test(', and versa', () => {
|
|
||||||
const gpx = uri('gpx', key);
|
|
||||||
expect(gpx).toMatchObject(id);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Checking trk ids', () => {
|
|
||||||
const id = {
|
|
||||||
gpx: 1234567890123456,
|
|
||||||
trk: 123456,
|
|
||||||
};
|
|
||||||
const key = 'gpx/1234567890123456/3trk/123456';
|
|
||||||
test(', vice', () => {
|
|
||||||
const rte = uri('trk', id);
|
|
||||||
expect(rte).toBe(key);
|
|
||||||
});
|
|
||||||
test(', and versa', () => {
|
|
||||||
const rte = uri('trk', key);
|
|
||||||
expect(rte).toMatchObject(id);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Checking trkseg ids', () => {
|
|
||||||
const id = {
|
|
||||||
gpx: 111,
|
|
||||||
trk: 0,
|
|
||||||
trkseg: 3,
|
|
||||||
};
|
|
||||||
const key = 'gpx/0000000000000111/3trk/000000/000003';
|
|
||||||
test(', vice', () => {
|
|
||||||
const rte = uri('trkseg', id);
|
|
||||||
expect(rte).toBe(key);
|
|
||||||
});
|
|
||||||
test(', and versa', () => {
|
|
||||||
const rte = uri('trkseg', key);
|
|
||||||
expect(rte).toMatchObject(id);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Checking trkpt ids', () => {
|
|
||||||
const id = {
|
|
||||||
gpx: 25,
|
|
||||||
trk: 8,
|
|
||||||
trkseg: 0,
|
|
||||||
trkpt: 155,
|
|
||||||
};
|
|
||||||
const key = 'gpx/0000000000000025/3trk/000008/000000/000155';
|
|
||||||
test(', vice', () => {
|
|
||||||
const rte = uri('trkpt', id);
|
|
||||||
expect(rte).toBe(key);
|
|
||||||
});
|
|
||||||
test(', and versa', () => {
|
|
||||||
const rte = uri('trkpt', key);
|
|
||||||
expect(rte).toMatchObject(id);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Checking settings id', () => {
|
|
||||||
test(', vice', () => {
|
|
||||||
const rte = uri('settings', {});
|
|
||||||
expect(rte).toBe('settings');
|
|
||||||
});
|
|
||||||
test(', and versa', () => {
|
|
||||||
const rte = uri('settings', 'settings');
|
|
||||||
expect(rte).toMatchObject({});
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,37 +0,0 @@
|
||||||
import dispatch, { init, worker } from './dispatcher-main';
|
|
||||||
|
|
||||||
jest.mock('./get-worker', () => ({
|
|
||||||
getWorker: () => ({
|
|
||||||
port: {
|
|
||||||
postMessage: jest.fn(),
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
}));
|
|
||||||
|
|
||||||
describe('The dispatcher-main', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
init();
|
|
||||||
});
|
|
||||||
test('should create a new shared web worker', () => {
|
|
||||||
expect(worker).toBeDefined();
|
|
||||||
});
|
|
||||||
test('should create a onmessage function', () => {
|
|
||||||
expect(worker.port.onmessage).toBeDefined();
|
|
||||||
});
|
|
||||||
test('should return a promise if no callback is provided', () => {
|
|
||||||
expect(dispatch('ping')).toBeInstanceOf(Promise);
|
|
||||||
});
|
|
||||||
test('should forward the message', () => {
|
|
||||||
dispatch('ping');
|
|
||||||
expect(worker.port.postMessage).toBeCalledWith({ id: 0, payload: 'ping' });
|
|
||||||
});
|
|
||||||
test('should return the response', () => {
|
|
||||||
var response;
|
|
||||||
const callback = (error, success) => {
|
|
||||||
response = success;
|
|
||||||
};
|
|
||||||
dispatch('ping', callback);
|
|
||||||
worker.port.onmessage({ data: { id: 0, payload: 'pong' } });
|
|
||||||
expect(response).toEqual('pong');
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,33 +0,0 @@
|
||||||
import worker from './dispatcher-worker';
|
|
||||||
|
|
||||||
jest.mock('../db', () => ({
|
|
||||||
initDb: () => 'called initDb',
|
|
||||||
}));
|
|
||||||
|
|
||||||
describe('The dispatcher-worker ', () => {
|
|
||||||
let port;
|
|
||||||
beforeEach(() => {
|
|
||||||
port = {
|
|
||||||
postMessage: jest.fn(),
|
|
||||||
};
|
|
||||||
worker.onconnect({ ports: [port] });
|
|
||||||
});
|
|
||||||
test('creates a onmessage function', () => {
|
|
||||||
expect(port.onmessage).toBeDefined();
|
|
||||||
expect(port.postMessage).not.toBeCalled();
|
|
||||||
});
|
|
||||||
test('receives a ping and sends back an unknownAction', async () => {
|
|
||||||
await port.onmessage({ data: { id: 5, payload: { action: 'ping' } } });
|
|
||||||
expect(port.postMessage).toBeCalledWith({
|
|
||||||
id: 5,
|
|
||||||
payload: 'unknownAction',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
test('calls initDb when required', async () => {
|
|
||||||
await port.onmessage({ data: { id: 5, payload: { action: 'initDb' } } });
|
|
||||||
expect(port.postMessage).toBeCalledWith({
|
|
||||||
id: 5,
|
|
||||||
payload: 'called initDb',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
Loading…
Reference in New Issue