54 lines
1.2 KiB
TypeScript
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();
|
|
});
|
|
});
|