--- /dev/null
+import {
+ CONFIG,
+ configureDungeons,
+ getDungeonBoss,
+ getDungeonRemainingItems,
+ makeEmptyState,
+} from 'helpers/tracker';
+
+describe('default dungeon configuration', () => {
+ const dungeons = configureDungeons(CONFIG);
+ const state = makeEmptyState();
+
+ test('HC', () => {
+ const dungeon = dungeons.find(d => d.id === 'hc');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
+ });
+
+ test('CT', () => {
+ const dungeon = dungeons.find(d => d.id === 'ct');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('aga');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(0);
+ });
+
+ test('GT', () => {
+ const dungeon = dungeons.find(d => d.id === 'gt');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('aga');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(20);
+ });
+
+ test('EP', () => {
+ const dungeon = dungeons.find(d => d.id === 'ep');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('armos');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(3);
+ });
+
+ test('DP', () => {
+ const dungeon = dungeons.find(d => d.id === 'dp');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('lanmolas');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
+ });
+
+ test('TH', () => {
+ const dungeon = dungeons.find(d => d.id === 'th');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('moldorm');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
+ });
+
+ test('PD', () => {
+ const dungeon = dungeons.find(d => d.id === 'pd');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('helma');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(5);
+ });
+
+ test('SP', () => {
+ const dungeon = dungeons.find(d => d.id === 'sp');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('arrghus');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
+ });
+
+ test('SW', () => {
+ const dungeon = dungeons.find(d => d.id === 'sw');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('mothula');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
+ });
+
+ test('TT', () => {
+ const dungeon = dungeons.find(d => d.id === 'tt');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('blind');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(4);
+ });
+
+ test('IP', () => {
+ const dungeon = dungeons.find(d => d.id === 'ip');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('kholdstare');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(3);
+ });
+
+ test('MM', () => {
+ const dungeon = dungeons.find(d => d.id === 'mm');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('vitreous');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
+ });
+
+ test('TR', () => {
+ const dungeon = dungeons.find(d => d.id === 'tr');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('trinexx');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(5);
+ });
+});
+
+describe('keysanity dungeon configuration', () => {
+ const config = {
+ ...CONFIG,
+ wildMap: true,
+ wildCompass: true,
+ wildSmall: true,
+ wildBig: true,
+ };
+ const dungeons = configureDungeons(config);
+ const state = makeEmptyState();
+
+ test('HC', () => {
+ const dungeon = dungeons.find(d => d.id === 'hc');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
+ });
+
+ test('CT', () => {
+ const dungeon = dungeons.find(d => d.id === 'ct');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('aga');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
+ });
+
+ test('GT', () => {
+ const dungeon = dungeons.find(d => d.id === 'gt');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('aga');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(27);
+ });
+
+ test('EP', () => {
+ const dungeon = dungeons.find(d => d.id === 'ep');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('armos');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
+ });
+
+ test('DP', () => {
+ const dungeon = dungeons.find(d => d.id === 'dp');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('lanmolas');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
+ });
+
+ test('TH', () => {
+ const dungeon = dungeons.find(d => d.id === 'th');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('moldorm');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
+ });
+
+ test('PD', () => {
+ const dungeon = dungeons.find(d => d.id === 'pd');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('helma');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(14);
+ });
+
+ test('SP', () => {
+ const dungeon = dungeons.find(d => d.id === 'sp');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('arrghus');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(10);
+ });
+
+ test('SW', () => {
+ const dungeon = dungeons.find(d => d.id === 'sw');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('mothula');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
+ });
+
+ test('TT', () => {
+ const dungeon = dungeons.find(d => d.id === 'tt');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('blind');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
+ });
+
+ test('IP', () => {
+ const dungeon = dungeons.find(d => d.id === 'ip');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('kholdstare');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
+ });
+
+ test('MM', () => {
+ const dungeon = dungeons.find(d => d.id === 'mm');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('vitreous');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
+ });
+
+ test('TR', () => {
+ const dungeon = dungeons.find(d => d.id === 'tr');
+ expect(dungeon).not.toBeNull();
+ expect(getDungeonBoss(state, dungeon)).toBe('trinexx');
+ expect(getDungeonRemainingItems(state, dungeon)).toBe(12);
+ });
+});