@nymphjs/server
Version:
Nymph.js - REST Server
81 lines (66 loc) • 2.1 kB
text/typescript
import express from 'express';
import SQLite3Driver from '@nymphjs/driver-sqlite3';
import { Nymph as NymphServer } from '@nymphjs/nymph';
import { Nymph } from '@nymphjs/client';
import createServer from './index.js';
import {
EmployeeModel as EmployeeModelClass,
Employee as EmployeeClass,
} from './testArtifacts.js';
const sqliteConfig = {
filename: ':memory:',
};
const nymphServer = new NymphServer({}, new SQLite3Driver(sqliteConfig));
const EmployeeModel = nymphServer.addEntityClass(EmployeeModelClass);
const app = express();
app.use('/test', createServer(nymphServer));
const server = app.listen(5081);
const nymph = new Nymph({
restUrl: 'http://localhost:5081/test/',
weakCache: true,
});
const Employee = nymph.addEntityClass(EmployeeClass);
describe('Nymph REST Server and Client with Client Weak Ref Cache', () => {
async function createJane() {
const jane = await Employee.factory();
jane.name = 'Jane Doe';
jane.current = true;
jane.salary = 8000000;
jane.startDate = Date.now();
jane.subordinates = [];
jane.title = 'Seniorer Person';
try {
await jane.$save();
} catch (e: any) {
console.error('Error creating entity: ', e);
throw e;
}
return jane;
}
it('change an entity and check weakCache', async () => {
// @ts-ignore TS doesn't know about WeakRef.
if (typeof WeakRef === 'undefined') {
throw new Error(
'You must run this test in an environment that includes WeakRef.',
);
}
const employee = await createJane();
if (employee.guid == null) {
throw new Error('Entity is null.');
}
const checkA = await Employee.factory(employee.guid);
const checkB = await nymph.getEntity(
{ class: Employee },
{ type: '&', guid: employee.guid },
);
if (!checkB) {
throw new Error("Couldn't fetch entity.");
}
employee.current = false;
expect(checkA.current).toEqual(false);
expect(checkB.current).toEqual(false);
});
afterAll(() => {
server.close(); // avoid jest open handle error
});
});