Initial commit
This commit is contained in:
@@ -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),
|
||||
}));
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user