mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-13 15:14:52 +09:00
Added tests for /api/inventory and /api/place
This commit is contained in:
1 parent
42e2816b56
commit
bfbe7e7d1c
1 file changed
+64
-23
+64
-23
@@ -7,35 +7,35 @@ const validateHTML = require('html5-validator');
|
||||
describe('Master server endpoint testing', function() {
|
||||
describe('#GET /api/getFactorioLocale', function() {
|
||||
it('should get the basegame factorio locale', function(done) {
|
||||
request(app).get('/api/getFactorioLocale')
|
||||
.end(function(err, res) {
|
||||
assert.equal(res.statusCode, 200);
|
||||
request(app).get('/api/getFactorioLocale').end(function(err, res) {
|
||||
assert.equal(res.statusCode, 200);
|
||||
|
||||
let object = res.body;
|
||||
|
||||
// test that it is actual factorio locale, copied from getFactorioLocale.spec.js
|
||||
assert.equal(typeof object, "object");
|
||||
assert.equal(object["entity-name"]["fish"], "Fish");
|
||||
assert.equal(object["entity-name"]["small-lamp"], "Lamp");
|
||||
Object.keys(object).forEach(key => {
|
||||
// first level of the nested object is always an object
|
||||
assert.equal(typeof object[key], "object");
|
||||
|
||||
let object = res.body;
|
||||
|
||||
// test that it is actual factorio locale, copied from getFactorioLocale.spec.js
|
||||
assert.equal(typeof object, "object");
|
||||
assert.equal(object["entity-name"]["fish"], "Fish");
|
||||
assert.equal(object["entity-name"]["small-lamp"], "Lamp");
|
||||
Object.keys(object).forEach(key => {
|
||||
// first level of the nested object is always an object
|
||||
assert.equal(typeof object[key], "object");
|
||||
|
||||
Object.keys(object[key]).forEach(key2 => {
|
||||
// second level of the nested object is always a string, nearly always truthy
|
||||
if(key2 != "so-long-and-thanks-for-all-the-fish"){
|
||||
assert.ok(object[key][key2]);
|
||||
assert.equal(typeof object[key][key2], "string");
|
||||
}
|
||||
});
|
||||
Object.keys(object[key]).forEach(key2 => {
|
||||
// second level of the nested object is always a string, nearly always truthy
|
||||
if(key2 != "so-long-and-thanks-for-all-the-fish"){
|
||||
assert.ok(object[key][key2]);
|
||||
assert.equal(typeof object[key][key2], "string");
|
||||
}
|
||||
});
|
||||
done();
|
||||
});
|
||||
});
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
// describe("#GET /api/")
|
||||
describe("#GET static website data", function() {
|
||||
it("sends some HTML when accessing /", function(done){
|
||||
this.timeout(6000);
|
||||
request(app).get("/").end(function(err,res){
|
||||
assert.equal(res.statusCode, 200);
|
||||
validateHTML(res.text).then(result => {
|
||||
@@ -45,6 +45,7 @@ describe('Master server endpoint testing', function() {
|
||||
});
|
||||
});
|
||||
it("sends some HTML when accessing /nodes",function(done){
|
||||
this.timeout(6000);
|
||||
request(app).get("/nodes").end(function(err,res){
|
||||
assert.equal(res.statusCode, 200);
|
||||
validateHTML(res.text).then(result => {
|
||||
@@ -54,6 +55,7 @@ describe('Master server endpoint testing', function() {
|
||||
});
|
||||
});
|
||||
it("sends some HTML when accessing /settings",function(done){
|
||||
this.timeout(6000);
|
||||
request(app).get("/settings").end(function(err,res){
|
||||
assert.equal(res.statusCode, 200);
|
||||
validateHTML(res.text).then(result => {
|
||||
@@ -63,6 +65,7 @@ describe('Master server endpoint testing', function() {
|
||||
});
|
||||
});
|
||||
it("sends some HTML when accessing /nodeDetails",function(done){
|
||||
this.timeout(6000);
|
||||
request(app).get("/nodeDetails").end(function(err,res){
|
||||
assert.equal(res.statusCode, 200);
|
||||
validateHTML(res.text).then(result => {
|
||||
@@ -72,4 +75,42 @@ describe('Master server endpoint testing', function() {
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
let persistentMaster = request(app);
|
||||
describe("#POST /api/place", function(){
|
||||
it("adds an itemStack to the masters inventory", function(done){
|
||||
persistentMaster.post("/api/place")
|
||||
.send({
|
||||
name:"steel-plate",
|
||||
count:20,
|
||||
instanceName:"unitTest"
|
||||
})
|
||||
.end(function(err,res){
|
||||
assert(!err)
|
||||
assert.equal(res.text, "success", "something went wrong with the request")
|
||||
done();
|
||||
})
|
||||
});
|
||||
});
|
||||
describe("#GET /api/inventory", function(){
|
||||
it("returns the masters current inventory", function(done){
|
||||
persistentMaster.get("/api/inventory").end(function(err,res){
|
||||
assert.equal(res.statusCode, 200);
|
||||
let inventory
|
||||
try {
|
||||
inventory = JSON.parse(res.text);
|
||||
} catch (e){
|
||||
assert(!e);
|
||||
}
|
||||
assert.equal(typeof inventory, "object", "Inventory should be an object");
|
||||
assert(inventory.length >= 1, "There should be at least 1 entry in the inventory");
|
||||
|
||||
let contains20SteelPlate = false;
|
||||
inventory.forEach(itemStack => {
|
||||
if(itemStack.name == "steel-plate" && itemStack.count >= 20) contains20SteelPlate = true;
|
||||
});
|
||||
assert(contains20SteelPlate, "Please ensure there are at least 20 steel plate in the inventory")
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user