diff --git a/package.json b/package.json
index 69b0bb4..329ec2c 100644
--- a/package.json
+++ b/package.json
@@ -33,6 +33,7 @@
"dependencies": {
"@ernane/svelte-star-rating": "^1.1.2",
"@sveltejs/vite-plugin-svelte": "^2.0.2",
+ "@testing-library/svelte": "^3.2.2",
"@yanick/updeep-remeda": "^2.1.0",
"beercss": "^3.0.4",
"dexie": "^3.2.2",
diff --git a/src/lib/components/Battle.svelte b/src/lib/components/Battle.svelte
index fb7df61..0fc50a0 100644
--- a/src/lib/components/Battle.svelte
+++ b/src/lib/components/Battle.svelte
@@ -15,7 +15,11 @@
-
Chapter {chapter}, battle {chapterBattle} -- {status}
+
+ Chapter {chapter},
+ battle {chapterBattle}?
+ -- {status}
+
{#if status === 'ongoing'}
- wave
@@ -103,13 +107,14 @@
export let params;
- const { activeCampaign, event } = getContext('api');
+ const api = getContext('api');
+ export let activeCampaign = api?.activeCampaign;
+ export let event = api?.event;
- event.setActiveCampaign(params.campaignId);
+ event?.setActiveCampaign(params.campaignId);
$: battles = $activeCampaign?.battles;
$: battle = battles && battles[params.battleId - 1];
- $: console.log($activeCampaign);
$: scenario = battle?.scenario;
$: status = battle?.status;
$: wave = battle?.wave;
@@ -117,13 +122,14 @@
$: character = battle?.character;
$: city = battle?.city;
- $: console.log(battle);
-
let chapter = 1 + parseInt(params.battleId / 2);
- let chapterBattle = params.battleId % 2;
+ let chapterBattle =
+ params.battleId >= 7
+ ? params.battleId - 6
+ : 1 + ((params.battleId - 1) % 2);
const battleVerdict = (verdict) => () =>
- event.setBattleVerdict(params.battleId, verdict);
+ event?.setBattleVerdict(params.battleId, verdict);
// $: event.setBattleDifficulty(params.battleId, difficulty);
diff --git a/src/lib/components/Battle/battle.test.js b/src/lib/components/Battle/battle.test.js
new file mode 100644
index 0000000..cbf0d42
--- /dev/null
+++ b/src/lib/components/Battle/battle.test.js
@@ -0,0 +1,31 @@
+import { test, expect, afterEach } from 'vitest';
+import { render, cleanup } from '@testing-library/svelte';
+import Battle from '../Battle.svelte';
+import { readable } from 'svelte/store';
+
+const activeCampaign = readable({
+ battles: Array(12)
+ .fill(null)
+ .map((_, i) => ({
+ id: i + 1,
+ })),
+});
+
+afterEach(cleanup);
+
+test.each([
+ [2, 2],
+ [3, 1],
+ [7, 1],
+ [8, 2],
+ [9, 3],
+])('chapter battle (%i,%i))', (battleId, expected) => {
+ const { container } = render(Battle, {
+ params: { battleId },
+ activeCampaign,
+ });
+
+ expect(container.querySelector('.battleNbr').innerHTML).toMatch(
+ 'battle ' + expected,
+ );
+});
diff --git a/vite.config.js b/vite.config.js
index 5f67dfe..46968af 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -1,20 +1,20 @@
import { sveltekit } from '@sveltejs/kit/vite';
import { svelte } from '@sveltejs/vite-plugin-svelte';
-console.log(import.meta);
/** @type {import('vite').UserConfig} */
const config = {
- plugins: [svelte()],
- test: {
- include: ['src/**/*.{test,spec}.{js,ts}'],
- },
- resolve: {
- alias: {
- $lib:
- import.meta.url.replace('file://', '').replace(/[^/]+$/, '') +
- 'src/lib',
- },
- },
+ plugins: [svelte()],
+ test: {
+ include: ['src/**/*.{test,spec}.{js,ts}'],
+ environment: 'jsdom',
+ },
+ resolve: {
+ alias: {
+ $lib:
+ import.meta.url.replace('file://', '').replace(/[^/]+$/, '') +
+ 'src/lib',
+ },
+ },
};
export default config;