mirror of
https://github.com/EDCD/coriolis.git
synced 2025-12-08 22:33:24 +00:00
64 lines
2.1 KiB
JavaScript
64 lines
2.1 KiB
JavaScript
import Ship from '../src/app/shipyard/Ship';
|
|
import { Ships } from 'coriolis-data/dist';
|
|
import * as Serializer from '../src/app/shipyard/Serializer';
|
|
import jsen from 'jsen';
|
|
|
|
describe("Serializer", function() {
|
|
const anacondaTestExport = require.requireActual('./fixtures/anaconda-test-detailed-export-v4');
|
|
const code = anacondaTestExport.references[0].code;
|
|
const anaconda = Ships.anaconda;
|
|
const validate = jsen(require('../src/schemas/ship-loadout/4'));
|
|
|
|
describe("To Detailed Build", function() {
|
|
let testBuild = new Ship('anaconda', anaconda.properties, anaconda.slots).buildFrom(code);
|
|
let exportData = Serializer.toDetailedBuild('Test My Ship', testBuild);
|
|
|
|
it("conforms to the v4 ship-loadout schema", function() {
|
|
expect(validate(exportData)).toBe(true);
|
|
});
|
|
|
|
it("contains the correct components and stats", function() {
|
|
expect(exportData.components).toEqual(anacondaTestExport.components);
|
|
expect(exportData.stats).toEqual(anacondaTestExport.stats);
|
|
expect(exportData.ship).toEqual(anacondaTestExport.ship);
|
|
expect(exportData.name).toEqual(anacondaTestExport.name);
|
|
});
|
|
|
|
});
|
|
|
|
describe("Export Detailed Builds", function() {
|
|
const expectedExport = require('./fixtures/valid-detailed-export');
|
|
const builds = require('./fixtures/expected-builds');
|
|
const exportData = Serializer.toDetailedExport(builds);
|
|
|
|
it("conforms to the v4 ship-loadout schema", function() {
|
|
expect(exportData instanceof Array).toBe(true);
|
|
|
|
for (let detailedBuild of exportData) {
|
|
expect(validate(detailedBuild)).toBe(true);
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
describe("From Detailed Build", function() {
|
|
|
|
it("builds the ship correctly", function() {
|
|
let testBuildA = new Ship('anaconda', anaconda.properties, anaconda.slots);
|
|
testBuildA.buildFrom(code);
|
|
let testBuildB = Serializer.fromDetailedBuild(anacondaTestExport);
|
|
|
|
for(var p in testBuildB) {
|
|
if (p == 'availCS') {
|
|
continue;
|
|
}
|
|
expect(testBuildB[p]).toEqual(testBuildA[p], p + ' does not match');
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
});
|