const assert = require("assert"); const fs = require("fs"); const path = require("path"); const appRootPath = require("app-root-path"); const factorioServer = require("./index.js"); describe("factorioServer/index.js", ()=>{ it("is a class (or at least a function)", ()=>{ assert.equal(typeof factorioServer, "function"); }); describe(".deleteInstance()", ()=>{ it("deletes an instance, defaulting to the classes instanceDirectory", async () => { let server = new factorioServer({ instanceDirectory: path.resolve(__dirname, "_testData_deleteInstance"), instanceName: "Unit testing instance", }); await server.initialize(); await server.deleteInstance(); assert.equal(await server.isValidInstance(), false); return true; }); }); describe(".isValidInstance()", ()=>{ it("tells us whether an instance exists or not", async () => { let server = new factorioServer({ instanceDirectory: path.resolve(__dirname, "_testData_isValidInstance"), instanceName: "Unit testing instance", }); await server.deleteInstance(); let status = await server.isValidInstance(); assert.equal(status, false); let x = await server.initialize(); // creates our instance let status2 = await server.isValidInstance(); assert.equal(status2, true); // clean up folder await server.deleteInstance(); return true; }); }); describe(".initialize()", ()=>{ it("creates an instance", done => { let server = new factorioServer({ instanceDirectory: path.resolve(__dirname, "_testData_initialize"), instanceName: "Unit testing instance", }); server.initialize().then(()=>{ return server.deleteInstance(); }).then(() => { done(); }).catch(e => console.log(e)); }); }); describe(".createMap()", ()=>{ it("creates a map file as instanceDirectory/saves/map.zip", async ()=>{ let relativePath = __dirname.replace(appRootPath, "").substr(1); let server = new factorioServer({ instanceDirectory: path.join(relativePath, "_testData_createMap"), instanceName: "Unit testing instance", }); await server.initialize(); console.log("Relative path: "+relativePath) let maps = fs.readdirSync(path.join(relativePath, "_testData_createMap", "saves")); assert.equal(maps.length, 0); await server.createMap(); let maps2 = fs.readdirSync(path.join(relativePath, "_testData_createMap", "saves")); assert(maps2.includes("map.zip")); server.deleteInstance(); return true; }); }); });