Initial commit

This commit is contained in:
Octoturge
2026-06-09 22:06:56 +02:00
commit fb42c6e8cc
121 changed files with 14976 additions and 0 deletions
+88
View File
@@ -0,0 +1,88 @@
import { describe, it, expect, vi } from 'vitest';
import { migration_1_2_0 } from '../../src/migrations/1.2.0';
describe('migration 1.2.0', () => {
it('sets zealRegenBonus flag on character actors that lack it', async () => {
const setFlag = vi.fn(async () => undefined);
const character = {
type: 'character',
items: [],
effects: [],
getFlag: () => undefined,
setFlag,
update: vi.fn(async () => undefined),
};
(globalThis as any).game = {
...(globalThis as any).game,
user: { isGM: true },
actors: { contents: [character] },
items: { contents: [] },
};
await migration_1_2_0.run();
expect(setFlag).toHaveBeenCalledWith('hbm-rpg-v3', 'zealRegenBonus', 0);
});
it('attaches a zeal-regen ActiveEffect to a +1 Zapał talent', async () => {
const createEmbeddedDocuments = vi.fn(async () => undefined);
const talent = {
type: 'talent',
system: { description: 'Na początku tury otrzymujesz +1 Zapał.' },
effects: [],
createEmbeddedDocuments,
};
(globalThis as any).game = {
...(globalThis as any).game,
user: { isGM: true },
actors: { contents: [] },
items: { contents: [talent] },
};
await migration_1_2_0.run();
expect(createEmbeddedDocuments).toHaveBeenCalledTimes(1);
const [type, [doc]] = createEmbeddedDocuments.mock.calls[0];
expect(type).toBe('ActiveEffect');
expect(doc.transfer).toBe(true);
expect(doc.changes[0].key).toBe('flags.hbm-rpg-v3.zealRegenBonus');
expect(doc.changes[0].value).toBe('1');
});
it('does not attach AE if talent already has one targeting the flag', async () => {
const createEmbeddedDocuments = vi.fn(async () => undefined);
const talent = {
type: 'talent',
system: { description: 'regeneracja Zapału' },
effects: [{ changes: [{ key: 'flags.hbm-rpg-v3.zealRegenBonus' }] }],
createEmbeddedDocuments,
};
(globalThis as any).game = {
...(globalThis as any).game,
user: { isGM: true },
actors: { contents: [] },
items: { contents: [talent] },
};
await migration_1_2_0.run();
expect(createEmbeddedDocuments).not.toHaveBeenCalled();
});
it('backfills NPC mana/zeal/blood attributes when missing', async () => {
const update = vi.fn(async () => undefined);
const npc = {
type: 'npc',
items: [],
effects: [],
system: { attributes: {} },
update,
};
(globalThis as any).game = {
...(globalThis as any).game,
user: { isGM: true },
actors: { contents: [npc] },
items: { contents: [] },
};
await migration_1_2_0.run();
expect(update).toHaveBeenCalledWith(expect.objectContaining({
'system.attributes.mana': expect.any(Object),
'system.attributes.zeal': expect.any(Object),
'system.attributes.blood': expect.any(Object),
}));
});
});