Removes Old Jest Tests (!169)

These should not be used. Branch `3.8.0` has newer Vitest tests configured.

Co-authored-by: Refringe <brownelltyler@gmail.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/169
This commit is contained in:
Refringe 2023-11-16 22:12:51 +00:00
parent 4ac12ef70a
commit 083a2a798e
15 changed files with 1 additions and 1123 deletions

View File

@ -20,22 +20,6 @@
], ],
"cwd": "${workspaceFolder}", "cwd": "${workspaceFolder}",
"outputCapture": "std" "outputCapture": "std"
},
{
"name": "Run Jest UnitTests",
"type": "node",
"runtimeVersion": "18.15.0",
"request": "launch",
"program": "${workspaceFolder}/node_modules/.bin/jest",
"args": [
"--runInBand"
],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"disableOptimisticBPs": true,
"windows": {
"program": "${workspaceFolder}/node_modules/jest/bin/jest"
}
} }
] ]
} }

View File

@ -1,13 +0,0 @@
import { pathsToModuleNameMapper } from "ts-jest";
import type { JestConfigWithTsJest } from "ts-jest";
import { compilerOptions } from "./tsconfig.json";
const config: JestConfigWithTsJest = {
preset: "ts-jest",
testEnvironment: "node",
roots: ["./tests/"],
modulePaths: [compilerOptions.baseUrl],
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths),
};
export default config;

View File

