Browse Source

Fix tests, tsc, linting

pull/652/head
philon- 1 year ago
parent
commit
ec99c8d397
  1. 6
      src/core/stores/deviceStore.mock.ts
  2. 20
      src/core/stores/deviceStore.ts
  3. 2
      src/core/utils/deepCompareConfig.test.ts
  4. 4
      src/validation/config/security.test.ts

6
src/core/stores/deviceStore.mock.ts

@ -50,6 +50,12 @@ export const mockDeviceStore: Device = {
setModuleConfig: vi.fn(), setModuleConfig: vi.fn(),
setWorkingConfig: vi.fn(), setWorkingConfig: vi.fn(),
setWorkingModuleConfig: vi.fn(), setWorkingModuleConfig: vi.fn(),
getWorkingConfig: vi.fn(),
getWorkingModuleConfig: vi.fn(),
removeWorkingConfig: vi.fn(),
removeWorkingModuleConfig: vi.fn(),
getEffectiveConfig: vi.fn(),
getEffectiveModuleConfig: vi.fn(),
setHardware: vi.fn(), setHardware: vi.fn(),
setActiveNode: vi.fn(), setActiveNode: vi.fn(),
setPendingSettingsChanges: vi.fn(), setPendingSettingsChanges: vi.fn(),

20
src/core/stores/deviceStore.ts

@ -1,6 +1,6 @@
import { create, toBinary } from "@bufbuild/protobuf"; import { create, toBinary } from "@bufbuild/protobuf";
import { MeshDevice, Protobuf, Types } from "@meshtastic/core"; import { MeshDevice, Protobuf, Types } from "@meshtastic/core";
import { current, produce } from "immer"; import { produce } from "immer";
import { createContext, useContext } from "react"; import { createContext, useContext } from "react";
import { create as createStore } from "zustand"; import { create as createStore } from "zustand";
@ -69,7 +69,6 @@ export interface Device {
setModuleConfig: (config: Protobuf.ModuleConfig.ModuleConfig) => void; setModuleConfig: (config: Protobuf.ModuleConfig.ModuleConfig) => void;
setWorkingConfig: (config: Protobuf.Config.Config) => void; setWorkingConfig: (config: Protobuf.Config.Config) => void;
setWorkingModuleConfig: (config: Protobuf.ModuleConfig.ModuleConfig) => void; setWorkingModuleConfig: (config: Protobuf.ModuleConfig.ModuleConfig) => void;
getWorkingConfig: ( getWorkingConfig: (
payloadVariant: ValidConfigType, payloadVariant: ValidConfigType,
) => ) =>
@ -90,7 +89,6 @@ export interface Device {
getEffectiveModuleConfig<K extends ValidModuleConfigType>( getEffectiveModuleConfig<K extends ValidModuleConfigType>(
payloadVariant: K, payloadVariant: K,
): Protobuf.LocalOnly.LocalModuleConfig[K] | undefined; ): Protobuf.LocalOnly.LocalModuleConfig[K] | undefined;
setHardware: (hardware: Protobuf.Mesh.MyNodeInfo) => void; setHardware: (hardware: Protobuf.Mesh.MyNodeInfo) => void;
setActiveNode: (node: number) => void; setActiveNode: (node: number) => void;
setPendingSettingsChanges: (state: boolean) => void; setPendingSettingsChanges: (state: boolean) => void;
@ -194,6 +192,7 @@ export const useDeviceStore = createStore<PrivateDeviceState>((set, get) => ({
produce<PrivateDeviceState>((draft) => { produce<PrivateDeviceState>((draft) => {
const device = draft.devices.get(id); const device = draft.devices.get(id);
if (device) { if (device) {
console.debug("Setting config for device", id, config);
switch (config.payloadVariant.case) { switch (config.payloadVariant.case) {
case "device": { case "device": {
device.config.device = config.payloadVariant.value; device.config.device = config.payloadVariant.value;
@ -342,9 +341,16 @@ export const useDeviceStore = createStore<PrivateDeviceState>((set, get) => ({
const device = get().devices.get(id); const device = get().devices.get(id);
if (!device) return; if (!device) return;
return device.workingConfig.find( const workingConfig = device.workingConfig.find(
(c) => c.payloadVariant.case === payloadVariant, (c) => c.payloadVariant.case === payloadVariant,
)?.payloadVariant.value; );
if (
workingConfig?.payloadVariant.case === "deviceUi" ||
workingConfig?.payloadVariant.case === "sessionkey"
) return;
return workingConfig?.payloadVariant.value;
}, },
getWorkingModuleConfig: (payloadVariant: ValidModuleConfigType) => { getWorkingModuleConfig: (payloadVariant: ValidModuleConfigType) => {
const device = get().devices.get(id); const device = get().devices.get(id);
@ -357,7 +363,7 @@ export const useDeviceStore = createStore<PrivateDeviceState>((set, get) => ({
removeWorkingConfig: (payloadVariant?: ValidConfigType) => { removeWorkingConfig: (payloadVariant?: ValidConfigType) => {
set( set(
produce<DeviceState>((draft) => { produce<PrivateDeviceState>((draft) => {
const device = draft.devices.get(id); const device = draft.devices.get(id);
if (!device) return; if (!device) return;
@ -381,7 +387,7 @@ export const useDeviceStore = createStore<PrivateDeviceState>((set, get) => ({
payloadVariant?: ValidModuleConfigType, payloadVariant?: ValidModuleConfigType,
) => { ) => {
set( set(
produce<DeviceState>((draft) => { produce<PrivateDeviceState>((draft) => {
const device = draft.devices.get(id); const device = draft.devices.get(id);
if (!device) return; if (!device) return;

2
src/core/utils/deepCompareConfig.test.ts

@ -1,5 +1,5 @@
import { describe, expect, it } from "vitest"; import { describe, expect, it } from "vitest";
import { deepCompareConfig } from "./deepCompareConfig"; import { deepCompareConfig } from "./deepCompareConfig.ts";
describe("deepCompareConfig", () => { describe("deepCompareConfig", () => {
it("returns true for identical primitives", () => { it("returns true for identical primitives", () => {

4
src/validation/config/security.test.ts

@ -53,7 +53,7 @@ describe("RawSecuritySchema", () => {
if (!result.success) { if (!result.success) {
expect( expect(
result.error.issues.some((i) => result.error.issues.some((i) =>
i.message === "formValidation.adminKeyRequiredWhenManaged" i.message === "formValidation.required.managed"
), ),
).toBe(true); ).toBe(true);
} }
@ -103,7 +103,7 @@ describe("ParsedSecuritySchema", () => {
if (!result.success) { if (!result.success) {
expect( expect(
result.error.issues.some((i) => result.error.issues.some((i) =>
i.message === "formValidation.adminKeyRequiredWhenManaged" i.message === "formValidation.required.managed"
), ),
).toBe(true); ).toBe(true);
} }

Loading…
Cancel
Save