screeps-ai/test/integration/helper.ts
2020-05-31 15:06:55 +03:00

60 lines
1.4 KiB
TypeScript

const { readFileSync } = require('fs');
const _ = require('lodash');
const { ScreepsServer, stdHooks } = require('screeps-server-mockup');
const DIST_MAIN_JS = 'dist/main.js';
/*
* Helper class for creating a ScreepsServer and resetting it between tests.
* See https://github.com/Hiryus/screeps-server-mockup for instructions on
* manipulating the terrain and game state.
*/
class IntegrationTestHelper {
private _server: any;
private _player: any;
get server() {
return this._server;
}
get player() {
return this._player;
}
async beforeEach() {
this._server = new ScreepsServer();
// reset world but add invaders and source keepers bots
await this._server.world.reset();
// create a stub world composed of 9 rooms with sources and controller
await this._server.world.stubWorld();
// add a player with the built dist/main.js file
const modules = {
main: readFileSync(DIST_MAIN_JS).toString(),
};
this._player = await this._server.world.addBot({ username: 'player', room: 'W0N1', x: 15, y: 15, modules });
// Start server
await this._server.start();
}
async afterEach() {
await this._server.stop();
}
}
beforeEach(async () => {
await helper.beforeEach();
});
afterEach(async () => {
await helper.afterEach();
});
before(() => {
stdHooks.hookWrite();
});
export const helper = new IntegrationTestHelper();