60 lines
1.4 KiB
TypeScript
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();
|