diff --git a/package.json b/package.json
index 710e89f..bfa5b6b 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,8 @@
"@sveltejs/adapter-static": "^1.0.0-next.28",
"@sveltejs/kit": "^1.0.0-next.288",
"@sveltejs/vite-plugin-svelte": "^1.0.0-next.38",
+ "@testing-library/svelte": "^3.1.1",
+ "@testing-library/user-event": "^13.5.0",
"eslint": "^8.10.0",
"eslint-config-prettier": "^8.4.0",
"eslint-plugin-svelte3": "^3.4.1",
@@ -25,7 +27,9 @@
"prettier-plugin-svelte": "^2.6.0",
"standard-version": "^9.3.2",
"storybook-builder-vite": "0.1.21",
- "svelte": "^3.46.4"
+ "svelte": "^3.46.4",
+ "vitest": "^0.9.3",
+ "vitest-svelte-kit": "^0.0.6"
},
"dependencies": {
"@storybook/addon-essentials": "^6.4.19",
diff --git a/src/lib/components/App.svelte b/src/lib/components/App.svelte
index 2dd8b48..162c76b 100644
--- a/src/lib/components/App.svelte
+++ b/src/lib/components/App.svelte
@@ -1,54 +1,51 @@
-
+
+
+ (activeTab = detail)} />
-
-
diff --git a/src/lib/components/Header.svelte b/src/lib/components/Header.svelte
index 26ecf9b..c0c9657 100644
--- a/src/lib/components/Header.svelte
+++ b/src/lib/components/Header.svelte
@@ -1,76 +1,94 @@
-
-
- editor
- json view
- print view
-
+
-
+
diff --git a/src/lib/components/Header.test.js b/src/lib/components/Header.test.js
new file mode 100644
index 0000000..1270067
--- /dev/null
+++ b/src/lib/components/Header.test.js
@@ -0,0 +1,10 @@
+import { test, expect } from "vitest";
+import { render } from "@testing-library/svelte";
+
+import App from "./Header.svelte";
+
+test("reset ship link is present", () => {
+ const { queryByText } = render(App);
+
+ expect(queryByText("reset ship")).toBeTruthy();
+});
diff --git a/src/lib/shipDux/index.js b/src/lib/shipDux/index.js
index bae5914..16f884c 100644
--- a/src/lib/shipDux/index.js
+++ b/src/lib/shipDux/index.js
@@ -25,6 +25,7 @@ const dux = new Updux({
setShipReqs: null,
setUITransform: null,
resetLayout: null,
+ resetShip: null,
},
});
@@ -37,6 +38,8 @@ function resetUITransform(thing) {
);
}
+dux.setMutation("resetShip", () => () => dux.initial);
+
dux.setMutation("resetLayout", () => resetUITransform);
dux.setMutation("setShipMass", (mass) => u({ reqs: { mass } }));
diff --git a/src/lib/shipDux/propulsion/drive.js b/src/lib/shipDux/propulsion/drive.js
index f165e7d..c6fbb48 100644
--- a/src/lib/shipDux/propulsion/drive.js
+++ b/src/lib/shipDux/propulsion/drive.js
@@ -7,7 +7,7 @@ import reqs from "../reqs.js";
const dux = new Updux({
subduxes: { reqs },
initial: {
- rating: 1,
+ rating: 0,
advanced: false,
},
actions: {
@@ -20,7 +20,7 @@ dux.setMutation("setDrive", (changes) => u(changes));
dux.setMutation("setDriveReqs", (reqs) => u({ reqs }));
// needs to be at the top level
-export const calculateDriveReqs = store =>
+export const calculateDriveReqs = (store) =>
createSelector(
[
(ship) => ship.reqs.mass,
@@ -29,7 +29,7 @@ export const calculateDriveReqs = store =>
],
(ship_mass, rating, advanced) =>
store.dispatch.setDriveReqs(calcDriveReqs(ship_mass, rating, advanced))
- );
+ );
export function calcDriveReqs(shipMass, rating, advanced = false) {
const mass = Math.ceil(rating * 0.05 * shipMass);
diff --git a/vitest.config.js b/vitest.config.js
new file mode 100644
index 0000000..78214f1
--- /dev/null
+++ b/vitest.config.js
@@ -0,0 +1,9 @@
+import { extractFromSvelteConfig } from "vitest-svelte-kit";
+
+export default extractFromSvelteConfig().then((config) => ({
+ ...config,
+ test: {
+ globals: true,
+ environment: "jsdom",
+ },
+ }));