tachybase_todo/packages/server/src/__tests__/life-cycle.test.ts

54 lines
1.2 KiB
TypeScript

import Application from '../application';
import { Plugin } from '../plugin';
describe('application life cycle', () => {
it('should start application', async () => {
const app = new Application({
database: {
dialect: 'sqlite',
storage: ':memory:',
},
});
const loadFn = jest.fn();
const installFn = jest.fn();
// register plugin
class TestPlugin extends Plugin {
beforeLoad() {}
getName() {
return 'Test';
}
async load() {
loadFn();
this.app.on('beforeInstall', () => {
installFn();
});
}
}
app.plugin(TestPlugin);
await app.load();
expect(loadFn).toHaveBeenCalledTimes(1);
expect(installFn).toHaveBeenCalledTimes(0);
await app.install();
expect(installFn).toHaveBeenCalledTimes(1);
});
it('should listen application', async () => {
const app = new Application({
database: {
dialect: 'sqlite',
storage: ':memory:',
},
});
await app.start({ listen: { port: 13090 } });
expect(app.listenServer).not.toBeNull();
await app.stop();
expect(app.listenServer).toBeNull();
});
});