EDSM unit tests.
This commit is contained in:
parent
1d0f22d1f4
commit
edd9ef88a6
5 changed files with 191 additions and 103 deletions
7
.idea/dictionaries/marley.xml
Normal file
7
.idea/dictionaries/marley.xml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<component name="ProjectDictionaryState">
|
||||||
|
<dictionary name="marley">
|
||||||
|
<words>
|
||||||
|
<w>edsm</w>
|
||||||
|
</words>
|
||||||
|
</dictionary>
|
||||||
|
</component>
|
|
@ -1,6 +1,12 @@
|
||||||
<component name="InspectionProjectProfileManager">
|
<component name="InspectionProjectProfileManager">
|
||||||
<profile version="1.0">
|
<profile version="1.0">
|
||||||
<option name="myName" value="Project Default" />
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="ExceptionCaughtLocallyJS" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
<inspection_tool class="JSIgnoredPromiseFromCall" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
<inspection_tool class="JSIgnoredPromiseFromCall" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="SpellCheckingInspection" enabled="true" level="TYPO" enabled_by_default="true">
|
||||||
|
<option name="processCode" value="false" />
|
||||||
|
<option name="processLiterals" value="true" />
|
||||||
|
<option name="processComments" value="true" />
|
||||||
|
</inspection_tool>
|
||||||
</profile>
|
</profile>
|
||||||
</component>
|
</component>
|
|
@ -23,7 +23,10 @@ export class EDSM extends EventEmitter {
|
||||||
/* ---------------------------------------------------------------------------- #request ---- */
|
/* ---------------------------------------------------------------------------- #request ---- */
|
||||||
|
|
||||||
// Submit a request to EDSM and return the response as an object
|
// Submit a request to EDSM and return the response as an object
|
||||||
static async #request(url: string, options: {[x: string]: string}): Promise<object|undefined> {
|
static async #request(
|
||||||
|
url: string,
|
||||||
|
options: { [x: string]: string },
|
||||||
|
): Promise<object | undefined> {
|
||||||
let data: object | undefined = undefined;
|
let data: object | undefined = undefined;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -46,6 +49,8 @@ export class EDSM extends EventEmitter {
|
||||||
static async getSystemValue(system: System): Promise<systemEstimatedValue | undefined> {
|
static async getSystemValue(system: System): Promise<systemEstimatedValue | undefined> {
|
||||||
const url = 'https://www.edsm.net/api-system-v1/estimated-value';
|
const url = 'https://www.edsm.net/api-system-v1/estimated-value';
|
||||||
const response = await EDSM.#request(url, {systemName: system.name});
|
const response = await EDSM.#request(url, {systemName: system.name});
|
||||||
return (response as systemEstimatedValue);
|
return (
|
||||||
|
response as systemEstimatedValue
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -12,14 +12,12 @@ export class System {
|
||||||
charted: boolean;
|
charted: boolean;
|
||||||
bodies: Body[];
|
bodies: Body[];
|
||||||
|
|
||||||
// ESDM data
|
// EDSM data
|
||||||
estimatedValue?: number;
|
estimatedValue?: number;
|
||||||
estimatedValueMapped?: number;
|
estimatedValueMapped?: number;
|
||||||
valuableBodies?: Body[];
|
valuableBodies?: Body[];
|
||||||
|
|
||||||
constructor(line?: navRouteSystem | completeFsdJump | location) {
|
constructor(line?: navRouteSystem | completeFsdJump | location) {
|
||||||
// In future, this is where we preform EDSM lookup
|
|
||||||
|
|
||||||
if (!line) {
|
if (!line) {
|
||||||
this.name = 'Unknown';
|
this.name = 'Unknown';
|
||||||
} else {
|
} else {
|
||||||
|
|
72
test/EDSM.test.ts
Normal file
72
test/EDSM.test.ts
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
import {expect, jest} from '@jest/globals';
|
||||||
|
import {EDSM} from '../src/models/EDSM';
|
||||||
|
import {System} from '../src/models/System';
|
||||||
|
|
||||||
|
describe('EDSM', () => {
|
||||||
|
describe('connect()', () => {
|
||||||
|
it('should create new instance', () => {
|
||||||
|
expect(EDSM.connect()).toBeInstanceOf(EDSM);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should get previously created instance', () => {
|
||||||
|
const edsm = EDSM.connect();
|
||||||
|
expect(EDSM.connect()).toBeInstanceOf(EDSM);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('getSystemValue()', () => {
|
||||||
|
const mockFetch = (data?: {[i: string]: any}, ok: boolean = true) => {
|
||||||
|
global.fetch = jest.fn(() =>
|
||||||
|
Promise.resolve({
|
||||||
|
ok: ok,
|
||||||
|
json: () => Promise.resolve(data),
|
||||||
|
} as Response),
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
it('should get system info', async () => {
|
||||||
|
const system = new System({ "StarSystem":"LHS 3447", "SystemAddress":0, "StarPos":[0,0,0], "StarClass":"M" });
|
||||||
|
const data = {
|
||||||
|
"id": 13153,
|
||||||
|
"id64": 5306465653474,
|
||||||
|
"name": "LHS 3447",
|
||||||
|
"url": "https://www.edsm.net/en/system/bodies/id/13153/name/LHS+3447",
|
||||||
|
"estimatedValue": 353968,
|
||||||
|
"estimatedValueMapped": 1164029,
|
||||||
|
"valuableBodies": [
|
||||||
|
{
|
||||||
|
"bodyId": 3195879,
|
||||||
|
"bodyName": "LHS 3447 A 5",
|
||||||
|
"distance": 92282,
|
||||||
|
"valueMax": 879114
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
mockFetch(data);
|
||||||
|
|
||||||
|
const result = await EDSM.getSystemValue(system);
|
||||||
|
expect(result).toEqual(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not get system info if system name is invalid', async () => {
|
||||||
|
const system = new System();
|
||||||
|
const data = {};
|
||||||
|
mockFetch({});
|
||||||
|
|
||||||
|
const result = await EDSM.getSystemValue(system);
|
||||||
|
expect(result).toEqual(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return undefined if response is not ok', async () => {
|
||||||
|
const system = new System();
|
||||||
|
mockFetch({}, false);
|
||||||
|
|
||||||
|
const result = await EDSM.getSystemValue(system);
|
||||||
|
expect(result).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
jest.restoreAllMocks();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in a new issue