Skip to content

Commit

Permalink
fix random character
Browse files Browse the repository at this point in the history
  • Loading branch information
neolao committed Mar 7, 2020
1 parent 26284dd commit 6a16807
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 9 deletions.
5 changes: 5 additions & 0 deletions __mocks__/electron.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = {
remote: {
require: jest.fn(),
}
};
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "mugen-quick-versus-launcher",
"author": "neolao",
"license": "MIT",
"version": "0.24.0",
"version": "0.24.1",
"description": "Mugen launcher for Quick Versus",
"keywords": [
"mugen",
Expand Down
56 changes: 56 additions & 0 deletions src/character/__tests__/useCharacterDefinition.hook.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import { remote } from "electron";
import useCharacterDefinition from "../useCharacterDefinition.hook";
import useEnvironment from "../../configuration/useEnvironment.hook";

jest.mock("../../configuration/useEnvironment.hook");

describe("useCharacterDefinition()", () => {
it("should return null if the provided character is null", () => {
expect(useCharacterDefinition(null)).toBeNull();
});

it("should return null if the provided character is a random character", () => {
const character = {
random: true
};
expect(useCharacterDefinition(character)).toBeNull();
});

it("should return null if the provided character does not have definition", () => {
const character = {};
expect(useCharacterDefinition(character)).toBeNull();
});

it("should return null if the definition file does not exists", () => {
useEnvironment.mockReturnValue({
currentDirectory: ""
});
remote.require.mockReturnValue({
resolve: jest.fn(),
existsSync: jest.fn().mockReturnValue(false)
});

const character = {
definition: "noFound.def"
};
expect(useCharacterDefinition(character)).toBeNull();
});

it("should return the definition", () => {
useEnvironment.mockReturnValue({
currentDirectory: ""
});
remote.require.mockReturnValue({
resolve: jest.fn(),
existsSync: jest.fn().mockReturnValue(true),
readFileSync: jest.fn().mockReturnValue(`foo = bar`)
});

const character = {
definition: "definition.def"
};
expect(useCharacterDefinition(character)).toEqual({
foo: "bar"
});
});
});
13 changes: 6 additions & 7 deletions src/character/useCharacterDefinition.hook.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,32 @@ import ini from "ini";
import { remote } from "electron";
import useEnvironment from "../configuration/useEnvironment.hook";

const fs = remote.require("fs");
const path = remote.require("path");

const cache = new WeakMap();

export default function useCharacterDefinition(character) {
const fs = remote.require("fs");
const path = remote.require("path");
const environment = useEnvironment();

if (cache.has(character)) {
return cache.get(character);
}

if (!character) {
return {};
return null;
}

if (character.random) {
return {};
return null;
}

if (!character.definition) {
return {};
return null;
}

const definitionPath = path.resolve(environment.currentDirectory, "chars", character.definition);
if (!fs.existsSync(definitionPath)) {
return {};
return null;
}

const definition = ini.parse(fs.readFileSync(definitionPath, "utf-8"));
Expand Down

0 comments on commit 6a16807

Please sign in to comment.