From 14866d48b74f2c58095e20185d512566c546c673 Mon Sep 17 00:00:00 2001 From: willyb321 Date: Sun, 17 Jun 2018 08:42:50 +1000 Subject: [PATCH] clean up data spec --- spec/data-spec.js | 418 +++++++++++++++++++++++----------------------- 1 file changed, 208 insertions(+), 210 deletions(-) diff --git a/spec/data-spec.js b/spec/data-spec.js index 7eaa3b2..ab8cea3 100644 --- a/spec/data-spec.js +++ b/spec/data-spec.js @@ -1,232 +1,230 @@ -var Modules = require('../modules'); -var Ships = require('../ships'); -var Modifications = require('../modifications'); +const Modules = require('../modules'); +const Ships = require('../ships'); +const Modifications = require('../modifications'); -describe('JSON Data', function() { +describe('JSON Data', () => { + const shipProperties = [ + 'name', + 'manufacturer', + 'class', + 'hullCost', + 'speed', + 'boost', + 'boostEnergy', + 'baseShieldStrength', + 'baseArmour', + 'hardness', + 'hullMass', + 'masslock', + 'pipSpeed', + 'pitch', + 'roll', + 'yaw', + 'crew' + ]; - var shipProperties = [ - 'name', - 'manufacturer', - 'class', - 'hullCost', - 'speed', - 'boost', - 'boostEnergy', - 'baseShieldStrength', - 'baseArmour', - 'hardness', - 'hullMass', - 'masslock', - 'pipSpeed', - 'pitch', - 'roll', - 'yaw', - 'crew' - ]; + const edIDs = {}; + const eddbIDs = {}; - var edIDs = {}; - var eddbIDs = {}; + it('has an up-to-date distribution', () => { + const dist = require('../dist'); + expect(dist.Ships).toEqual(Ships, 'Distribution ships does not match. Did you run `npm start`?'); + expect(dist.Modules).toEqual(Modules, 'Distribution modules does not match. Did you run `npm start`?'); + }); - it('has an up-to-date distribution', function() { - var dist = require('../dist/index.js'); - expect(dist.Ships).toEqual(Ships, 'Distribution ships does not match. Did you run `npm start`?'); - expect(dist.Modules).toEqual(Modules, 'Distribution modules does not match. Did you run `npm start`?'); - }); - - it('has valid standard modules', function() { - var ids = {}; - for (var s in Modules.standard) { - var group = Modules.standard[s]; - for (var i = 0; i < group.length; i++) { - var id = group[i].id; - expect(ids[id]).toBeFalsy('ID already exists: ' + id); - expect(group[i].edID > 0).toBeTruthy('Standard module ' + id + ' is missing E:D ID'); - expect(group[i].eddbID > 0).toBeTruthy('Standard module ' + id + ' is missing EDDB ID'); - if (s != 'ft' && s != 'pas' ) { - expect(group[i].integrity).toBeDefined('Standard module ' + id + ' is missing integrity'); - } - expect(group[i].grp).toBeDefined(`No group defined, Type: ${s}, ID: ${id}, Index: ${i}`); - expect(eddbIDs[group[i].eddbID]).toBeFalsy(`EDDB ID [${group[i].eddbID}] already exists for ID: ${id}, Index: ${i}`); - expect(edIDs[group[i].edID]).toBeFalsy(`E:D ID [${group[i].edID}] already exists for ID: ${id}, Index: ${i}`); - if (group[i].eddbID) { - eddbIDs[group[i].eddbID] = true; - } - if (group[i].edID) { - edIDs[group[i].edID] = true; - } - ids[id] = true; - } - } - }); - - it('has valid hardpoints', function() { - var ids = {}; - - for (var g in Modules.hardpoints) { - var group = Modules.hardpoints[g]; - for (var i = 0; i < group.length; i++) { - var id = group[i].id; - expect(ids[id]).toBeFalsy('ID already exists: ' + id); - expect(group[i].grp).toBeDefined('Hardpoint has no group defined, ID:' + id); - expect(group[i].mass).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing mass`); - expect(group[i].integrity).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing integrity`); - expect(group[i].eddbID > 0).toBeTruthy(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing EDDB ID`); - expect(group[i].edID > 0).toBeTruthy(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing E:D ID`); + it('has valid standard modules', () => { + const ids = {}; + for (const s in Modules.standard) { + const group = Modules.standard[s]; + for (let i = 0; i < group.length; i++) { + const id = group[i].id; + expect(ids[id]).toBeFalsy('ID already exists: ' + id); + expect(group[i].edID > 0).toBeTruthy('Standard module ' + id + ' is missing E:D ID'); + expect(group[i].eddbID > 0).toBeTruthy('Standard module ' + id + ' is missing EDDB ID'); + if (s != 'ft' && s != 'pas') { + expect(group[i].integrity).toBeDefined('Standard module ' + id + ' is missing integrity'); + } + expect(group[i].grp).toBeDefined(`No group defined, Type: ${s}, ID: ${id}, Index: ${i}`); expect(eddbIDs[group[i].eddbID]).toBeFalsy(`EDDB ID [${group[i].eddbID}] already exists: ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''}`); expect(edIDs[group[i].edID]).toBeFalsy(`E:D ID [${group[i].edID}] already exists: ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''}`); - if (group[i].eddbID) { - eddbIDs[group[i].eddbID] = true; - } - if (group[i].edID) { - edIDs[group[i].edID] = true; - } - if (group[i].damage) { - expect(group[i].damage).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing damage`); - expect(group[i].damagedist).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing damage distribution`); - if (group[i].grp != 'po') { - expect(group[i].thermload).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing thermload`); - expect(group[i].breachmin).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing breachmin`); - expect(group[i].breachmax).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing breachmax`); - expect(group[i].breachdmg).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing breachdmg`); - expect(group[i].piercing).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing piercing`); - expect(group[i].distdraw).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing distdraw`); - } - } - if ((group[i].ammo || group[i].reload || group[i].clip) && g != 'hs' && g != 'ec') { - expect(group[i].ammo).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing ammo`); - expect(group[i].clip).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing clip`); - expect(group[i].reload).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing reload`); - } - ids[id] = true; - } - } - }); + if (group[i].eddbID) { + eddbIDs[group[i].eddbID] = true; + } + if (group[i].edID) { + edIDs[group[i].edID] = true; + } + ids[id] = true; + } + } + }); - it('has valid internal modules', function() { - var ids = {}; + it('has valid hardpoints', () => { + const ids = {}; - for (var g in Modules.internal) { - var group = Modules.internal[g]; - for (var i = 0; i < group.length; i++) { - var id = group[i].id; - expect(group[i].grp).toBeDefined(`No group defined, ID: ${id}`); - expect(ids[id]).toBeFalsy('ID already exists: ' + id); - expect(group[i].eddbID > 0).toBeTruthy(`${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing EDDB ID`); - expect(group[i].edID > 0).toBeTruthy(`${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing E:D ID`); - if (group[i].grp != 'ft') { // Standard and Internal Fuel tanks have the same IDs - expect(eddbIDs[group[i].eddbID]).toBeFalsy(`EDDB ID [${group[i].eddbID}] already exists: ${id}`); - expect(edIDs[group[i].edID]).toBeFalsy(`E:D ID [${group[i].edID}] already exists: ${id}`); - } - if (group[i].eddbID) { - eddbIDs[group[i].eddbID] = true; - } - if (group[i].edID) { - edIDs[group[i].edID] = true; - } - ids[id] = true; - } - } - }); + for (const g in Modules.hardpoints) { + const group = Modules.hardpoints[g]; + for (let i = 0; i < group.length; i++) { + const id = group[i].id; + expect(ids[id]).toBeFalsy('ID already exists: ' + id); + expect(group[i].grp).toBeDefined('Hardpoint has no group defined, ID:' + id); + expect(group[i].mass).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing mass`); + expect(group[i].integrity).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing integrity`); + expect(group[i].eddbID > 0).toBeTruthy(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing EDDB ID`); + expect(group[i].edID > 0).toBeTruthy(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing E:D ID`); + expect(eddbIDs[group[i].eddbID]).toBeFalsy(`EDDB ID [${group[i].eddbID}] already exists: ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''}`); + expect(edIDs[group[i].edID]).toBeFalsy(`E:D ID [${group[i].edID}] already exists: ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''}`); + if (group[i].eddbID) { + eddbIDs[group[i].eddbID] = true; + } + if (group[i].edID) { + edIDs[group[i].edID] = true; + } + if (group[i].damage) { + expect(group[i].damage).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing damage`); + expect(group[i].damagedist).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing damage distribution`); + if (group[i].grp != 'po') { + expect(group[i].thermload).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing thermload`); + expect(group[i].breachmin).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing breachmin`); + expect(group[i].breachmax).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing breachmax`); + expect(group[i].breachdmg).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing breachdmg`); + expect(group[i].piercing).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing piercing`); + expect(group[i].distdraw).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing distdraw`); + } + } + if ((group[i].ammo || group[i].reload || group[i].clip) && g != 'hs' && g != 'ec') { + expect(group[i].ammo).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing ammo`); + expect(group[i].clip).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing clip`); + expect(group[i].reload).toBeDefined(`Hardpoint ${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing reload`); + } + ids[id] = true; + } + } + }); - it('has data for every ship', function() { - var bulkheadIds = {}; + it('has valid internal modules', () => { + const ids = {}; - for (var s in Ships) { - for (var p = 0; p < shipProperties.length; p++) { - expect(Ships[s].properties[shipProperties[p]]).toBeDefined(shipProperties[p] + ' is missing for ' + s); - } - expect(Ships[s].eddbID > 0).toBeTruthy(s + ' is missing EDDB ID'); - expect(Ships[s].edID > 0).toBeTruthy(s + ' is missing E:D ID'); - expect(edIDs[Ships[s].edID]).toBeFalsy(`${s} E:D ID [${Ships[s].edID}] already exists`); - expect(Ships[s].slots.standard.length).toEqual(7, s + ' is missing standard slots'); - expect(Ships[s].defaults.standard.length).toEqual(7, s + ' is missing standard defaults'); - expect(Ships[s].slots.hardpoints.length).toEqual(Ships[s].defaults.hardpoints.length, s + ' hardpoint slots and defaults dont match'); - expect(Ships[s].slots.internal.length).toEqual(Ships[s].defaults.internal.length, s + ' internal slots and defaults dont match'); - expect(Ships[s].retailCost).toBeGreaterThan(Ships[s].properties.hullCost, s + ' has invalid retail cost'); - expect(Ships[s].bulkheads).toBeDefined(s + ' is missing bulkheads'); - expect(Ships[s].bulkheads.length).toEqual(5, s + ' is missing bulkheads'); - if (Ships[s].edID) { - edIDs[Ships[s].edID] = true; - } + for (const g in Modules.internal) { + const group = Modules.internal[g]; + for (let i = 0; i < group.length; i++) { + const id = group[i].id; + expect(group[i].grp).toBeDefined(`No group defined, ID: ${id}`); + expect(ids[id]).toBeFalsy('ID already exists: ' + id); + expect(group[i].eddbID > 0).toBeTruthy(`${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing EDDB ID`); + expect(group[i].edID > 0).toBeTruthy(`${group[i].grp}:${id} ${group[i].name ? group[i].name : ''} is missing E:D ID`); + if (group[i].grp != 'ft') { // Standard and Internal Fuel tanks have the same IDs + expect(eddbIDs[group[i].eddbID]).toBeFalsy(`EDDB ID [${group[i].eddbID}] already exists: ${id}`); + expect(edIDs[group[i].edID]).toBeFalsy(`E:D ID [${group[i].edID}] already exists: ${id}`); + } + if (group[i].eddbID) { + eddbIDs[group[i].eddbID] = true; + } + if (group[i].edID) { + edIDs[group[i].edID] = true; + } + ids[id] = true; + } + } + }); - for (var i = 0; i < Ships[s].bulkheads.length; i++) { - var b = Ships[s].bulkheads[i]; - expect(b.id).toBeDefined(`${s} bulkhead [${i}] is missing an ID`); - expect(bulkheadIds[b.id]).toBeFalsy(`${s} bulkhead [${i} - ${b.id}] ID already exists`); - expect(b.eddbID > 0).toBeTruthy(`${s} bulkhead [${i} - ${b.id}] is missing EDDB ID`); - expect(eddbIDs[b.eddbID]).toBeFalsy(`EDDB ID [${b.eddbID}] already exists: ${s} bulkhead [${i} - ${b.id}]`); - expect(b.edID > 0).toBeTruthy(`${s} bulkhead [${i} - ${b.id}] is missing E:D ID`); - expect(edIDs[b.edID]).toBeFalsy(`E:D ID [${b.edID}] already exists: ${s} bulkhead [${i} - ${b.id}]`); - if (b.eddbID) { - eddbIDs[b.eddbID] = true; - } - if (b.edID) { - edIDs[b.edID] = true; - } - bulkheadIds[b.id] = true; - } - } - }); + it('has data for every ship', () => { + const bulkheadIds = {}; - it('has valid blueprints', function() { - var ids = {}; - var names = {}; + for (const s in Ships) { + for (let p = 0; p < shipProperties.length; p++) { + expect(Ships[s].properties[shipProperties[p]]).toBeDefined(shipProperties[p] + ' is missing for ' + s); + } + expect(Ships[s].eddbID > 0).toBeTruthy(s + ' is missing EDDB ID'); + expect(Ships[s].edID > 0).toBeTruthy(s + ' is missing E:D ID'); + expect(edIDs[Ships[s].edID]).toBeFalsy(`${s} E:D ID [${Ships[s].edID}] already exists`); + expect(Ships[s].slots.standard.length).toEqual(7, s + ' is missing standard slots'); + expect(Ships[s].defaults.standard.length).toEqual(7, s + ' is missing standard defaults'); + expect(Ships[s].slots.hardpoints.length).toEqual(Ships[s].defaults.hardpoints.length, s + ' hardpoint slots and defaults dont match'); + expect(Ships[s].slots.internal.length).toEqual(Ships[s].defaults.internal.length, s + ' internal slots and defaults dont match'); + expect(Ships[s].retailCost).toBeGreaterThan(Ships[s].properties.hullCost, s + ' has invalid retail cost'); + expect(Ships[s].bulkheads).toBeDefined(s + ' is missing bulkheads'); + expect(Ships[s].bulkheads.length).toEqual(5, s + ' is missing bulkheads'); + if (Ships[s].edID) { + edIDs[Ships[s].edID] = true; + } - for (var blueprintname in Modifications.blueprints) { - const blueprint = Modifications.blueprints[blueprintname]; - expect(names[blueprintname]).toBeFalsy('Name already exists: ' + blueprintname); - names[blueprintname] = true; - expect(ids[blueprint.id]).toBeFalsy('ID already exists: ' + blueprint.id); - ids[blueprint.id] = true; - expect(blueprint.name).toBeDefined('Blueprint has no name, ID:' + blueprint.id); - expect(blueprint.grades).toBeDefined('Blueprint has no grades, ID:' + blueprint.id); + for (let i = 0; i < Ships[s].bulkheads.length; i++) { + const b = Ships[s].bulkheads[i]; + expect(b.id).toBeDefined(`${s} bulkhead [${i}] is missing an ID`); + expect(bulkheadIds[b.id]).toBeFalsy(`${s} bulkhead [${i} - ${b.id}] ID already exists`); + expect(b.eddbID > 0).toBeTruthy(`${s} bulkhead [${i} - ${b.id}] is missing EDDB ID`); + expect(eddbIDs[b.eddbID]).toBeFalsy(`EDDB ID [${b.eddbID}] already exists: ${s} bulkhead [${i} - ${b.id}]`); + expect(b.edID > 0).toBeTruthy(`${s} bulkhead [${i} - ${b.id}] is missing E:D ID`); + expect(edIDs[b.edID]).toBeFalsy(`E:D ID [${b.edID}] already exists: ${s} bulkhead [${i} - ${b.id}]`); + if (b.eddbID) { + eddbIDs[b.eddbID] = true; + } + if (b.edID) { + edIDs[b.edID] = true; + } + bulkheadIds[b.id] = true; + } + } + }); - grades = {} - for (var grade in blueprint.grades) { - expect(grades[grade]).toBeFalsy('Grade already exists: ' + grade + ' for ' + blueprintname); - grades[grade] = true; + it('has valid blueprints', () => { + const ids = {}; + const names = {}; - const blueprintgrade = blueprint.grades[grade]; - expect(blueprintgrade.components).toBeDefined('Blueprint grade ' + grade + ' has no components for ' + blueprintname); - expect(blueprintgrade.features).toBeDefined('Blueprint grade ' + grade + ' has no features for ' + blueprintname); - } - } - }); + for (const blueprintname in Modifications.blueprints) { + const blueprint = Modifications.blueprints[blueprintname]; + expect(names[blueprintname]).toBeFalsy('Name already exists: ' + blueprintname); + names[blueprintname] = true; + expect(ids[blueprint.id]).toBeFalsy('ID already exists: ' + blueprint.id); + ids[blueprint.id] = true; + expect(blueprint.name).toBeDefined('Blueprint has no name, ID:' + blueprint.id); + expect(blueprint.grades).toBeDefined('Blueprint has no grades, ID:' + blueprint.id); - it('has valid modifications', function() { - var ids = {}; + grades = {}; + for (const grade in blueprint.grades) { + expect(grades[grade]).toBeFalsy('Grade already exists: ' + grade + ' for ' + blueprintname); + grades[grade] = true; - for (var k in Modifications.modifications) { - const modification = Modifications.modifications[k]; - expect(ids[modification.id]).toBeFalsy('ID already exists: ' + modification.id); - expect(modification.name).toBeDefined('Modification has no name, ID:' + modification.id); - expect(modification.type).toBeDefined('Modification has no type, ID:' + modification.id); - expect(modification.method).toBeDefined('Modification has no method, ID:' + modification.id); - ids[modification.id] = true; - } - }); + const blueprintgrade = blueprint.grades[grade]; + expect(blueprintgrade.components).toBeDefined('Blueprint grade ' + grade + ' has no components for ' + blueprintname); + expect(blueprintgrade.features).toBeDefined('Blueprint grade ' + grade + ' has no features for ' + blueprintname); + } + } + }); - it('has valid module modifications', function() { - for (var m in Modifications.modules) { - const module = Modifications.modules[m]; - for (var bp in module.blueprints) { - expect(Modifications.blueprints[bp]).toBeDefined('Missing ' + bp + ' for ' + m); - for (var grade in module.blueprints[bp].grades) { - expect(Modifications.blueprints[bp].grades[grade]).toBeDefined('Missing ' + bp + ' grade ' + grade + ' for ' + m); - } - } - } - }); + it('has valid modifications', () => { + const ids = {}; - it('has valid specials', function() { - var ids = {}; + for (const k in Modifications.modifications) { + const modification = Modifications.modifications[k]; + expect(ids[modification.id]).toBeFalsy('ID already exists: ' + modification.id); + expect(modification.name).toBeDefined('Modification has no name, ID:' + modification.id); + expect(modification.type).toBeDefined('Modification has no type, ID:' + modification.id); + expect(modification.method).toBeDefined('Modification has no method, ID:' + modification.id); + ids[modification.id] = true; + } + }); - for (var k in Modifications.specials) { - const special = Modifications.specials[k]; - expect(ids[special.id]).toBeFalsy('ID already exists: ' + special.id); - expect(special.name).toBeDefined('Special has no name, ID:' + special.id); - ids[special.id] = true; - } - }); + it('has valid module modifications', () => { + for (const m in Modifications.modules) { + const module = Modifications.modules[m]; + for (const bp in module.blueprints) { + expect(Modifications.blueprints[bp]).toBeDefined('Missing ' + bp + ' for ' + m); + for (const grade in module.blueprints[bp].grades) { + expect(Modifications.blueprints[bp].grades[grade]).toBeDefined('Missing ' + bp + ' grade ' + grade + ' for ' + m); + } + } + } + }); + it('has valid specials', () => { + const ids = {}; + + for (const k in Modifications.specials) { + const special = Modifications.specials[k]; + expect(ids[special.id]).toBeFalsy('ID already exists: ' + special.id); + expect(special.name).toBeDefined('Special has no name, ID:' + special.id); + ids[special.id] = true; + } + }); });