@ -1,6 +1,6 @@
{ {
"name": "aki-server", "name": "aki-server",
"version": "3.7.1", "version": "3.7.3",
"author": "SPT-AKI Server", "author": "SPT-AKI Server",
"license": "NCSA", "license": "NCSA",
"main": "obj/bundle.js", "main": "obj/bundle.js",
@ -16,10 +16,6 @@
"lint:fix": "biome check --apply-unsafe --max-diagnostics=200 . && dprint fmt --incremental=false", "lint:fix": "biome check --apply-unsafe --max-diagnostics=200 . && dprint fmt --incremental=false",
"style": "dprint check --incremental=false", "style": "dprint check --incremental=false",
"style:fix": "dprint fmt --incremental=false", "style:fix": "dprint fmt --incremental=false",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"test:ui": "vitest --ui --coverage",
"build:release": "cross-env PKG_CACHE_PATH=\"./.pkg-cache\" gulp build:release", "build:release": "cross-env PKG_CACHE_PATH=\"./.pkg-cache\" gulp build:release",
"build:debug": "cross-env PKG_CACHE_PATH=\"./.pkg-cache\" gulp build:debug", "build:debug": "cross-env PKG_CACHE_PATH=\"./.pkg-cache\" gulp build:debug",
"build:bleeding": "cross-env PKG_CACHE_PATH=\"./.pkg-cache\" gulp build:bleeding", "build:bleeding": "cross-env PKG_CACHE_PATH=\"./.pkg-cache\" gulp build:bleeding",
@ -47,13 +43,10 @@
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "1.3.3", "@biomejs/biome": "1.3.3",
"@jest/globals": "29.7.0",
"@pnpm/exe": "8.9.0", "@pnpm/exe": "8.9.0",
"@swc/cli": "0.1.62", "@swc/cli": "0.1.62",
"@swc/core": "1.3.92", "@swc/core": "1.3.92",
"@swc/jest": "0.2.29",
"@types/i18n": "0.13.7", "@types/i18n": "0.13.7",
"@types/jest": "29.5.5",
"@types/node": "18.18.4", "@types/node": "18.18.4",
"@types/proper-lockfile": "4.1.2", "@types/proper-lockfile": "4.1.2",
"@types/semver": "7.5.3", "@types/semver": "7.5.3",
@ -66,12 +59,10 @@
"gulp": "4.0.2", "gulp": "4.0.2",
"gulp-execa": "5.0.1", "gulp-execa": "5.0.1",
"gulp-rename": "2.0.0", "gulp-rename": "2.0.0",
"jest": "29.7.0",
"madge": "6.1.0", "madge": "6.1.0",
"pkg": "5.8.1", "pkg": "5.8.1",
"pkg-fetch": "3.5.2", "pkg-fetch": "3.5.2",
"resedit": "2.0.0", "resedit": "2.0.0",
"ts-jest": "29.1.1",
"ts-node-dev": "2.0.0", "ts-node-dev": "2.0.0",
"tsconfig-paths": "4.2.0", "tsconfig-paths": "4.2.0",
"typedoc": "0.25.2", "typedoc": "0.25.2",

View File

@ -1,92 +0,0 @@
import "reflect-metadata";
import { beforeEach, describe, expect, it } from "@jest/globals";
import { BotDifficultyHelper } from "@spt-aki/helpers/BotDifficultyHelper";
import { BotHelper } from "@spt-aki/helpers/BotHelper";
import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { JsonUtil } from "@spt-aki/utils/JsonUtil";
import { RandomUtil } from "@spt-aki/utils/RandomUtil";
import { MockHelper } from "./common/MockHelper";
import { TestHelper } from "./common/TestHelper";
const mockHelper = new MockHelper();
let testHelper: TestHelper;
let logger: ILogger;
let jsonUtil: JsonUtil;
let randomUtil: RandomUtil;
let configServer: ConfigServer;
let localisationService: LocalisationService;
let databaseServer: DatabaseServer;
let botHelper: BotHelper;
describe("BotHelper", () =>
{
beforeAll(async () =>
{
testHelper = await TestHelper.fetchTestHelper();
logger = testHelper.getTestLogger();
jsonUtil = testHelper.getTestJsonUtil();
randomUtil = testHelper.getTestRandomUtil();
configServer = testHelper.getTestConfigServer();
localisationService = testHelper.getTestLocalisationService();
databaseServer = testHelper.getTestDatabaseServer();
botHelper = testHelper.getTestBotHelper();
});
let botDifficultyHelper: BotDifficultyHelper;
beforeEach(() =>
{
botDifficultyHelper = new BotDifficultyHelper(
logger,
jsonUtil,
databaseServer,
randomUtil,
localisationService,
botHelper,
configServer,
);
});
it("BotDifficultyHelper type check", () =>
{
expect(botDifficultyHelper).toBeInstanceOf(BotDifficultyHelper);
});
it("chooseRandomDifficulty()", () =>
{
expect(["easy", "normal", "hard", "impossible"]).toContain(botDifficultyHelper.chooseRandomDifficulty());
});
it("getPmcDifficultySettings() easy", () =>
{
expect(botDifficultyHelper.getPmcDifficultySettings("bear", "easy", "sptUsec", "sptBear")).not.toBeFalsy();
});
it("getPmcDifficultySettings() random", () =>
{
expect(botDifficultyHelper.getPmcDifficultySettings("usec", "random", "sptUsec", "sptBear")).not.toBeFalsy();
});
it("getPmcDifficultySettings() difficulty set to 'medium' in config", () =>
{
const configServerMock = mockHelper.getMockConfigServer();
const mockBotConfig = { kind: "aki-bot", pmc: { difficulty: "medium", enemyTypes: ["assault"] } };
configServerMock.setup((x) => x.getConfig(ConfigTypes.BOT)).returns(() => mockBotConfig);
const testOnlyHelper = new BotDifficultyHelper(
logger,
jsonUtil,
databaseServer,
randomUtil,
localisationService,
botHelper,
configServerMock.object,
);
expect(testOnlyHelper.getPmcDifficultySettings("usec", "medium", "sptUsec", "sptBear")).not.toBeFalsy();
});
});

View File

@ -1,66 +0,0 @@
import "reflect-metadata";
import { beforeEach, describe, expect, it } from "@jest/globals";
import { BotHelper } from "@spt-aki/helpers/BotHelper";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { JsonUtil } from "@spt-aki/utils/JsonUtil";
import { RandomUtil } from "@spt-aki/utils/RandomUtil";
import { TestHelper } from "./common/TestHelper";
let testHelper: TestHelper;
let logger: ILogger;
let jsonUtil: JsonUtil;
let randomUtil: RandomUtil;
let configServer: ConfigServer;
let localisationService: LocalisationService;
let databaseServer: DatabaseServer;
describe("BotHelper", () =>
{
beforeAll(async () =>
{
testHelper = await TestHelper.fetchTestHelper();
logger = testHelper.getTestLogger();
jsonUtil = testHelper.getTestJsonUtil();
randomUtil = testHelper.getTestRandomUtil();
configServer = testHelper.getTestConfigServer();
localisationService = testHelper.getTestLocalisationService();
databaseServer = testHelper.getTestDatabaseServer();
});
let helper: BotHelper;
beforeEach(() =>
{
helper = new BotHelper(logger, jsonUtil, databaseServer, randomUtil, localisationService, configServer);
});
it("BotHelper type check", () =>
{
expect(helper).toBeInstanceOf(BotHelper);
});
it("isBotPmc()", () =>
{
expect(helper.isBotPmc("usec")).toBe(true);
expect(helper.isBotPmc("bear")).toBe(true);
expect(helper.isBotPmc("faketype")).toBe(false);
});
it("isBotFollower()", () =>
{
expect(helper.isBotFollower("followerBully")).toBe(true);
expect(helper.isBotFollower("FoLlOwErBULlY")).toBe(true);
expect(helper.isBotFollower("followerSanitar")).toBe(true);
expect(helper.isBotFollower("botFollower")).toBe(false);
});
it("getBotTemplate()", () =>
{
expect(helper.getBotTemplate("assault")).not.toBeFalsy();
expect(helper.getBotTemplate("fakebottype")).toBeFalsy();
expect(helper.getBotTemplate("")).toBeFalsy();
});
});

View File

@ -1,54 +0,0 @@
import "reflect-metadata";
import { beforeEach, describe, expect, it } from "@jest/globals";
import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper";
describe("test text", () =>
{
let helper: PaymentHelper;
beforeEach(() =>
{
helper = new PaymentHelper();
});
it("PaymentHelper type check", () =>
{
expect(helper).toBeInstanceOf(PaymentHelper);
});
it("isMoneyTpl() USD", () =>
{
expect(helper.isMoneyTpl("5696686a4bdc2da3298b456a")).toBe(true);
});
it("isMoneyTpl() euro", () =>
{
expect(helper.isMoneyTpl("569668774bdc2da2298b4568")).toBe(true); // euro
});
it("isMoneyTpl() rouble", () =>
{
expect(helper.isMoneyTpl("5696686a4bdc2da3298b456a")).toBe(true); // rub
expect(helper.isMoneyTpl("")).toBe(false);
expect(helper.isMoneyTpl("faketpl")).toBe(false);
});
it("isMoneyTpl() empty tpl", () =>
{
expect(helper.isMoneyTpl("")).toBe(false);
});
it("isMoneyTpl() invalid tpl", () =>
{
expect(helper.isMoneyTpl("faketpl")).toBe(false);
});
it("getCurrency()", () =>
{
expect(helper.getCurrency("EUR")).toBe("569668774bdc2da2298b4568");
expect(helper.getCurrency("USD")).toBe("5696686a4bdc2da3298b456a");
expect(helper.getCurrency("RUB")).toBe("5449016a4bdc2d6f028b456f");
expect(helper.getCurrency("1234353434534")).toBe("");
expect(helper.getCurrency("")).toBe("");
});
});

View File

@ -1,204 +0,0 @@
import "reflect-metadata";
import { RepairHelper } from "@spt-aki/helpers/RepairHelper";
import { Item } from "@spt-aki/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt-aki/models/eft/common/tables/ITemplateItem";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { JsonUtil } from "@spt-aki/utils/JsonUtil";
import { RandomUtil } from "@spt-aki/utils/RandomUtil";
import { TestHelper } from "./common/TestHelper";
let testHelper: TestHelper;
let logger: ILogger;
let jsonUtil: JsonUtil;
let randomUtil: RandomUtil;
let configServer: ConfigServer;
let databaseServer: DatabaseServer;
let helper: RepairHelper;
describe("BotHelper", () =>
{
beforeAll(async () =>
{
testHelper = await TestHelper.fetchTestHelper();
logger = testHelper.getTestLogger();
jsonUtil = testHelper.getTestJsonUtil();
randomUtil = testHelper.getTestRandomUtil();
configServer = testHelper.getTestConfigServer();
databaseServer = testHelper.getTestDatabaseServer();
});
beforeEach(() =>
{
helper = new RepairHelper(logger, jsonUtil, randomUtil, databaseServer, configServer);
});
it("RepairHelper type check", () =>
{
expect(helper).toBeInstanceOf(RepairHelper);
});
it("updateItemDurability() repairkit with slick armor with max dura degradation", () =>
{
const slickTpl = "5e4abb5086f77406975c9342";
const itemToRepair: Item = {
_id: "12345",
_tpl: slickTpl,
upd: { Repairable: { Durability: 60, MaxDurability: 80 } },
};
const itemToRepairDetails = <ITemplateItem>databaseServer.getTables().templates?.items[slickTpl];
const isArmor = true;
const useRepairKit = true;
const useDegridation = true;
helper.updateItemDurability(itemToRepair, itemToRepairDetails, isArmor, 5, useRepairKit, 1, useDegridation);
expect(itemToRepair.upd?.Repairable?.Durability).toBeLessThan(80);
});
it("updateItemDurability() trader with slick armor with max dura degradation - partial repair", () =>
{
const slickTpl = "5e4abb5086f77406975c9342";
const itemToRepair: Item = {
_id: "12345",
_tpl: slickTpl,
upd: { Repairable: { Durability: 60, MaxDurability: 80 } },
};
const itemToRepairDetails = <ITemplateItem>databaseServer.getTables().templates?.items[slickTpl];
const isArmor = true;
const useRepairKit = false;
const useDegridation = true;
helper.updateItemDurability(itemToRepair, itemToRepairDetails, isArmor, 5, useRepairKit, 1.2, useDegridation);
expect(itemToRepair.upd?.Repairable?.Durability).toBeLessThan(80);
expect(itemToRepair.upd?.Repairable?.Durability).toBeLessThanOrEqual(
itemToRepair.upd?.Repairable?.MaxDurability,
);
});
it("updateItemDurability() trader with slick armor, no dura degradation", () =>
{
const slickTpl = "5e4abb5086f77406975c9342";
const itemToRepair: Item = {
_id: "12345",
_tpl: slickTpl,
upd: { Repairable: { Durability: 60, MaxDurability: 80 } },
};
const itemToRepairDetails = <ITemplateItem>databaseServer.getTables().templates?.items[slickTpl];
const isArmor = true;
const useRepairKit = false;
const useDegradation = false;
helper.updateItemDurability(itemToRepair, itemToRepairDetails, isArmor, 20, useRepairKit, 1.2, useDegradation);
expect(itemToRepair.upd?.Repairable?.Durability).toBe(80);
expect(itemToRepair.upd?.Repairable?.Durability).toBeLessThanOrEqual(
itemToRepair.upd?.Repairable?.MaxDurability,
);
});
it("updateItemDurability() repairkit with g36 with max dura degradation - Full repair", () =>
{
const itemCurrentDura = 68;
const itemCurrentMaxDura = 100;
const duraDifference = itemCurrentMaxDura - itemCurrentDura;
const g36Tpl = "623063e994fc3f7b302a9696";
const itemToRepair: Item = {
_id: "12345",
_tpl: g36Tpl,
upd: { Repairable: { Durability: itemCurrentDura, MaxDurability: itemCurrentMaxDura } },
};
const itemToRepairDetails = <ITemplateItem>databaseServer.getTables().templates?.items[g36Tpl];
const isArmor = false;
const useRepairKit = true;
const useDegradation = true;
helper.updateItemDurability(
itemToRepair,
itemToRepairDetails,
isArmor,
duraDifference,
useRepairKit,
1,
useDegradation,
);
expect(itemToRepair.upd?.Repairable?.Durability).toBeLessThan(100);
expect(itemToRepair.upd?.Repairable?.Durability).toBeLessThanOrEqual(
itemToRepair.upd?.Repairable?.MaxDurability,
);
});
it("updateItemDurability() trader with g36 with max dura degradation - Full repair", () =>
{
const itemCurrentDura = 68;
const itemCurrentMaxDura = 100;
const duraDifference = itemCurrentMaxDura - itemCurrentDura;
const g36Tpl = "623063e994fc3f7b302a9696";
const itemToRepair: Item = {
_id: "12345",
_tpl: g36Tpl,
upd: { Repairable: { Durability: itemCurrentDura, MaxDurability: itemCurrentMaxDura } },
};
const itemToRepairDetails = <ITemplateItem>databaseServer.getTables().templates?.items[g36Tpl];
const isArmor = false;
const useRepairKit = false;
const useDegradation = true;
helper.updateItemDurability(
itemToRepair,
itemToRepairDetails,
isArmor,
duraDifference,
useRepairKit,
1.2,
useDegradation,
);
expect(itemToRepair.upd?.Repairable?.Durability).toBeLessThan(100);
expect(itemToRepair.upd?.Repairable?.Durability).toBeLessThanOrEqual(
itemToRepair.upd?.Repairable?.MaxDurability,
);
});
it("updateItemDurability() faceshield broken use repairkit with max dura degradation", () =>
{
const twExfilBallisticFaceShieldTpl = "5e00cdd986f7747473332240";
const itemToRepair: Item = {
_id: "12345",
_tpl: twExfilBallisticFaceShieldTpl,
upd: { Repairable: { Durability: 30, MaxDurability: 45 }, FaceShield: { Hits: 2 } },
};
const itemToRepairDetails = <ITemplateItem>databaseServer.getTables().templates
?.items[twExfilBallisticFaceShieldTpl];
const isArmor = true;
const useRepairKit = true;
const useDegradation = true;
helper.updateItemDurability(itemToRepair, itemToRepairDetails, isArmor, 5, useRepairKit, 1, useDegradation);
expect(itemToRepair.upd?.FaceShield?.Hits).toBe(0);
expect(itemToRepair.upd?.Repairable?.Durability).toBeLessThan(45);
expect(itemToRepair.upd?.Repairable?.Durability).toBeLessThanOrEqual(
itemToRepair.upd?.Repairable?.MaxDurability,
);
});
it("isWeaponTemplate() g36 weapon", () =>
{
const result = helper.isWeaponTemplate("623063e994fc3f7b302a9696");
expect(result).toBe(true);
});
it("isWeaponTemplate() slick armor", () =>
{
const result = helper.isWeaponTemplate("5e4abb5086f77406975c9342");
expect(result).toBe(false);
});
});

View File

@ -1,56 +0,0 @@
import { QuestHelper } from "@spt-aki/helpers/QuestHelper";
import { TraderHelper } from "@spt-aki/helpers/TraderHelper";
import * as TypeMoq from "typemoq";
import { ImageRouter } from "@spt-aki/routers/ImageRouter";
import { ItemEventRouter } from "@spt-aki/routers/ItemEventRouter";
import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { PaymentService } from "@spt-aki/services/PaymentService";
import { VFS } from "@spt-aki/utils/VFS";
export class MockHelper
{
public getMockImageRouter(): TypeMoq.IMock<ImageRouter>
{
return TypeMoq.Mock.ofType(ImageRouter);
}
public getMockVFS(): TypeMoq.IMock<VFS>
{
// vfsMock.setup(x => x.getFiles(TypeMoq.It.isAnyString())).returns(() => []);
return TypeMoq.Mock.ofType(VFS);
}
public getMockConfigServer(): TypeMoq.IMock<ConfigServer>
{
return TypeMoq.Mock.ofType(TestConfigServer);
}
public getItemEventRouter(): TypeMoq.IMock<ItemEventRouter>
{
return TypeMoq.Mock.ofType(ItemEventRouter);
}
public getQuestHelper(): TypeMoq.IMock<QuestHelper>
{
return TypeMoq.Mock.ofType(QuestHelper);
}
public getTraderHelper(): TypeMoq.IMock<TraderHelper>
{
return TypeMoq.Mock.ofType(TraderHelper);
}
public getPaymentServiceMock(): TypeMoq.IMock<PaymentService>
{
return TypeMoq.Mock.ofType(PaymentService);
}
}
export class TestConfigServer extends ConfigServer
{
public override initialize(): void
{
return;
}
}

View File

@ -1,177 +0,0 @@
import { BotHelper } from "@spt-aki/helpers/BotHelper";
import { HandbookHelper } from "@spt-aki/helpers/HandbookHelper";
import { ItemHelper } from "@spt-aki/helpers/ItemHelper";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ItemBaseClassService } from "@spt-aki/services/ItemBaseClassService";
import { LocaleService } from "@spt-aki/services/LocaleService";
import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { AsyncQueue } from "@spt-aki/utils/AsyncQueue";
import { DatabaseImporter } from "@spt-aki/utils/DatabaseImporter";
import { EncodingUtil } from "@spt-aki/utils/EncodingUtil";
import { HashUtil } from "@spt-aki/utils/HashUtil";
import { ImporterUtil } from "@spt-aki/utils/ImporterUtil";
import { JsonUtil } from "@spt-aki/utils/JsonUtil";
import { MathUtil } from "@spt-aki/utils/MathUtil";
import { ObjectId } from "@spt-aki/utils/ObjectId";
import { RandomUtil } from "@spt-aki/utils/RandomUtil";
import { TimeUtil } from "@spt-aki/utils/TimeUtil";
import { UUidGenerator } from "@spt-aki/utils/UUidGenerator";
import { VFS } from "@spt-aki/utils/VFS";
import { MockHelper } from "./MockHelper";
import WinstonLogger from "./__mocks__/WinstonLogger";
export class TestHelper
{
logger: ILogger;
asyncQueue: AsyncQueue;
uuidGenerator: UUidGenerator;
timeUtil: TimeUtil;
vfs: VFS;
hashUtil: HashUtil;
jsonUtil: JsonUtil;
randomUtil: RandomUtil;
encodingUtil: EncodingUtil;
importerUtil: ImporterUtil;
configServer: ConfigServer;
objectId: ObjectId;
mathUtil: MathUtil;
databaseServer: DatabaseServer;
itemHelper: ItemHelper;
localeService: LocaleService;
localisationService: LocalisationService;
handbookHelper: HandbookHelper;
itemBaseClassService: ItemBaseClassService;
botHelper: BotHelper;
public static async fetchTestHelper()
{
const initTestHelper = new TestHelper();
const mockHelper = new MockHelper();
const dbImporter = new DatabaseImporter(
initTestHelper.logger,
initTestHelper.vfs,
initTestHelper.jsonUtil,
initTestHelper.localisationService,
initTestHelper.databaseServer,
mockHelper.getMockImageRouter().object,
initTestHelper.encodingUtil,
initTestHelper.hashUtil,
initTestHelper.importerUtil,
);
await dbImporter.onLoad();
return initTestHelper;
}
constructor()
{
this.logger = new WinstonLogger();
this.asyncQueue = new AsyncQueue();
this.uuidGenerator = new UUidGenerator();
this.timeUtil = new TimeUtil();
this.vfs = new VFS(this.asyncQueue, this.uuidGenerator);
this.hashUtil = new HashUtil(this.timeUtil);
this.jsonUtil = new JsonUtil(this.vfs, this.hashUtil, this.logger);
this.randomUtil = new RandomUtil(this.jsonUtil, this.logger);
this.configServer = new ConfigServer(this.logger, this.vfs, this.jsonUtil);
this.objectId = new ObjectId(this.timeUtil);
this.mathUtil = new MathUtil();
this.databaseServer = new DatabaseServer();
this.localeService = new LocaleService(this.logger, this.databaseServer, this.configServer);
this.localisationService = new LocalisationService(this.logger, this.localeService);
this.encodingUtil = new EncodingUtil();
this.importerUtil = new ImporterUtil(this.vfs, this.jsonUtil);
this.handbookHelper = new HandbookHelper(this.databaseServer);
this.itemBaseClassService = new ItemBaseClassService(
this.logger,
this.localisationService,
this.databaseServer,
);
this.itemHelper = new ItemHelper(
this.logger,
this.hashUtil,
this.jsonUtil,
this.randomUtil,
this.objectId,
this.mathUtil,
this.databaseServer,
this.handbookHelper,
this.itemBaseClassService,
this.localisationService,
this.localeService,
);
this.botHelper = new BotHelper(
this.logger,
this.jsonUtil,
this.databaseServer,
this.randomUtil,
this.localisationService,
this.configServer,
);
}
public getTestLogger(): ILogger
{
return this.logger;
}
public getTestUuidGenerator(): UUidGenerator
{
return this.uuidGenerator;
}
public getTestVFS(): VFS
{
return this.vfs;
}
public getTestHashUtil(): HashUtil
{
return new HashUtil(this.timeUtil);
}
public getTestJsonUtil(): JsonUtil
{
return this.jsonUtil;
}
public getTestRandomUtil(): RandomUtil
{
return this.randomUtil;
}
public getTestConfigServer(): ConfigServer
{
return this.configServer;
}
public getTestItemHelper(): ItemHelper
{
return this.itemHelper;
}
public getTestDatabaseServer(): DatabaseServer
{
return this.databaseServer;
}
public getTestLocalisationService(): LocalisationService
{
return this.localisationService;
}
public getTestBotHelper(): BotHelper
{
return this.botHelper;
}
public getTestMathUtil(): MathUtil
{
return this.mathUtil;
}
}

View File

@ -1,45 +0,0 @@
import { Daum } from "@spt-aki/models/eft/itemEvent/IItemEventRouterRequest";
import { LogBackgroundColor } from "@spt-aki/models/spt/logging/LogBackgroundColor";
import { LogTextColor } from "@spt-aki/models/spt/logging/LogTextColor";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
export default class WinstonLogger implements ILogger
{
writeToLogFile(data: string | Daum): void
{
console.log(`writeToLogFile ${data}`);
}
logWithColor(
data: string | Record<string, unknown>,
textColor: LogTextColor,
backgroundColor?: LogBackgroundColor | undefined,
): void
{
console.log(`logWithColor ${data}`);
}
error(data: string): void
{
console.log(`error ${data}`);
}
warning(data: string): void
{
console.log(`warning ${data}`);
}
success(data: string): void
{
console.log(`success ${data}`);
}
info(data: string): void
{
console.log(`info ${data}`);
}
debug(data: string | Record<string, unknown>, onlyShowInConsole?: boolean | undefined): void
{
console.log(`debug ${data}`);
}
log(msg: string): void
{
console.log(msg);
}
}

View File

@ -1,32 +0,0 @@
import "reflect-metadata";
import { beforeEach, describe, expect, it } from "@jest/globals";
import { HashUtil } from "@spt-aki/utils/HashUtil";
import { TestHelper } from "../common/TestHelper";
const testHelper = new TestHelper();
describe("test text", () =>
{
let hashUtil: HashUtil;
beforeEach(() =>
{
hashUtil = testHelper.getTestHashUtil();
});
it("HashUtil type check", () =>
{
expect(hashUtil).toBeInstanceOf(HashUtil);
});
it("generate()", () =>
{
expect(hashUtil.generate()).toHaveLength(24);
});
it("generateMd5ForData()", () =>
{
expect(hashUtil.generateMd5ForData("test")).toBe("098f6bcd4621d373cade4e832627b4f6");
expect(hashUtil.generateMd5ForData("longerString12345678910")).toBe("c3e76c3c118c14e357e61ae1dbad4cf7");
});
});

View File

@ -1,205 +0,0 @@
import "reflect-metadata";
import { beforeEach, describe, expect, it } from "@jest/globals";
import { ItemHelper } from "@spt-aki/helpers/ItemHelper";
import { Item } from "@spt-aki/models/eft/common/tables/IItem";
import { BaseClasses } from "@spt-aki/models/enums/BaseClasses";
import { TestHelper } from "../common/TestHelper";
let testHelper: TestHelper;
describe("test text", () =>
{
beforeAll(async () =>
{
testHelper = await TestHelper.fetchTestHelper();
});
let itemHelper: ItemHelper;
beforeEach(() =>
{
itemHelper = testHelper.getTestItemHelper();
});
it("ItemHelper type check", () =>
{
expect(itemHelper).toBeInstanceOf(ItemHelper);
});
it("isDogtag() usec", () =>
{
expect(itemHelper.isDogtag("59f32c3b86f77472a31742f0")).toBe(true);
});
it("isDogtag() bear", () =>
{
expect(itemHelper.isDogtag("59f32bb586f774757e1e8442")).toBe(true);
});
it("isValidItem() valid item screwdriver", () =>
{
expect(itemHelper.isValidItem("590c2d8786f774245b1f03f3")).toBe(true); // screwdriver
});
it("isValidItem() invalid item tool base item", () =>
{
expect(itemHelper.isValidItem("57864bb7245977548b3b66c2")).toBe(false); // tool base item
});
it("isValidItem() invalid item tpl", () =>
{
expect(itemHelper.isValidItem("fakeitem")).toBe(false);
});
it("isValidItem() valid item with base type in blacklist", () =>
{
expect(itemHelper.isValidItem("5b3f3af486f774679e752c1f", [BaseClasses.ARMBAND])).toBe(false);
});
it("getItemPrice() valid screwdriver item", () =>
{
expect(itemHelper.getItemPrice("590c2d8786f774245b1f03f3")).toBe(3500); // screwdriver
});
it("getItemPrice() invalid tpl forces return of 0 price", () =>
{
expect(itemHelper.getItemPrice("fakeitem")).toBe(0);
});
it("fixItemStackCount() item with no upd object", () =>
{
const itemWithNoUpd: Item = { _id: "test", _tpl: "123456789" };
const result = itemHelper.fixItemStackCount(itemWithNoUpd);
expect(result.upd?.StackObjectsCount).toBe(1);
});
it("fixItemStackCount() item with upd object no StackObjectsCount property", () =>
{
const itemWithUpdNoStack: Item = { _id: "test", _tpl: "123456789", upd: {} };
const result = itemHelper.fixItemStackCount(itemWithUpdNoStack);
expect(result.upd?.StackObjectsCount).toBe(1);
});
it("fixItemStackCount() item with upd object and custom stack count", () =>
{
const itemWithUpdAndStack: Item = { _id: "test", _tpl: "123456789", upd: { StackObjectsCount: 2 } };
const result = itemHelper.fixItemStackCount(itemWithUpdAndStack);
expect(result.upd?.StackObjectsCount).toBe(2);
});
it("getItemStackSize() stack size of 4", () =>
{
const itemWithStackSizeOf4: Item = { _id: "", _tpl: "", upd: { StackObjectsCount: 4 } };
const result = itemHelper.getItemStackSize(itemWithStackSizeOf4);
expect(result).toBe(4);
});
it("getItemStackSize() upd object no stack property", () =>
{
const itemWithUpdNoStack: Item = { _id: "", _tpl: "", upd: {} };
const result = itemHelper.getItemStackSize(itemWithUpdNoStack);
expect(result).toBe(1);
});
it("getItemStackSize() no upd object", () =>
{
const itemWithNoUpdObject: Item = { _id: "", _tpl: "" };
const result = itemHelper.getItemStackSize(itemWithNoUpdObject);
expect(result).toBe(1);
});
it("getItemQualityModifier() no upd object", () =>
{
const itemWithNoUpdObject: Item = { _id: "", _tpl: "" };
const result = itemHelper.getItemQualityModifier(itemWithNoUpdObject);
expect(result).toBe(1);
});
it("getItemQualityModifier() grizzly medkit with full hp", () =>
{
const medkitItem: Item = { _id: "", _tpl: "590c657e86f77412b013051d", upd: { MedKit: { HpResource: 1800 } } };
const result = itemHelper.getItemQualityModifier(medkitItem);
expect(result).toBe(1);
});
it("getItemQualityModifier() grizzly medkit with 0 hp", () =>
{
const medkitItem: Item = { _id: "", _tpl: "590c657e86f77412b013051d", upd: { MedKit: { HpResource: 0 } } };
const result = itemHelper.getItemQualityModifier(medkitItem);
expect(result).toBe(0.01);
});
it("getItemQualityModifier() repairable slick with full hp", () =>
{
const medkitItem: Item = {
_id: "",
_tpl: "5e4abb5086f77406975c9342",
upd: { Repairable: { Durability: 80, MaxDurability: 80 } },
};
const result = itemHelper.getItemQualityModifier(medkitItem);
expect(result).toBe(1);
});
it("getItemQualityModifier() repairable slick with 0 hp", () =>
{
const medkitItem: Item = {
_id: "",
_tpl: "5e4abb5086f77406975c9342",
upd: { Repairable: { Durability: 0, MaxDurability: 80 } },
};
const result = itemHelper.getItemQualityModifier(medkitItem);
expect(result).toBe(0.01);
});
it("getRepairableItemQualityValue() repairable MDR weapon with max durability", () =>
{
const mdrItem: Item = {
_id: "",
_tpl: "5c488a752e221602b412af63",
upd: { Repairable: { Durability: 100, MaxDurability: 100 } },
};
const result = itemHelper.getItemQualityModifier(mdrItem);
expect(result).toBe(1);
});
it("hasBuyRestrictions() item with restrictions, not reached", () =>
{
const item: Item = { _id: "", _tpl: "", upd: { BuyRestrictionCurrent: 0, BuyRestrictionMax: 5 } };
const result = itemHelper.hasBuyRestrictions(item);
expect(result).toBe(true);
});
it("hasBuyRestrictions() item no restrictions defined", () =>
{
const item: Item = { _id: "", _tpl: "", upd: {} };
const result = itemHelper.hasBuyRestrictions(item);
expect(result).toBe(false);
});
it("doesItemOrParentsIdMatch() item doesnt exist", () =>
{
const result = itemHelper.doesItemOrParentsIdMatch("fakeTpl", []);
expect(result).toBe(false);
});
it("isQuestItem() item is quest item", () =>
{
const result = itemHelper.isQuestItem("5ae9a3f586f7740aab00e4e6");
expect(result).toBe(true);
});
it("isQuestItem() item is not quest item", () =>
{
const result = itemHelper.isQuestItem("590c392f86f77444754deb29");
expect(result).toBe(false);
});
it("isQuestItem() invalid item tpl", () =>
{
const result = itemHelper.isQuestItem("faketpl");
expect(result).toBe(false);
});
});

View File

@ -1,51 +0,0 @@
import "reflect-metadata";
import { beforeEach, describe, expect, it } from "@jest/globals";
import { RandomUtil } from "@spt-aki/utils/RandomUtil";
import { TestHelper } from "../common/TestHelper";
const testHelper = new TestHelper();
const logger = testHelper.getTestLogger();
const jsonUtil = testHelper.getTestJsonUtil();
describe("test text", () =>
{
let randomUtil: RandomUtil;
beforeEach(() =>
{
randomUtil = new RandomUtil(jsonUtil, logger);
});
it("RandomUtil type check", () =>
{
expect(randomUtil).toBeInstanceOf(RandomUtil);
});
it("getInt()", () =>
{
expect(randomUtil.getInt(1, 1)).toBe(1);
expect(randomUtil.getInt(100, 100)).toBe(100);
expect([256, 257, 258, 259, 260, 261]).toContain(randomUtil.getInt(256, 261));
});
it("getIntEx()", () =>
{
expect(randomUtil.getIntEx(1)).toBe(1);
expect([1, 2, 3]).toContain(randomUtil.getIntEx(5));
expect([1, 2, 3, 4, 5, 6, 7, 8]).toContain(randomUtil.getIntEx(10));
});
it("getFloat()", () =>
{
const zeroToOneFloat = randomUtil.getFloat(0, 1);
expect(zeroToOneFloat).toBeGreaterThanOrEqual(0);
expect(zeroToOneFloat).toBeLessThan(1);
});
it("getBool()", () =>
{
expect([true, false]).toContain(randomUtil.getBool());
});
});

View File

@ -1,74 +0,0 @@
import "reflect-metadata";
import { beforeEach, describe, expect, it } from "@jest/globals";
import { TimeUtil } from "@spt-aki/utils/TimeUtil";
describe("test text", () =>
{
let timeUtil: TimeUtil;
beforeEach(() =>
{
timeUtil = new TimeUtil();
});
it("BotHelper type check", () =>
{
expect(timeUtil).toBeInstanceOf(TimeUtil);
});
it("formatTime()", () =>
{
expect(timeUtil.formatTime(new Date(2020, 1, 1, 15, 24, 0))).toBe("15-24-00");
});
it("formatDate()", () =>
{
expect(timeUtil.formatDate(new Date(2020, 4, 13))).toBe("2020-05-13");
});
it("getDate()", () =>
{
const currentDate = timeUtil.formatDate(new Date());
expect(timeUtil.getDate()).toBe(currentDate);
});
it("getTime()", () =>
{
const currentTime = timeUtil.formatTime(new Date());
expect(timeUtil.getTime()).toBe(currentTime);
});
it("getHoursAsSeconds() one hour", () =>
{
expect(timeUtil.getHoursAsSeconds(1)).toBe(3600);
});
it("getHoursAsSeconds() three hours", () =>
{
expect(timeUtil.getHoursAsSeconds(3)).toBe(10800);
});
it("getTimestamp()", () =>
{
const currentTimestampSecondsFloored = Math.floor(new Date().getTime() / 1000);
expect(timeUtil.getTimestamp()).toBe(currentTimestampSecondsFloored);
});
it("getTimeMailFormat()", () =>
{
const currentTime = new Date();
const currentTimeMinutes = (currentTime.getMinutes()).toString().padStart(2, "0");
const currentTimeHours = (currentTime.getHours()).toString().padStart(2, "0");
expect(timeUtil.getTimeMailFormat()).toBe(`${currentTimeHours}:${currentTimeMinutes}`);
});
it("getDateMailFormat()", () =>
{
const currentTime = new Date();
const currentDay = (currentTime.getDate()).toString().padStart(2, "0");
const currentMonth = (currentTime.getMonth() + 1).toString().padStart(2, "0");
const currentYear = currentTime.getFullYear();
expect(timeUtil.getDateMailFormat()).toBe(`${currentDay}.${currentMonth}.${currentYear}`);
});
});

View File

@ -1,28 +0,0 @@
import "reflect-metadata";
import { beforeEach, describe, expect, it } from "@jest/globals";
import { UUidGenerator } from "@spt-aki/utils/UUidGenerator";
import { TestHelper } from "../common/TestHelper";
const testHelper = new TestHelper();
describe("test text", () =>
{
let uuidGenerator: UUidGenerator;
beforeEach(() =>
{
uuidGenerator = testHelper.getTestUuidGenerator();
});
it("UUidGenerator type check", () =>
{
expect(uuidGenerator).toBeInstanceOf(UUidGenerator);
});
it("generate()", () =>
{
expect(uuidGenerator.generate()).toHaveLength(36);
expect(uuidGenerator.generate()).toContain("-");
expect(uuidGenerator.generate()).toContain("4");
});
});