From e2170c9d2f395cf06186944353d207e41104e484 Mon Sep 17 00:00:00 2001 From: Colin McLeod Date: Wed, 24 Feb 2016 12:13:51 -0800 Subject: [PATCH] Update tests and correct beta version --- .../anaconda-test-detailed-export-v3.json | 1 - __tests__/test-import.js | 3 +- __tests__/test-persist.js | 115 ++++++++++++------ __tests__/test-ship.js | 12 +- package.json | 4 +- src/app/Coriolis.jsx | 1 + 6 files changed, 86 insertions(+), 50 deletions(-) diff --git a/__tests__/fixtures/anaconda-test-detailed-export-v3.json b/__tests__/fixtures/anaconda-test-detailed-export-v3.json index 58e63ac4..2617af65 100644 --- a/__tests__/fixtures/anaconda-test-detailed-export-v3.json +++ b/__tests__/fixtures/anaconda-test-detailed-export-v3.json @@ -263,7 +263,6 @@ "hullMass": 400, "masslock": 23, "pipSpeed": 0.14, - "shipCostMultiplier": 1, "moduleCostMultiplier": 1, "fuelCapacity": 32, "cargoCapacity": 128, diff --git a/__tests__/test-import.js b/__tests__/test-import.js index ecc40952..c83ffecf 100644 --- a/__tests__/test-import.js +++ b/__tests__/test-import.js @@ -79,7 +79,8 @@ describe('Import Modal', function() { expect(modal.state.errorMsg).toEqual(null); expect(modal.state.builds).toEqual(importData.builds); expect(modal.state.comparisons).toEqual(importData.comparisons); - expect(modal.state.discounts).toEqual(importData.discounts); + expect(modal.state.shipDiscount).toEqual(importData.discounts[0]); + expect(modal.state.moduleDiscount).toEqual(importData.discounts[1]); expect(modal.state.insurance).toBe(importData.insurance.toLowerCase()); clickProceed(); expect(modal.state.processed).toBe(true); diff --git a/__tests__/test-persist.js b/__tests__/test-persist.js index 0e9f98fa..5c5aeb4e 100644 --- a/__tests__/test-persist.js +++ b/__tests__/test-persist.js @@ -37,72 +37,107 @@ describe('Persist', function() { const Persist = require('../src/app/stores/Persist').Persist; - describe('Builds', function() { - it("loads from localStorage correctly", function() { - - }); - - it("can save a build", function() { - - }); - - it("can delete a build", function() { - - }); - - it("works without localStorage", function() { - - }); - }); - - describe('Comparisons', function() { - it("loads from localStorage correctly", function() { - - }); - - it("works without localStorage", function() { - - }); - }); - describe('Multi tab/window', function() { - it.only("syncs builds", function() { + it("syncs builds", function() { window.localStorage = localStorage; - + ls = {}; let p = new Persist(); - let newBuilds = {}; + let newBuilds = { + anaconda: { test: '1234' } + }; storageListener({ key: 'builds', newValue: JSON.stringify(newBuilds) }); + expect(p.getBuild('anaconda', 'test')).toBe('1234'); }); }); describe('General and Settings', function() { - it.only("has defaults", function() { + it("has defaults", function() { + window.localStorage = localStorage; + ls = {}; let p = new Persist(); expect(p.getLangCode()).toBe('en'); expect(p.showTooltips()).toBe(true); expect(p.getInsurance()).toBe('standard'); - expect(p.getShipDiscount()).toBe(1); - expect(p.getModuleDiscount()).toBe(1); + expect(p.getShipDiscount()).toBe(0); + expect(p.getModuleDiscount()).toBe(0); expect(p.getSizeRatio()).toBe(1); }); it("loads from localStorage correctly", function() { - expect(false).toBeTruthy('TODO: Implement'); + window.localStorage = localStorage; + let savedData = require('./fixtures/valid-backup'); + ls = {}; + ls.builds = JSON.stringify(savedData.builds); + ls.NG_TRANSLATE_LANG_KEY = 'de'; + ls.insurance = 'Standard'; + ls.shipDiscount = 0.25; + ls.moduleDiscount = 0.15; + let p = new Persist(); + + expect(p.getInsurance()).toBe('standard'); + expect(p.getShipDiscount()).toBe(0.25); + expect(p.getModuleDiscount()).toBe(0.15); + expect(p.getLangCode()).toEqual('de'); + expect(p.getBuilds('anaconda')).toEqual(savedData.builds.anaconda); + expect(p.getBuilds('python')).toEqual(savedData.builds.python); + expect(p.getBuildsNamesFor('imperial_clipper')).toEqual(['Cargo', 'Current', 'Dream', 'Multi-purpose']); + expect(p.getBuild('type_7_transport', 'Cargo')).toEqual('02A5D5A4D3D3D5C--------0505040403480101'); }); it("uses defaults from a corrupted localStorage", function() { - expect(false).toBeTruthy('TODO: Implement'); + window.localStorage = localStorage; + ls = {}; + ls.builds = "not valid json"; + ls.comparisons = "1, 3, 4"; + ls.insurance = 'this insurance does not exist'; + ls.shipDiscount = 'this is not a number'; + ls.moduleDiscount = 10; // Way to big + + let p = new Persist(); + expect(p.getLangCode()).toBe('en'); + expect(p.showTooltips()).toBe(true); + expect(p.getInsurance()).toBe('standard'); + expect(p.getShipDiscount()).toBe(0); + expect(p.getModuleDiscount()).toBe(0); + expect(p.getBuilds()).toEqual({}); + expect(p.getComparisons()).toEqual({}); }); it("works without localStorage", function() { + window.localStorage = null; + let p = new Persist(); + expect(p.getLangCode()).toBe('en'); + expect(p.showTooltips()).toBe(true); + expect(p.getInsurance()).toBe('standard'); + expect(p.getShipDiscount()).toBe(0); + expect(p.getModuleDiscount()).toBe(0); + expect(p.getSizeRatio()).toBe(1); + p.saveBuild('anaconda', 'test', '12345'); + expect(p.getBuild('anaconda', 'test')).toBe('12345'); + + p.deleteBuild('anaconda', 'test'); + expect(p.hasBuilds()).toBe(false); }); it("generates the backup", function() { - expect(false).toBeTruthy('TODO: Implement'); + window.localStorage = localStorage; + let savedData = require('./fixtures/valid-backup'); + ls = {}; + ls.builds = JSON.stringify(savedData.builds); + ls.insurance = 'Beta'; + ls.shipDiscount = 0.25; + ls.moduleDiscount = 0.15; + + let p = new Persist(); + let backup = p.getAll(); + + expect(backup.insurance).toBe('beta'); + expect(backup.shipDiscount).toBe(0.25); + expect(backup.moduleDiscount).toBe(0.15); + expect(backup.builds).toEqual(savedData.builds); + expect(backup.comparisons).toEqual({}); }); - }); - -}); +}) diff --git a/__tests__/test-ship.js b/__tests__/test-ship.js index de66a8c2..5b9c6a47 100644 --- a/__tests__/test-ship.js +++ b/__tests__/test-ship.js @@ -82,7 +82,7 @@ describe("Ship Factory", function() { var originalHullCost = testShip.hullCost; var originalTotalCost = testShip.totalCost; - var discount = 0.9; + var discount = 0.1; expect(testShip.m.discountedCost).toEqual(originalHullCost, 'Hull cost does not match'); @@ -90,17 +90,17 @@ describe("Ship Factory", function() { // Floating point errors cause miniscule decimal places which are handled in the app by rounding/formatting - expect(Math.floor(testShip.m.discountedCost)).toEqual(Math.floor(originalHullCost * discount), 'Discounted Hull cost does not match'); - expect(Math.floor(testShip.totalCost)).toEqual(Math.floor(originalTotalCost * discount), 'Discounted Total cost does not match'); + expect(Math.floor(testShip.m.discountedCost)).toEqual(Math.floor(originalHullCost * (1 - discount)), 'Discounted Hull cost does not match'); + expect(Math.floor(testShip.totalCost)).toEqual(Math.floor(originalTotalCost * (1 - discount)), 'Discounted Total cost does not match'); - testShip.applyDiscounts(1, 1); // No discount, 100% of cost + testShip.applyDiscounts(0, 0); // No discount, 100% of cost expect(testShip.m.discountedCost).toEqual(originalHullCost, 'Hull cost does not match'); expect(testShip.totalCost).toEqual(originalTotalCost, 'Total cost does not match'); - testShip.applyDiscounts(discount, 1); // Only discount hull + testShip.applyDiscounts(discount, 0); // Only discount hull - expect(Math.floor(testShip.m.discountedCost)).toEqual(Math.round(originalHullCost * discount), 'Discounted Hull cost does not match'); + expect(Math.floor(testShip.m.discountedCost)).toEqual(Math.round(originalHullCost * (1 - discount)), 'Discounted Hull cost does not match'); expect(testShip.totalCost).toEqual(originalTotalCost - originalHullCost + testShip.m.discountedCost, 'Total cost does not match'); }); diff --git a/package.json b/package.json index 6d2ad6ae..417b1ea7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "coriolis_shipyard", - "version": "2.0.1-Beta", + "version": "2.0.0-Beta-1", "repository": { "type": "git", "url": "https://github.com/cmmcleod/coriolis" @@ -11,7 +11,7 @@ "engine": "node >= 4.0.0", "license": "MIT", "scripts": { - "extract-translations": "grep -hroE \"translate\\('[^']+'\\)\" src/* | grep -oE \"'[^']+'\" | grep -oE \"[^']+\" | sort -u -f", + "extract-translations": "grep -hroE \"(translate\\('[^']+'\\))|(tip.bind\\(null, '[^']+')\" src/* | grep -oE \"'[^']+'\" | grep -oE \"[^']+\" | sort -u -f", "clean": "rimraf build", "start": "node devServer.js", "lint": "eslint --ext .js,.jsx src", diff --git a/src/app/Coriolis.jsx b/src/app/Coriolis.jsx index 39552804..a362ea95 100644 --- a/src/app/Coriolis.jsx +++ b/src/app/Coriolis.jsx @@ -280,6 +280,7 @@ export default class Coriolis extends React.Component { */ render() { let currentMenu = this.state.currentMenu; + return
{ this.state.error ? this.state.error : this.state.page ? React.createElement(this.state.page, { currentMenu }) : }